ECS 总数
{{ summary.total_ecs || 0 }}
运行中
{{ summary.running || 0 }}
已停止
{{ summary.stopped || 0 }}
闲置实例
{{ summary.idle_count || 0 }}
线上业务7日均值判定
ECS 30天到期
{{ summary.expiring_soon || 0 }}
需关注续费
SSL 7天到期
{{ summary.ssl_expiring_7d || 0 }}
紧急 · {{ summary.ssl_expiring_30d || 0 }} 个 30 天内
域名 7天到期
{{ summary.domain_expiring_7d || 0 }}
续费域名
📈 30 日趋势(每天凌晨 5 点自动快照)
💰 浪费 / 风险 分析(点击查看明细)
闲置 ECS
{{ summary.waste.idle_ecs }}
CPU<5% 持续7天
未绑定 EIP
{{ summary.waste.idle_eip }}
每月烧 ¥{{ (summary.waste.idle_eip||0) * 50 }}
未覆盖快照
{{ summary.waste.uncovered_disk }}
业务连续性风险
公开读 OSS
{{ summary.waste.public_oss }}
数据泄露风险
高风险 AK
{{ summary.waste.risky_ak }}
>90 天未轮转
已过期 SSL
{{ summary.waste.expired_ssl }}
立刻处理
🚨 高危:未开自动续费 + 30 天内到期(不续费会自动释放!)
⏰ 近 30 天到期资源(共 {{ summary.expiring.length }} 项 · 按紧急程度排序)
按地域分布(点击行查看该地域 ECS)
最近 10 条操作审计事件(点击查看完整审计)
{{ aisearchLog.error }}
{{ aisearchLog.data.note }}
🛡 安全特征命中
📊 Top IP 访问频率
🚨 疑似扫描(访问最多不同接口)
📋 Top 接口路径
🧭 Top User-Agent + 方法
正在扫描 {{ slbIdle.data ? slbIdle.data.total_slbs : '所有' }} 个 SLB 的监听器和后端服务器组...
每个 SLB 平均 1-3 个 API 调用,全部扫完约 30-90 秒
每个 SLB 平均 1-3 个 API 调用,全部扫完约 30-90 秒
总 SLB 数
{{ slbIdle.data.total_slbs }}
闲置数
{{ slbIdle.data.idle_count }}
{{ ((slbIdle.data.idle_count/slbIdle.data.total_slbs)*100).toFixed(0) }}% 占比
月浪费估算
¥{{ Number(slbIdle.data.monthly_waste).toLocaleString() }}
年化 ¥{{ Number(slbIdle.data.yearly_waste).toLocaleString() }}
可安全释放
{{ slbIdle.data.by_safety.safe || 0 }}
集群已删的残留
需业务确认
{{ slbIdle.data.by_safety.review || 0 }}
用户自建
类别分布
闲置 SLB 列表(按月费降序)
{{ row.lb_id }}
{{ row.lb_name }}
VSG {{ row.vsg_count }} 个 · 后端 {{ row.vsg_backends }}
⚠ 扫描失败 ({{ slbIdle.data.errors.length }})
{{ slbIdle.data.errors.join('\n') }}
💡 月费按性能保障型公开价估算(s1.small ¥670/月起)。"可释放"判定基于名字模式(ServiceMesh* / MseGatewaySlb-* / ManagedK8SSlb* / k8s/* 都是 K8s 自动建的)
CDN({{ idleCdn.cdnList.length }} 个 offline)
DCDN({{ idleCdn.dcdnList.length }} 个 offline)
{{ row.name }}
{{ row.cluster_id }}
闲置 {{ row.nodes.idle }} · 已停 {{ row.nodes.stopped }}
{{ row.cluster_name }}
{{ row.cluster_id }}
init:
{{ row.init_status || '-' }}health:
{{ row.health_status || '-' }}{{ row.expire_time || '-' }}
{{ row.days_left }} 天
{{ row.expire_time || '-' }}
远程读取 ECS 上的日志文件(基于云助手)
{{ logs.error }}
{{ logs.content }}
当前路径:
s.name).join('/').replace(/^\/?/,'/'))">
{{ seg.label }}
⬆ 上一级
🔄 重扫
⚠ {{ logScan.error }}
共 {{ logScan.entries.length }} 条 · {{ logScan.entries.filter(e=>e.type==='dir').length }} 目录 · {{ logScan.entries.filter(e=>e.type==='file').length }} 文件
批量命令执行(基于云助手)
执行结果
{{ r.output }}
错误: {{ r.error_info }}
最近执行历史
总通知数({{ cmsAlert.days }}天)
{{ cmsAlert.total }}
Critical
{{ cmsAlert.by_severity.Critical || 0 }}
Warn
{{ cmsAlert.by_severity.Warn || 0 }}
Info
{{ cmsAlert.by_severity.Info || 0 }}
告警通知日志(时间倒序,共 {{ cmsAlert.rows.length }} / {{ cmsAlert.total }})
{{ row.alert_name }}
-
{{ row.project }}
{{ row.title }}
{{ row.content }}
{{ r.id }}
{{ r.name }}
[{{ r.region }}]
{{ row.analysis.matched_kw }}
- {{ s }}
{{ row.analysis.verdict.label }} · {{ row.analysis.verdict.action }}
复现 {{ row.recurrence['1h'] }}/1h · {{ row.recurrence['24h'] }}/24h
{{ row.analysis.verdict.reason }}
系统事件明细(实例重启 / 磁盘故障 / 系统维护等)
正在告警中的资源(共 {{ cmsActive.total }})
{{ ({idle:'闲置分析阈值', alert:'告警通知', regions:'采集地域'})[group] || group }}
共 {{ obc.summary.total }} 个实例 · {{ obc.summary.online }} 在线 · CPU {{ obc.summary.used_cpu }}/{{ obc.summary.total_cpu }}c · 内存 {{ obc.summary.used_mem_gb }}/{{ obc.summary.total_mem_gb }}GB · 磁盘 {{ obc.summary.used_disk_gb }}/{{ obc.summary.total_disk_gb }}GB · 最近同步 {{ obc.summary.last_sync_at }}
扫描中...
OBCloud 月费
¥{{ Number(obc.opt.summary.monthly_bill_total||0).toLocaleString() }}
近 3 月均值
立省 / 月(估算)
¥{{ Number(obc.opt.summary.monthly_savings_total||0).toLocaleString() }}
占月费 {{ obc.opt.summary.savings_pct }}% · 年 ¥{{ Number(obc.opt.summary.yearly_savings_total||0).toLocaleString() }}
高风险告警
{{ obc.opt.summary.high_alerts }}
命中实例 / 总数
{{ obc.opt.summary.risky_instances }} / {{ obc.opt.summary.total_instances }}
实例风险清单(按风险分倒序)
💡 月费按 CPU 核数比例摊总账单粗略估算。「按量付费 → 包月」是最大单点收益(OceanBase 包月通常比按量便宜 30-50%)。
这里展示所有「处理」过的证书/域名。撤销处理后,它们会重新出现在到期列表里。
⚡ 快捷方式:仅上传到证书服务 (CAS)
如果你的网关是 MSE / Higress、或者不确定怎么自动部署,建议直接上传到 CAS,然后到对应控制台手动选用。
— 或 — 继续走自动部署到 ECS:
选择目标 ECS(共 {{ ecsDeploy.backends.length }} 台后端)
留空则不主动重启 ingress(nginx-ingress 默认 ~10 秒自动 reload secret)
{{ ecsDeploy.results.message }}
{{ r.instance_id }}
{{ r.status }}
exit={{ r.exit_code }}
{{ r.output }}
正在探测:{{ rowProbe.progressDone }} / {{ rowProbe.progressTotal }} 个
📜 本服务器 certbot 已签发证书(用于复制部署到 ECS / 上传到 CAS)
主域:{{ rowProbe.pem.primary }}
到期:{{ rowProbe.pem.expires_at || '-' }}
📤 上传到证书服务 (CAS)
部署示例:
scp {{ rowProbe.pem.primary }}_fullchain.pem root@<ECS-IP>:/etc/nginx/ssl/{{ rowProbe.pem.primary }}.crt
scp {{ rowProbe.pem.primary }}_privkey.pem root@<ECS-IP>:/etc/nginx/ssl/{{ rowProbe.pem.primary }}.key
ssh root@<ECS-IP> 'nginx -t && nginx -s reload'
scp {{ rowProbe.pem.primary }}_fullchain.pem root@<ECS-IP>:/etc/nginx/ssl/{{ rowProbe.pem.primary }}.crt
scp {{ rowProbe.pem.primary }}_privkey.pem root@<ECS-IP>:/etc/nginx/ssl/{{ rowProbe.pem.primary }}.key
ssh root@<ECS-IP> 'nginx -t && nginx -s reload'
{{ rowProbe.error }}
🔍 线上 SSL 部署探测(通过 HTTPS 握手获取该域名当前实际证书)
💡 用途:检测「证书已经签新了,但二级域名解析不在 CDN,所以 CDN 那边新证书 ≠ 实际线上的证书」。逐个域名做 TLS 握手,把现场指纹 + 到期日和数据库里最新证书比对。
支持通配符(*.example.com)。多个域名建议同时签到一张证书。
{{ certIssue.log || '等待中...' }}
安全组总数
{{ secgroup.summary.total||0 }}
紧急
{{ secgroup.summary.critical||0 }}
高危
{{ secgroup.summary.high||0 }}
对公网开放
{{ secgroup.summary.world_open||0 }}
未被引用
{{ secgroup.summary.unused||0 }}
合规风险项
{{ secgroup.summary.total_findings||0 }}
⚠ {{ secgroup.summary.errors.length }} 个地域扫描失败:{{ secgroup.summary.errors.map(e=>e.region).join('、') }}
✓ 未发现合规风险
{{ f.detail }}
{{ f.rule.direction }} · {{ f.rule.protocol }} · {{ f.rule.port_range }} · {{ f.rule.source||f.rule.dest }} · {{ f.rule.policy }} · {{ f.rule.desc }}
💡 {{ f.advice }}
磁盘总数
{{ snap.summary.total_disks||0 }}
未覆盖磁盘
{{ snap.summary.uncovered||0 }}
覆盖率
{{ snap.summary.coverage_pct||0 }}%
· 金额取摊销视角(
· OSS 桶 dbbigdatapro 阿里云账单只到「区域 + 存储层级」粒度(无法按桶出账),故取该区域(华南1·深圳)真实月账单,按本桶各存储层级的容量占比分摊(已含存储包/折扣,逐月不同)。标「估算」因分摊到桶为近似,但单价是真实账单而非目录价。
pretax_amount,包年包月按月分摊),与「成本视图」口径一致;前 7 项数据来源月度账单 bills_monthly,由 collect:bill 定时采集。· OSS 桶 dbbigdatapro 阿里云账单只到「区域 + 存储层级」粒度(无法按桶出账),故取该区域(华南1·深圳)真实月账单,按本桶各存储层级的容量占比分摊(已含存储包/折扣,逐月不同)。标「估算」因分摊到桶为近似,但单价是真实账单而非目录价。
💰 月度预算告警(达到 80%/100% 自动钉钉推送)
💡 包月推荐(按量付费 + 已运行 6+ 个月,转包月通常省 30%)
最近 6 个月成本(摊销视角,包年包月已按月分摊)
Top 10 产品(最近 6 个月累计摊销)
当月成本摊销排行({{ cost.summary.current_cycle }})
上月成本摊销排行({{ cost.summary.last_cycle }})
Top {{ cdnUsage.list.length }} 总流量
{{ fmtBytes(cdnUsage.summary.sum_bytes) }}
Top {{ cdnUsage.list.length }} 总请求
{{ Number(cdnUsage.summary.sum_access||0).toLocaleString() }}
域名数
{{ cdnUsage.list.length }}
时间范围
最近 {{ cdnUsage.days }} 天
流量 Top 30 域名
🔍 异常流量检测(识别可能被刷量的域名)
💡 原理:正常用户访问有明显昼夜节律(凌晨 2-6 点波谷)。如果一个域名 24 小时带宽几乎平直(最低/最高 > 0.7),很可能是机器/被刷流量。
最低流量门槛:
MB
分析
共 {{ cdnUsage.anomaly.length }} | 高风险 {{ cdnUsage.anomalyStats.high }} | 中风险 {{ cdnUsage.anomalyStats.medium }}
紫色=凌晨 2-6 点
HTTP 状态码 / 错误率排行(按 4xx+5xx 错误率倒序)
{{ cdnLog.domain }} 在 {{ cdnLog.date }} 的小时级日志(按时间倒序)
全选
清空
📊 下载并分析 ({{ cdnLog.selected.length }} 个)
⏳ {{ cdnLog.progressMsg }}
job_id: {{ cdnLog.jobId }}
{{ cdnLog.progressLog }}
📊 分析报告 — {{ cdnLog.report.elapsed_sec }}s 完成
总请求
{{ Number(cdnLog.report.overview.total_lines).toLocaleString() }}
独立 IP
{{ Number(cdnLog.report.overview.unique_ips).toLocaleString() }}
总流量
{{ fmtBytes(cdnLog.report.overview.total_bytes) }}
缓存命中率
{{ cdnLog.report.overview.cache_hit_rate }}%
空 UA
{{ cdnLog.report.overview.empty_ua }}
空 Referer
{{ cdnLog.report.overview.empty_ref }}
🔴 可疑 IP(请求 ≥5 + 流量 >100MB)
URL Top 20
IP Top 30(按流量)
Referer 分布
UA Top 10
URL 刷新剩余/上限
{{ cdnRefresh.quota.urlRemain || 0 }} / {{ cdnRefresh.quota.urlQuota || 0 }}
目录刷新剩余/上限
{{ cdnRefresh.quota.dirRemain || 0 }} / {{ cdnRefresh.quota.dirQuota || 0 }}
预热剩余/上限
{{ cdnRefresh.quota.preloadRemain || 0 }} / {{ cdnRefresh.quota.preloadQuota || 0 }}
输入要刷新的 URL(每行一个,最多 100 条)
输入要刷新的目录(每行一个,必须以 / 结尾)
输入要预热的 URL(每行一个,仅文件不支持目录)
当前 {{ cdnRefreshPathCount }} 条
⚡ 提交{{ cdnRefreshActionLabel }}
最近任务({{ cdnRefresh.tasks.length }})
🔄 刷新
总流量
{{ fmtBytes(cdnDetail.summary.total_traffic_bytes) }}
回源流量
{{ fmtBytes(cdnDetail.summary.total_src_bytes) }}
回源比例
{{ cdnDetail.summary.src_ratio }}%
峰值带宽
{{ fmtBps(cdnDetail.summary.max_bps) }}
总请求
{{ Number(cdnDetail.summary.total_access||0).toLocaleString() }}
命中率
{{ cdnDetail.summary.avg_hit_rate }}%
流量 / 回源流量
峰值带宽 (bps)
QPS
缓存命中率
ARMS 应用列表(共 {{ arms.list.length }} 个)
分析中...
💰 优化降本估算(基于版本风险 + 节点数 + 调度优化)
年度可避免损失
¥{{ Number(ackOpt.data.summary.estimated_avoid_loss_yearly).toLocaleString() }}
EOL 集群继续运行的运维成本 + 安全风险
年度可节省成本
¥{{ Number(ackOpt.data.summary.estimated_save_yearly).toLocaleString() }}
升级到推荐版本后的调度优化 / 抢占式 / ARM 支持
总潜在收益(年)
¥{{ Number(ackOpt.data.summary.estimated_total_benefit).toLocaleString() }}
平均风险分
{{ ackOpt.data.summary.avg_risk }}/100
{{ ackOpt.data.summary.total_clusters }} 集群 · {{ ackOpt.data.summary.total_nodes }} 节点
🔴 已停止维护
{{ ackOpt.data.summary.by_status.eol || 0 }}
无安全补丁,立刻升级
🟠 即将停止
{{ ackOpt.data.summary.by_status.deprecated || 0 }}
6 个月内升级
🟡 支持中
{{ ackOpt.data.summary.by_status.supported || 0 }}
可继续使用
✅ 推荐版本
{{ ackOpt.data.summary.by_status.recommended || 0 }}
无需升级
每集群明细(按风险分降序)
{{ row.risk_score }}
{{ row.name }}
{{ row.cluster_id }}
{{ row.minor || '?' }}
EOL {{ row.eol_date }} ({{ row.days_to_eol < 0 ? '已过期 ' + (-row.days_to_eol) + ' 天' : row.days_to_eol + ' 天' }})
{{ row.minor }}
→ {{ v }}
共 {{ row.upgrade_path.length }} 步
- {{ s }}
分析时间:{{ ackOpt.data.analyzed_at }} ·
估算说明:EOL 集群按 ¥3500/节点/年(运维风险 + 安全合规),即将停 ¥1500,支持中 ¥500
扫描节点中...
{{ c.name }}
{{ c.region }}
{{ c.k8s_version }}
{{ c.nodes.total }} 节点 · {{ c.nodes.total_cpu }}C · {{ c.nodes.total_mem_gb }}GB
¥{{ Number(c.yearly_save).toLocaleString() }}/年可省
✅ 无明显问题
{{ c.cluster_id }}
运行中
{{ c.nodes.running }}
已停止
{{ c.nodes.stopped }}
闲置
{{ c.nodes.idle }}
PrePaid / PostPaid
{{ c.nodes.prepaid }} / {{ c.nodes.postpaid }}
新代 / 老代
{{ c.nodes.new_gen }} / {{ c.nodes.old_gen }}
💡 优化建议
📦 节点池分布
{{ row.nodepool_id }}
🖥 节点规格 Top 5
🌐 关联 SLB(K8s Service / Ingress 自动建)
业务标签:
{{ b }}
📋 业务识别(多源关键字)
| 来源 | 关键字 | 出现次数 | 附加信息 |
|---|---|---|---|
|
|
{{ cl.keyword }}
|
×{{ cl.count }} | {{ (cl.details||[]).join(' · ') }} |
💡 读法:节点 tag > K8s Service 名 > 集群别名 是从可信度高到低排的。表格里出现的关键字基本就是这个集群跑的业务。要进一步确认进入 ACK 控制台 → 应用 → 工作负载 看 Deployment / 镜像名。
分析时间:{{ ackRes.data.analyzed_at }}
🎯 行动 1:给冷数据加 LIFECYCLE
高 ROI
⚙ 一键生成 SQL
💀 立即可关停:30 天调度 0 次成功的节点
最高 ROI · 零风险
共 {{ dwInsight.deadNodes.length }} 个
这些节点每天都跑、每天都失败,建议直接 DELETE 节点或永久 PAUSE
💰 行动 3:真·最贵 SQL (按扫描量计费)
高 ROI
🔄 重扫昨日
数据源 INFORMATION_SCHEMA.TASKS_HISTORY · 上次扫描 {{ dwRealSql.lastScanAt || '从未' }}
{{ dwRealSql.bizdate }} 全天: {{ dwRealSql.daySummary.jobs }} jobs ·
扫描 {{ ((dwRealSql.daySummary.total_bytes || 0) / 1024 / 1024 / 1024).toFixed(1) }} GB ·
估算费用 ¥{{ (dwRealSql.daySummary.total_cost || 0).toLocaleString() }}
{{ row.task_name }}
{{ row.owner_name }} · {{ row.task_type }} · {{ row.status }}
🔁 重复执行 SQL Top 10 ({{ dwRealSql.bizdate }} · 按 signature 聚合)
物化中间表可降本
{{ row.sample_task_name }}
{{ (row.sample_owner || '').replace('RAM$', '').replace('@znds.com:', ':') }} · sig=
{{ (row.signature || '').slice(0, 12) }}...
💰 Owner 周费用排行 (真实 ¥, 近 7 天)
高 ROI
📌 找 Top 3 owner 重点 review SQL —— 加分区裁剪 / 避免全表扫 / 减重复执行
👥 Owner 近 7 天耗时排行
D
找出"产 SQL 最贵"的人,约谈+review
工作空间
Region:
刷新
共 {{ dataworks.projects.length }} 个工作空间
节点列表 — {{ dataworks.selectedProject.projectIdentifier }} (projectId={{ dataworks.selectedProject.projectId }})
关键词:
搜索
{{ dataworks.files.length }} 个文件(最多展示 500 个)
fileId: {{ dataworks.detail.fileId }}
类型: {{ dataworks.detail.fileTypeLabel }}
owner: {{ dataworks.detail.owner || '-' }}
业务流程: {{ dataworks.detail.businessName || '-' }} (businessId={{ dataworks.detail.businessId || '-' }})
cron:
{{ dataworks.detail.cron || '-' }}rerunMode: {{ dataworks.detail.rerunMode || '-' }}
paraValue: {{ dataworks.detail.paraValue }}
上游依赖:
{{ d }}
节点内容
复制
{{ dataworks.detail.content || '(空)' }}
扫描配置
Region:
MaxCompute project:
查看已扫描数据
扫描规模:
{{ dwStorage.scanStatus && dwStorage.scanStatus.status === 'running' ? '扫描进行中...' : '🚀 开始扫描' }}
⚠ 全量约 14 小时,会在服务器后台 nohup 跑,不阻塞页面
上次扫描:
{{ dwStorage.scanStatus.status }}
进度 {{ dwStorage.scanStatus.processed || 0 }}/{{ dwStorage.scanStatus.total || 0 }}(失败 {{ dwStorage.scanStatus.failed || 0 }})
开始 {{ dwStorage.scanStatus.started_at }}
完成 {{ dwStorage.scanStatus.finished_at }}
错误:{{ dwStorage.scanStatus.error_msg }}
表清单
⚙ 生成 LIFECYCLE SQL
关键词:
筛选:
排序:
应用
显示 {{ dwStorage.list.length }} 行(最多 200)
筛选:
设置 lifecycle 为:
天(30/90/180常用)
最多:
生成
⚡ 共 {{ dwLifecycle.summary.count }} 张表,
合计 {{ dwLifecycle.summary.total_gb }} GB,
理论月费 ¥{{ dwLifecycle.summary.monthly_cost.toLocaleString() }}。
⚠ 加 lifecycle ≠ 删表。N 天后到期的分区/记录才会被自动清理。建议先对单表试运行。
⚠ 加 lifecycle ≠ 删表。N 天后到期的分区/记录才会被自动清理。建议先对单表试运行。
{{ dwLifecycle.sql || '点 "生成" 按钮以产出 SQL' }}
扫描配置
Region:
projectId:
查看已扫描数据
{{ dwHealth.scanStatus && dwHealth.scanStatus.status === 'running' ? '扫描中...' : '🚀 扫描节点(几分钟)' }}
上次扫描:
{{ dwHealth.scanStatus.status }}
进度 {{ dwHealth.scanStatus.processed || 0 }}/{{ dwHealth.scanStatus.total || 0 }}
开始 {{ dwHealth.scanStatus.started_at }}
{{ dwHealth.scanStatus.error_msg }}
汇总
业务流程数
{{ dwHealth.summary.total_businesses }}
生产节点数
{{ dwHealth.summary.total_nodes }}
疑似僵尸业务 (score≥2)
{{ dwHealth.zombieCount }}
陈旧业务 (180天未改)
{{ dwHealth.staleCount }}
业务流程列表(按僵尸评分降序)
{{ Math.round(row.dead_ratio * 100) }}%
-
{{ row.zombie_reason }}
{{ dwReport.markdown || '点 🔄 重新生成 拉数据' }}
💰 MaxCompute SQL 真实费用排行 数据源 information_schema.tasks_history · 按 input_bytes × ¥0.3/GB × complexity 估算
业务日期:
Top:
刷新
🔄 扫描指定日期
📅 一键补扫近 7 天
上次扫描 {{ dwRealSql.lastScanAt || '从未' }}
{{ dwRealSql.bizdate }} 总任务
{{ dwRealSql.daySummary.jobs.toLocaleString() }}
扫描总量
{{ ((dwRealSql.daySummary.total_bytes || 0) / 1024 / 1024 / 1024).toFixed(1) }} GB
💰 估算费用(当日)
¥{{ (dwRealSql.daySummary.total_cost || 0).toLocaleString() }}
近 7 天费用趋势
{{ d.bizdate }}
¥{{ d.cost_cny.toLocaleString() }}
{{ d.input_gb }} GB · {{ d.jobs }} jobs
Top {{ dwRealSql.topLimit }} 最贵 SQL · {{ dwRealSql.bizdate }}
{{ row.task_name }}
{{ row.task_type }} · {{ row.status }} · {{ row.start_time }}
💰 Owner 周费用排行 (近 7 天)
🔁 重复执行 SQL Top 20 · {{ dwRealSql.bizdate }} (按 signature 聚合, 同 SQL 多次跑)
{{ row.sample_task_name }}
{{ (row.sample_owner || '').replace('RAM$', '').replace('@znds.com:', ':') }} · sig=
{{ (row.signature || '').slice(0, 12) }}...📌 执行 ≥10 次的 SQL 强烈建议物化为中间表,下游一律读中间表(一次扫,多次读零成本)
🔥 输入表扫描热度 Top 20 (近 7 天,按 ¥ 排)
{{ row.table_name }}
📌 被反复扫的大表是降本重点 —— 可考虑物化为汇总表,下游 SQL 改读汇总表,避免重复全扫
⚡ 实时计算 Flink 概览
刷新
workspace 从账单反查 (产品 sc) · 月费包月制 · 改规格才省钱
总月费 ¥{{ dwFlink.totalMonthlyCost.toLocaleString() }},共 {{ dwFlink.workspaces.length }} 个 workspace
Workspace {{ ws.workspaceId }} ({{ ws.nick }})
¥{{ ws.monthly_cost.toLocaleString() }} / 月
region={{ ws.region }}
按计费项:
{{ it.item }}=¥{{ Math.round(it.amount).toLocaleString() }}
⚠ 读不到 deployments:{{ ws.access_error }}
解决:阿里云 → 实时计算 Flink 版 → 找到本 workspace ({{ ws.workspaceId }}) → 成员管理 → 加 RAM 用户
解决:阿里云 → 实时计算 Flink 版 → 找到本 workspace ({{ ws.workspaceId }}) → 成员管理 → 加 RAM 用户
wangweicdn → 给"开发"或"运维"角色
namespaces:
{{ n }}
· 共 {{ ws.deploy_count }} 个 deployment
{{ row.name }}
{{ row.engineVersion }} · {{ row.executionMode }} · creator={{ row.creator }}
{{ row.memory || '?' }} GB
⚠ 全部 deployment 加起来的 CU 数 > workspace 配额 → 说明资源用满;如果有大量 deploy 但 running=0 → 浪费
SQL 计算热榜(耗时 + 错误,非真实费用)
⚠ MaxCompute SQL 按扫描量计费,本榜按执行时长排。两者部分相关但不等价。
要拿真实费用排序需查
{{ dwShowTrueCostSql ? '隐藏' : '查看' }} 真·最贵 SQL 查询脚本(让数据团队跑)
要拿真实费用排序需查
INFORMATION_SCHEMA.TASKS_HISTORY.cpu_cost / input_bytes,
需要 MaxCompute 读权限(当前 AK 没有,需让运维加 odps:Submit on db_warehouse)。
-- ==========================================
-- 真·MaxCompute SQL 计算费用 Top 100(昨日)
-- 在 DataWorks 临时 SQL 节点执行(需 db_warehouse 项目读权限)
-- 公式: cost_cpu = cpu_cost (核·秒) × 单价
-- 公式: cost_scan = input_bytes / 1024^3 (GB) × ¥0.3 × complexity
-- ==========================================
SELECT
task_catalog AS project,
task_name AS task,
inst_id AS instance_id,
owner_name AS owner,
status AS status,
ROUND(input_bytes/1024/1024/1024, 3) AS input_gb,
input_records,
ROUND(cpu_cost, 0) AS cpu_seconds,
complexity,
ROUND(input_bytes/1024/1024/1024 * 0.3 * COALESCE(complexity,1), 4) AS est_cost_cny,
start_time, end_time,
(UNIX_TIMESTAMP(end_time) - UNIX_TIMESTAMP(start_time)) AS duration_sec
FROM INFORMATION_SCHEMA.TASKS_HISTORY
WHERE ds = '${bizdate}' -- 替换为昨日 yyyymmdd
AND task_type = 'SQL'
AND status IN ('Terminated', 'Success')
ORDER BY est_cost_cny DESC
LIMIT 100;
-- ==========================================
-- 按 owner 聚合的周成本榜 Top 20
-- ==========================================
SELECT
owner_name,
COUNT(*) AS jobs,
ROUND(SUM(input_bytes)/1024/1024/1024/1024, 2) AS total_input_tb,
ROUND(SUM(input_bytes/1024/1024/1024 * 0.3 * COALESCE(complexity,1)), 2) AS est_cost_cny
FROM INFORMATION_SCHEMA.TASKS_HISTORY
WHERE ds BETWEEN '${start}' AND '${end}' -- 替换为最近 7 天
AND task_type = 'SQL'
AND status IN ('Terminated', 'Success')
GROUP BY owner_name
ORDER BY est_cost_cny DESC
LIMIT 20;
-- ==========================================
-- 按表(输入表)聚合:哪张大表被反复扫
-- ==========================================
SELECT
inputs[0] AS top_input_table,
COUNT(*) AS scan_count,
ROUND(SUM(input_bytes)/1024/1024/1024, 2) AS total_scan_gb,
ROUND(AVG(input_bytes)/1024/1024/1024, 2) AS avg_scan_gb
FROM INFORMATION_SCHEMA.TASKS_HISTORY
WHERE ds BETWEEN '${start}' AND '${end}'
AND task_type = 'SQL'
AND CARDINALITY(inputs) > 0
GROUP BY inputs[0]
ORDER BY total_scan_gb DESC
LIMIT 30;
projectId:
业务日期:
查询
⚠ 节点查询会跳转回「节点查询」tab 展示 SQL,需先扫过节点
🐌 耗时 Top {{ dwJobRank.consumeRank.length }} ({{ dwJobRank.bizdate }})
{{ row.nodeName }}
{{ row.businessName || '-' }} · {{ row.owner }}
❌ 错误次数 Top {{ dwJobRank.errorRank.length }} (近期)
{{ row.nodeName }}
{{ row.businessName || '-' }} · {{ row.owner }}
task_name: {{ dwSqlView.row.task_name }}
inst_id:
{{ dwSqlView.row.inst_id }}owner: {{ dwSqlView.row.owner_name }}
start: {{ dwSqlView.row.start_time }} → end: {{ dwSqlView.row.end_time }} ({{ dwSqlView.row.duration_sec }}s)
扫描: {{ fmtBytes(dwSqlView.row.input_bytes) }} · 记录: {{ dwSqlView.row.input_records }}
复杂度: {{ dwSqlView.row.complexity }} · 估算费用: ¥{{ dwSqlView.row.est_cost_cny }}
signature:
{{ dwSqlView.row.signature }}
SQL 文本
📋 复制
{{ dwSqlView.row.operation_text }}
加载中...
无数据
资源总数(17 类)
{{ business.total_resources || 0 }}
已识别业务
{{ business.with_business || 0 }}
标签合规率
{{ business.compliance_pct || 0 }}%
阿里云控制台给资源补 business-gaap-tag 即可
业务线数
{{ (business.list || []).length }}
按业务线聚合(17 类资源 · 数据源:阿里云原生 tag)
业务名提取优先级:手动填写 →
business-gaap-tag → business-tag → 域名前缀类
💡 去阿里云控制台给这些资源补打
business-gaap-tag,下次定时采集(每小时)后自动归类。
按资源类型分布
知识库索引
{{ bailian.summary.index_count || 0 }}
已发布应用
{{ bailian.summary.agent_count || 0 }}
Prompt 模板
{{ bailian.summary.prompt_count || 0 }}
长期记忆
{{ bailian.summary.memory_count || 0 }}
数据分类
{{ bailian.summary.category_count || 0 }}
文件总数
{{ bailian.summary.file_count || 0 }}
最近 6 个月消费
¥ {{ Number(bailianCost.total_6m||0).toLocaleString() }}
月份数
{{ bailianCost.monthly.length }}
计费项种类
{{ bailianCost.by_item.length }}
使用过的模型
{{ bailianCost.by_model.length }}
业务空间数
{{ bailianCost.by_workspace.length }}
未命名空间
{{ bailianCost.by_workspace_unnamed || 0 }}
月度消费趋势
按 Token 类型 (input/output/cache) 聚合
各业务空间消费(最近 3 个账期)
{{ bailianCost.by_workspace_unnamed }} 个空间待命名
按模型聚合 (Top 50)
💡 模型调用成本优化建议
🔄 重新分析
基于 {{ bailianOpt.data.cycle }} 月度数据
分析中...
✅ 当月模型用量没发现明显优化空间
{{ bailianOpt.data.cycle }} 月度模型消费
¥{{ Number(bailianOpt.data.summary.monthly_cost).toLocaleString() }}
优化建议数
{{ bailianOpt.data.tips.length }}
年度可省估算
¥{{ Number(bailianOpt.data.summary.est_save_yearly).toLocaleString() }}
⚠ 估算基于经验降级幅度(30%-80%),需结合业务效果验证;多个建议可能针对同一模型,实际节省非简单加和
{{ t.model }}
本月 ¥{{ Number(t.monthly_cost).toLocaleString() }}
年省约 ¥{{ Number(t.est_save_yearly).toLocaleString() }}
{{ t.description }}
💡 {{ t.suggestion }}
{{ bailianOpt.data.note }}
空知识库索引
{{ bailianIdle.empty_indices.length }}
解析失败文件
{{ bailianIdle.failed_files.length }}
空分类
{{ bailianIdle.empty_cats.length }}
老 Embedding 模型
{{ bailianIdle.old_embedding.length }}
超大文件 (>5MB)
{{ bailianIdle.large_files.length }}
自动创建未使用记忆
{{ bailianIdle.auto_memory_count }} / {{ bailianIdle.total_memory }}
🔴 空知识库索引(doc_count = 0,建议删除)
🟠 使用老版 Embedding 模型的索引(建议升级到 v3 / v4 提升召回)
🟠 解析失败的文件(占用存储但不可用,建议清理)
🟡 没有任何文件的分类(建议合并或删除)
📄 超大文件 Top 50(>5MB,确认是否被索引引用)
实际使用过的模型(按消费倒序)
月度调用规模
按月份 × 模型 × Token类型 明细 (Top 200)
前往控制台
阿里云目前未开放 API Key 列表的 OpenAPI,所以本系统无法直接读取已存在的 Key 信息。请通过以下链接管理:
待处理建议
{{ rec.stat.open_cnt || 0 }}
紧急 (critical)
{{ rec.stat.critical_cnt || 0 }}
高优 (high)
{{ rec.stat.high_cnt || 0 }}
中优 (medium)
{{ rec.stat.medium_cnt || 0 }}
预估月省 (¥)
¥ {{ Number(rec.stat.open_save||0).toLocaleString() }}
最近分析
{{ rec.stat.last_run || '从未' }}
{{ row.description }}
建议动作:{{ row.action_hint }}
命中资源 ({{ row.resource_count }}):
仅展示前 50 条,共 {{ row.target_resources.length }} 条
百度云 API 密钥配置
总实例
{{ bdBcc.summary.total }}
运行中
{{ bdBcc.summary.running }}
已停止
{{ bdBcc.summary.stopped }}
30 天到期
{{ bdBcc.summary.expiring_30d }}
总 vCPU
{{ bdBcc.summary.total_cpu }}
总内存
{{ bdBcc.summary.total_mem_gb }} GB
Prepaid / Postpaid
{{ bdBcc.summary.prepaid }} / {{ bdBcc.summary.postpaid }}
💡 优化建议
💡 {{ t.suggestion }}
{{ row.instance_name || '-' }}
{{ row.instance_id }}
{{ row.spec || row.instance_type }}{{ row.cpu }}C · {{ row.memory_gb }}GB
内网
{{ row.internal_ip || '-' }}公网
{{ row.public_ip }}{{ row.expire_time || '-' }}
总磁盘
{{ bdCds.summary.total }}
已挂载
{{ bdCds.summary.in_use }}
未挂载
{{ bdCds.summary.available }}
总容量
{{ bdCds.summary.total_size_gb }} GB
💡 优化建议
💡 {{ t.suggestion }}
{{ row.volume_name || '-' }}
{{ row.volume_id }}VPC 总数
{{ bdVpc.summary.total }}
默认 VPC
{{ bdVpc.summary.default }}
子网总数
{{ bdSubnet.summary.total }}
快照总数
{{ bdSnap.summary.total }}
自动快照
{{ bdSnap.summary.auto }}
手动快照
{{ bdSnap.summary.manual }}
总容量
{{ bdSnap.summary.total_size_gb }} GB
💡 优化建议
💡 {{ t.suggestion }}
总 Bucket
{{ bdBos.summary.total }}
总容量
{{ Number(bdBos.summary.total_size_gb||0).toLocaleString() }} GB
总对象数
{{ Number(bdBos.summary.total_objects||0).toLocaleString() }}
月费估算
¥{{ Number(bdBos.summary.estimated_monthly||0).toLocaleString() }}
标准存储参考价
💡 优化建议
💡 {{ t.suggestion }}
总域名
{{ bdCdn.summary.total }}
运行中
{{ bdCdn.summary.running }}
已停止
{{ bdCdn.summary.stopped }}
未启用 HTTPS
{{ bdCdn.summary.no_https }}
💡 优化建议
💡 {{ t.suggestion }}
总流量
{{ fmtBytes(bdCdnDetail.summary.total_traffic_bytes) }}
回源流量
{{ fmtBytes(bdCdnDetail.summary.total_src_bytes) }}
回源比例
{{ bdCdnDetail.summary.src_ratio }}%
峰值带宽
{{ fmtBps(bdCdnDetail.summary.max_bps) }}
总请求
{{ Number(bdCdnDetail.summary.total_access||0).toLocaleString() }}
命中率
{{ bdCdnDetail.summary.avg_hit_rate }}%
流量 / 回源流量
峰值带宽 (bps)
PV (请求数)
缓存命中率
腾讯云 API 密钥配置
总实例
{{ txCvm.summary.total }}
运行中
{{ txCvm.summary.running }}
已停止
{{ txCvm.summary.stopped }}
30 天到期
{{ txCvm.summary.expiring_30d }}
总 vCPU
{{ txCvm.summary.total_cpu }}
总内存
{{ txCvm.summary.total_mem_gb }} GB
PrePaid / PostPaid
{{ txCvm.summary.prepaid }} / {{ txCvm.summary.postpaid }}
💡 优化建议
💡 {{ t.suggestion }}
{{ row.instance_name || '-' }}
{{ row.instance_id }}
{{ row.instance_type }}
{{ row.cpu }}C · {{ row.memory_gb }}GB
内网
{{ row.private_ip || '-' }}公网
{{ row.public_ip }}{{ row.expired_time || '-' }}
总域名
{{ txCdn.summary.total }}
online
{{ txCdn.summary.online }}
offline
{{ txCdn.summary.offline }}
未启用 HTTPS
{{ txCdn.summary.no_https }}
海外/全球
{{ txCdn.summary.overseas }}
💡 优化建议
💡 {{ t.suggestion }}
总站点
{{ txTeo.summary.total }}
active
{{ txTeo.summary.active }}
pending
{{ txTeo.summary.pending }}
moved
{{ txTeo.summary.moved }}
paused
{{ txTeo.summary.paused }}
套餐月费
¥{{ Number(txTeo.summary.monthly_cost||0).toLocaleString() }}
年化 ¥{{ Number(txTeo.summary.yearly_cost||0).toLocaleString() }}
💡 优化建议
总年节省可达 ¥{{ Number(txTeo.total_save).toLocaleString() }}
💡 {{ t.suggestion }}
总 Bucket
{{ txCos.summary.total }}
总容量
{{ Number(txCos.summary.total_size_gb||0).toLocaleString() }} GB
总对象数
{{ Number(txCos.summary.total_objects||0).toLocaleString() }}
未完成分片
{{ txCos.summary.total_multipart_gb || 0 }} GB
月费估算
¥{{ Number(txCos.summary.estimated_monthly||0).toLocaleString() }}
标准存储均价
地域分布:
{{ r }} × {{ n }}
💡 优化建议
💡 {{ t.suggestion }}
又拍云有两套独立的凭据:
- USS 操作员(必填)— 控制台 → 服务名/操作员管理 创建一个操作员,设密码。用来查 bucket 用量、文件操作。
- 账号 username/password(选填)— 又拍云控制台主账号,用来调控制台开放 API(OAuth Token,覆盖 CDN/域名/账单)。文档不公开,参数可能需要根据真实返回错误调整。
USS 操作员凭据(必填)
已配置:{{ upyun.creds.has_operator_password ? '✓ 已存(加密)' : '未配置' }}
OAuth Token(用于 CDN 流量 / 计费 / 域名 API)
又拍云每账号最多 10 个 token;password 只在「创建 Token」时一次性使用,不会保存到数据库。Token 创建后永久保存(除非设过期时间)。
✅ Token 已创建
name: {{ upyun.creds.token_name }} · scope: {{ upyun.creds.token_scope }} ·
创建于 {{ upyun.creds.token_created_at }} · 过期 {{ upyun.creds.token_expired_at || '永不过期' }}
⚠ 又拍云每账号最多 10 个 token,已经满 10 个需先去
控制台删几个再来。
测试结果
USS 操作员签名 {{ upyun.pingResult.operator?.ok?'✅':'❌' }}
HTTP {{ upyun.pingResult.operator.http_code }} · 签名校验通过
{{ upyun.pingResult.operator?.msg }}
OAuth Token {{ upyun.pingResult.oauth?.ok?'✅':'❌' }}
access_token: {{ upyun.pingResult.oauth.token_prefix }}
{{ upyun.pingResult.oauth?.msg }}
① "自动发现服务" 调 OAuth API 拉服务名入库;② "同步用量" 走 USS 操作员签名 拿每个服务的存储字节数。
服务总数
{{ upyunUss.list.length }}
总用量
{{ formatGB(upyunUssTotalGB) }}
最近同步
{{ upyunUssLastSync }}
开始:
结束:
查询
{{ upyunFlow.error }}
{{ JSON.stringify(upyunFlow.data, null, 2) }}
加载中...
{{ upyunDomains.error }}
{{ JSON.stringify(upyunDomains.data, null, 2) }}
调用
GET /flow/common_data,按日聚合返回流量、请求数、带宽等。需要 OAuth Token 含 stats 或 global scope。
❌ {{ upyunFlow.error }}
汇总({{ upyunFlowList.length }} 行)
原始响应
{{ JSON.stringify(upyunFlow.data, null, 2) }}
总 Bucket
{{ upyunAllDomains.data.total_buckets || 0 }}
总域名数
{{ upyunAllDomains.data.total_domains || 0 }}
❌ {{ upyunStat.error }}
原始响应(结构待你确认后再做表格化)
{{ JSON.stringify(upyunStat.data, null, 2) }}
点上方 "🔍 查询" 按钮拉取
扫描时间:{{ volc.data.scanned_at }} {{ volc.data.from_cache ? '(走缓存)' : '(实时)' }}
⚠ {{ volc.data.errors.length }} 个接口报错
加载中...
{{ volc.error }}
本月费用
¥{{ Number(volc.data.summary.this_month||0).toLocaleString() }}
{{ volc.data.summary.product_count_this_month }} 个产品在用
上月费用
¥{{ Number(volc.data.summary.last_month||0).toLocaleString() }}
近 3 月均值 ¥{{ volc.data.summary.avg_3m }}
VPC 数
{{ volc.data.summary.vpc_count }}
基础设施
其他资源
{{ (volc.data.summary.ecs_count||0) + (volc.data.summary.rds_count||0) + (volc.data.summary.cdn_count||0) + (volc.data.summary.clb_count||0) + (volc.data.summary.function_count||0) }}
ECS {{ volc.data.summary.ecs_count }} · RDS {{ volc.data.summary.rds_count }} · CDN {{ volc.data.summary.cdn_count }} · CLB {{ volc.data.summary.clb_count }} · Faas {{ volc.data.summary.function_count }}
💰 账单按产品聚合(近 3 月)
{{ period }} · 合计 ¥{{ volc.data.bills_trend[period] }}
无消费记录
| {{ p }} | ¥{{ amt.toFixed(2) }} |
🌐 VPC 列表({{ volc.data.vpcs.length }})
无 VPC
📦 其他资源
🖥 ECS
{{ volc.data.summary.ecs_count }}
账号无 ECS
🗄 RDS MySQL
{{ volc.data.summary.rds_count }}
账号无 RDS
📡 CDN
{{ volc.data.summary.cdn_count }}
账号无 CDN
⚖ CLB
{{ volc.data.summary.clb_count }}
账号无 CLB
⚡ veFaaS
{{ volc.data.summary.function_count }}
账号无函数
接口错误日志:
- {{ e }}
扫描时间:{{ volcOpt.data.scanned_at }}
扫描中...
{{ volcOpt.error }}
高风险告警
{{ volcOpt.data.summary.high_alerts }}
中 {{ volcOpt.data.summary.medium_alerts }} · 低 {{ volcOpt.data.summary.low_alerts }}
本月 / 上月
¥{{ Number(volcOpt.data.summary.this_month_total||0).toLocaleString() }}
上月 ¥{{ Number(volcOpt.data.summary.last_month_total||0).toLocaleString() }}
近 6 月均值 / 峰值
¥{{ Number(volcOpt.data.summary.six_month_avg||0).toLocaleString() }}
峰值 ¥{{ Number(volcOpt.data.summary.six_month_max||0).toLocaleString() }}
潜在月省 (估算)
¥{{ Number(volcOpt.data.summary.estimated_savings||0).toLocaleString() }}
年 ¥{{ Number(volcOpt.data.summary.estimated_yearly||0).toLocaleString() }}
⚠ 降本优化告警(共 {{ volcOpt.data.alerts.length }})
✓ 无异常,账号消费稳定
{{ row.type }}
📈 近 6 月账单趋势
{{ period }}
¥{{ Number(amt).toLocaleString() }}
💰 各产品月度账单矩阵
| 产品 | {{ period }} |
|---|---|
| {{ product }} | ¥{{ Number((volcOpt.data.by_product[period] || {})[product]).toFixed(2) }} - |
扫描时间:{{ volcArk.data.scanned_at }}
📝 {{ volcArk.data.note }}
加载中...
{{ volcArk.error }}
Endpoints 数
{{ volcArk.data.summary.endpoint_count }}
{{ volcArk.data.summary.running_count }} Running
使用的模型数
{{ volcArk.data.summary.model_count }}
基础模型 / 自定义
项目数
{{ volcArk.data.summary.project_count }}
Datasets / 批量任务
{{ volcArk.data.summary.dataset_count }} / {{ volcArk.data.summary.batch_job_count }}
数据集 / 批推理
优化告警
{{ volcArk.data.summary.total_alerts }}
高 {{ volcArk.data.summary.high_alerts }} · 中 {{ volcArk.data.summary.medium_alerts }} · 低 {{ volcArk.data.summary.low_alerts }}
🎯 降本告警({{ volcArk.data.alerts.length }})
{{ row.type }}
🧠 按模型聚合(找重复部署)
📋 所有 Endpoint ({{ volcArk.data.endpoints.length }})
{{ row.id }}
运行中 ECS
{{ ports.summary.total_ecs || 0 }}
已扫描
{{ ports.summary.scanned || 0 }}
扫描失败
{{ ports.summary.failed || 0 }}
监听端口数
{{ ports.summary.ports_total || 0 }}
独立端口 {{ ports.summary.ports_distinct || 0 }} 个
💡 端口数据来自云助手
ss -tlnp 命令。Linux 自动跑,Windows 用 netstat。SSH 终端运行 php think scan:ports 触发扫描(约 3-5 分钟);扫完刷新即可。
最近扫描:{{ topo.scanned_at }} · 耗时 {{ topo.elapsed_sec }}s · {{ topo.from_cache ? '走缓存' : '实时' }}
高危告警
{{ topo.summary.high_alerts || 0 }}
中等告警
{{ topo.summary.medium_alerts || 0 }}
低危告警
{{ topo.summary.low_alerts || 0 }}
ACK 集群
{{ topo.summary.total_clusters || 0 }}
SLB 实例
{{ topo.summary.total_slbs || 0 }}
闲置 EIP
{{ topo.summary.total_orphan_eips || 0 }}
孤儿 ENI
{{ topo.summary.total_orphan_enis || 0 }}
可疑 ECS
{{ topo.summary.total_orphan_ecs || 0 }}
{{ row.resource_name || '(无名)' }}
{{ row.resource_id }}
基本信息
节点列表
基本信息
近 7 天流量:
RX {{ formatBps(topo.detail.row.traffic.avg_rx_bps) }}/s · TX {{ formatBps(topo.detail.row.traffic.avg_tx_bps) }}/s · 合计 {{ formatBps(topo.detail.row.traffic.avg_bps_total) }}/s
监听 ({{ (topo.detail.row.listeners||[]).length }})
vSG:{{ l.vserver_group_id || '默认组' }} · 调度:{{ l.scheduler }} · 证书:{{ l.cert_id }}
分析时间:{{ cdt.analyzed_at }} {{ cdt.from_cache ? '(走缓存,30 分钟内不再调 API)' : '(实时拉取)' }}
{{ cdt.cycle }} CDT 总成本
¥{{ Number(cdt.total||0).toLocaleString() }}
≈ ¥{{ Number((cdt.total||0)*12).toLocaleString() }}/年
SLB 公网出
¥{{ Number(cdt.by_kind?.SLB||0).toLocaleString() }}
{{ cdtPct(cdt.by_kind?.SLB) }}%
ECS 公网出
¥{{ Number(cdt.by_kind?.ECS||0).toLocaleString() }}
{{ cdtPct(cdt.by_kind?.ECS) }}%
EIP 出
¥{{ Number(cdt.by_kind?.EIP||0).toLocaleString() }}
{{ cdtPct(cdt.by_kind?.EIP) }}%
共享带宽包
¥{{ Number(cdt.by_kind?.['共享带宽包']||0).toLocaleString() }}
{{ cdtPct(cdt.by_kind?.['共享带宽包']) }}%
⚠ 异常资源
{{ (cdt.anomalies||[]).length }}
名字像基础设施 / 单机出 ≥5TB
⚠ 重点排查清单({{ cdt.anomalies.length }} 条)
📊 近 12 个月 CDT 月度成本(账单摊销)
区域分布(当月)
Top 资源(按月成本倒序)
扫描时间:{{ slsOpt.scanned_at }} {{ slsOpt.from_cache ? '(走缓存)' : '(实时)' }}
✓ 7d 查询次数已启用
⚠ 7d 查询次数不可用(未开启 SLS 服务日志)
⚠ {{ slsOpt.errors.length }} 个 project 拉取失败
本月费用 ({{ slsOpt.region }})
¥{{ Number(slsOpt.summary.monthly_fee_total||0).toLocaleString() }}
按 instance bill 统计
💰 可优化降本
¥{{ Number(slsOpt.summary.monthly_savings_total||0).toLocaleString() }}
月省 {{ slsOpt.summary.savings_pct || 0 }}% · 年省 ¥{{ Number((slsOpt.summary.monthly_savings_total||0)*12).toLocaleString() }}
Logstore / Shard
{{ slsOpt.summary.total_logstores || 0 }} / {{ slsOpt.summary.total_shards || 0 }}
{{ slsOpt.summary.total_projects || 0 }} 个 Project
高危告警
{{ slsOpt.summary.high_alerts || 0 }}
中等告警
{{ slsOpt.summary.medium_alerts || 0 }}
低危告警
{{ slsOpt.summary.low_alerts || 0 }}
重点优化指标 点击任意指标可下钻到匹配记录
审计日志超配 (shard≥16)
{{ slsOpt.summary.count_audit_high || 0 }}
缩到 4 shard 立刻省钱
未启用冷存储 (TTL>30且全热)
{{ slsOpt.summary.count_no_cold || 0 }}
冷存储省 75% 存储费
超长 TTL (≥180d)
{{ slsOpt.summary.count_long_ttl || 0 }}
确认合规要求,不需要可缩短
全文索引启用
{{ slsOpt.summary.count_fulltext || 0 }}
¥0.35/GB,确认真需要
TTL 几乎无限 (≥3000d)
{{ slsOpt.summary.count_ttl_infinite || 0 }}
默认 3650d 忘改,缩到 30/90 立省 70%
老历史 logstore (≥2 年)
{{ slsOpt.summary.count_old_inactive || 0 }}
大概率历史 K8s 集群,确认后可整批删
K8s ingress shard 偏多 (≥8)
{{ slsOpt.summary.count_ingress_high || 0 }}
中小集群 4 shard 通常足够
冷存储 TTL ≥365d
{{ slsOpt.summary.count_cold_ttl_long || 0 }}
冷存储也按月算钱,缩到 90-180d
按 Project 聚合(Top 15,shard 倒序)
Logstore 列表(共 {{ (slsOpt.logstores||[]).length }},按风险倒序)
💡 修改 TTL / Shard / 索引 / 删除 logstore:点行末"📋 SLS 控制台 →"进入 logsearch 页 → 左侧 logstore 列表鼠标悬停目标 logstore → 出现的 ⋯ 菜单里选"修改"或"删除"。
删整个 project(旧集群整批清):到 SLS Project 总览 → 找到 project → ⋯ 菜单删除。
扫描时间:{{ slsOrphans.scanned_at }} {{ slsOrphans.from_cache ? '(走缓存)' : '(实时)' }}
单 shard 月费按 ¥{{ slsOrphans.summary && slsOrphans.summary.shard_fee_assumption || 30 }} 估算(实际 ¥0.04/h ≈ ¥30/月)
⚠ {{ slsOrphans.errors.length }} 个 project 拉取失败
孤儿 Project 数
{{ slsOrphans.summary.orphan_project_count }}
集群已删,可整 project 删
孤儿 Logstore 数
{{ slsOrphans.summary.orphan_logstore_count }}
挂在共享 project 下,只删 logstore
总浪费 Shard
{{ slsOrphans.summary.total_orphan_shard }}
¥{{ slsOrphans.summary.shard_fee_assumption }}/月/shard
立省 (估)
¥{{ Number(slsOrphans.summary.monthly_savings_est||0).toLocaleString() }}
月省 · 年 ¥{{ Number(slsOrphans.summary.yearly_savings_est||0).toLocaleString() }}
🗑 孤儿 Project(整 project 可删,共 {{ (slsOrphans.orphan_projects||[]).length }})
💡 这些 project 关联的 ACK / ASM 集群已经从控制台删除,但 SLS project 没清理。
删除前最后确认:点 logstore 数字展开看下里面是否真的全是 audit-/apiserver-/system 等系统日志;
确认后 → SLS 控制台 → ⋯ 菜单 → 删除项目(一次性删全部 logstore)。
{{ row.cluster_id }}
| Logstore | Shard | TTL |
|---|---|---|
| {{ ls.name }} | {{ ls.shard }} | {{ ls.ttl }}d |
🗑 孤儿 Logstore(单 logstore 删,共 {{ (slsOrphans.orphan_logstores||[]).length }})
💡 这些 logstore 挂在还在用的共享 project 下(如 ARMS xtrace),名字带已删集群 ID。
只删 logstore,不要删 project! 点「📋 检视」进 SLS 控制台 logsearch 页 → 左侧栏鼠标悬停 logstore → ⋯ 菜单 → 删除。
{{ row.cluster_id }}
告警规则总数
{{ slsAlert.stats.total || 0 }}
已启用
{{ slsAlert.stats.enabled || 0 }}
已禁用
{{ slsAlert.stats.disabled || 0 }}
通知方式
{{ slsAlertNotifyTypes }}
告警规则列表(共 {{ filteredSlsAlerts.length }})
{{ row.display_name || row.name }}
{{ row.name }}
总通知数({{ slsNotify.days }} 天)
{{ slsNotify.total }}
firing
{{ slsNotifyStatusCount('firing') }}
resolved
{{ slsNotifyStatusCount('resolved') }}
High/Critical
{{ slsNotifySeverityCount(['Critical','High']) }}
说明:
- 接收端尚未在阿里云 SLS「行动策略」里挂上 → 点右上角「🔧 接收端配置」拿 URL,按指引去配
- 已挂上但还没触发任何告警 → 在阿里云控制台手动测试一次,或等业务自然触发
- 挂上了但请求被拒 → 看下数据库 sls_alert_notifications 里有无记录;access log 是否有 /api/sls/alert-receiver 的 401
通知日志(时间倒序,共 {{ slsNotify.rows.length }} / {{ slsNotify.total }})
{{ row.alert_name }}
-
{{ row.project }}
(无标识字段)
{{ row.title }}
{{ row.content }}
⚠ 解析未匹配,原始片段:
{{ row.raw_preview }}
📍 数据源
🔍 查实际日志 ↗
{{ row.related.sls_source.query_sql }}
时间窗:{{ row.related.sls_source.time_window.from }} → {{ row.related.sls_source.time_window.to }}
🎯 触发条件:
{{ row.related.condition }}
📊 命中数据(前 3 条)
| {{ JSON.stringify(td) }} |
业务:
{{ b }}
错误码:
{{ c.type==='HTTP' ? ('HTTP ' + c.code) : c.code }}
{{ r.id }}
{{ r.name }}
[{{ r.region }}]
({{ r.matched_via }})
(本地未收录)
IP:
无可识别关联
{{ ip }}
{{ row.analysis.matched_kw }}
- {{ s }}
{{ row.analysis.verdict.label }} · {{ row.analysis.verdict.action }}
复现:{{ row.recurrence['1h'] }} 次/1h ·
{{ row.recurrence['24h'] }} 次/24h
{{ row.analysis.verdict.reason }}
结果太多,仅显示前 {{ slsNotify.rows.length }} 条 / 共 {{ slsNotify.total }} 条 — 请用筛选条件缩小范围
加载中...
通知 webhook
{{ row.url_full }}
完整 configuration(JSON)
{{ JSON.stringify(slsAlert.detail.alert.configuration, null, 2) }}
加载中...
Webhook URL(粘贴到阿里云 SLS)
请求方法:
POSTToken:
{{ slsAlertReceiver.token }}阿里云 SLS 操作步骤
- 打开 SLS Webhook集成 ↗
- 点「新建」→ 类型选 通用 Webhook(不是钉钉!)→ 请求方法 POST → 请求地址粘贴上面 URL → 保存
- 打开 行动策略 ↗
- 编辑现有的策略 → 在「通知渠道」里 追加 上一步新建的 webhook(保留原有钉钉,不要删!)→ 保存
- 等下一次告警触发,「📥 自建归档」tab 就能看到完整正文
{{ slsAlertRaw.text }}
正在调用 SLS API 跑同样的 SQL...
Project:
{{ slsLogDrill.data.project }} | Logstore: {{ slsLogDrill.data.logstore }} | Region: {{ slsLogDrill.data.region }}时间窗: {{ slsLogDrill.data.time_window.from }} → {{ slsLogDrill.data.time_window.to }}
SQL:
{{ slsLogDrill.data.sql }}
告警那一刻命中的窗口已查询,但当前再跑此 SQL 命中 0 行(可能问题已自愈)
跑过滤部分:
📥 CSV
📥 JSON
{{ slsLogDrill.data.filter }}
无命中日志(窗口已自愈或告警 SQL 是纯统计型)
{{ formatLogTime(s.__time__, '__time__') }}
{{ k }}:
{{ formatLogTime(v, k) }}
扫描时间:{{ ecsOpt.scanned_at }} {{ ecsOpt.from_cache ? '(走缓存)' : '(实时)' }}
· 闲置分析快照日期 {{ ecsOpt.summary.analyze_date || '-' }}
扫描实例数
{{ ecsOpt.summary.total_instances || 0 }}
命中风险 {{ ecsOpt.summary.risky_instances || 0 }} 台
💰 可优化降本
¥{{ Number(ecsOpt.summary.monthly_savings_total||0).toLocaleString() }}
月省 {{ ecsOpt.summary.savings_pct || 0 }}% · 年省 ¥{{ Number((ecsOpt.summary.monthly_savings_total||0)*12).toLocaleString() }}
本月命中实例费用
¥{{ Number(ecsOpt.summary.monthly_fee_total||0).toLocaleString() }}
按 instance bill 统计
高危告警
{{ ecsOpt.summary.high_alerts || 0 }}
中等告警
{{ ecsOpt.summary.medium_alerts || 0 }}
低危告警
{{ ecsOpt.summary.low_alerts || 0 }}
📊 近 12 个月 ECS 月度成本(账单摊销)
重点优化指标
闲置实例 (CPU<5%)
{{ ecsOpt.summary.count_idle || 0 }}
建议关停或释放
已停止
{{ ecsOpt.summary.count_stopped || 0 }}
包月停机仍计费
即将到期 (≤30d)
{{ ecsOpt.summary.count_expiring || 0 }}
确认续费 / 降配
已过期未处理
{{ ecsOpt.summary.count_expired || 0 }}
尽快续费或释放
规格过大
{{ ecsOpt.summary.count_oversized || 0 }}
CPU 长期低于 15%
老代规格
{{ ecsOpt.summary.count_old_gen || 0 }}
迁新代约省 15-25%
公网带宽闲置
{{ ecsOpt.summary.count_bw_over || 0 }}
降到 1M 或改按流量
按区域汇总(可省金额倒序)
命中实例(共 {{ (ecsOpt.instances||[]).length }},按风险倒序)
{{ row.instance_name || '(未命名)' }}
{{ row.instance_id }}
{{ row.instance_type }}
{{ row.cpu }}c{{ Math.round(row.memory/1024) }}G · {{ row.private_ip }}{{ row.public_ip ? ' / ' + row.public_ip : '' }}
{{ row.days_to_expire<0 ? '已过期 ' + Math.abs(row.days_to_expire) + 'd' : row.days_to_expire + 'd 到期' }}
扫描时间:{{ ossOpt.scanned_at }} · 数据来源:oss_buckets 表(每天 cron 同步)+ 30 天云监控访问指标
本月费用
¥{{ Number(ossOpt.summary.monthly_fee||0).toLocaleString() }}
近 3 月均值
总 Bucket / 总存储
{{ ossOpt.summary.total_buckets || 0 }} / {{ formatGB(ossOpt.summary.total_gb) }}
Standard {{ formatGB(ossOpt.summary.standard_gb) }}
⚠ 公开访问 Bucket
{{ ossOpt.summary.count_public || 0 }}
ACL=public-read
未完成碎片
{{ formatGB(ossOpt.summary.multipart_gb) }}
{{ ossOpt.summary.count_fragments || 0 }} 个 bucket 命中
30 天出公网
{{ formatGB(ossOpt.summary.egress_30d_gb) }}
访问活跃度参考
📊 近 12 个月 OSS 月度成本(账单摊销)
重点优化指标
极冷 Standard 数据
{{ ossOpt.summary.count_coldest || 0 }}
密度<0.1 → 转 DeepColdArchive 省 90%+
温冷 Standard 数据
{{ ossOpt.summary.count_to_warm || 0 }}
密度<10 → 转 IA / ColdArchive
未完成 Multipart
{{ ossOpt.summary.count_fragments || 0 }}
配生命周期 7 天清理碎片
公开读 Bucket
{{ ossOpt.summary.count_public || 0 }}
数据安全风险,逐个核对
30 天无访问
{{ ossOpt.summary.count_inactive || 0 }}
无 GET / PUT,确认是否还在用
DeepCold 容量
{{ formatGB(ossOpt.summary.deep_cold_gb) }}
已经在最便宜档
💡 降本建议(来自定时分析任务)
Bucket 详情(按风险分倒序,仅显示前 100)
查询命名空间 / 服务 / 配置中...
集群
{{ mseDetail.data.cluster.cluster_id }}类型 {{ mseDetail.data.cluster.cluster_type }} {{ mseDetail.data.cluster.cluster_version }}
节点 {{ mseDetail.data.cluster.instance_count }}
地域 {{ mseDetail.data.cluster.region_id }}
命名空间数 {{ mseDetail.data.namespaces.length }}
{{ ns.namespace_name }}
{{ ns.namespace_id || 'public' }}
📡 注册到此 Nacos 的客户端机器(共 {{ (ns.clients||[]).length }} 个 IP)
{{ row.ip }}{{ row.port ? ':' + row.port : '' }}
{{ row.ecs_id }}
{{ row.ecs_name }}
📦 注册的服务(按命中率/服务名识别业务)
{{ row.name }}
⚙️ Nacos 配置项(点「查看」看正文,能找到挂的 DB/Redis/OSS 等下游资源)
{{ row.data_id }}
加载中...
DataID:复制
{{ mseConfig.dataId }}
· Group:{{ mseConfig.group }}
· App:{{ mseConfig.appName || '-' }}
· 类型:{{ mseConfig.type || '-' }}
· {{ mseConfig.content || '(空配置)' }}
💡 这份配置里通常会出现:
jdbc:mysql://...(数据库)、redis-host: ...、oss endpoint、kafka brokers 等下游资源地址 —— 找这些就能摸清应用的家底