{{ pageTitle }}
同步中... 🔄 手动刷新数据
{{ user.nickname || user.username }}({{ user.role }}) 退出
将依次执行:ECS / ActionTrail / RDS / SLB / 磁盘 / OSS / 证书 / RAM / 账单 / 闲置分析

耗时约 3-8 分钟,期间可关闭对话框,后台继续跑。

{{ sync.log || '(还未开始)' }}
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 条操作审计事件(点击查看完整审计)
查询 重置 {{ ecs.expiring }} 天内到期 共 {{ ecs.total }} 台
采样窗口(分钟): 🔄 分析 覆盖 {{ aisearchLog.data.window.from }} ~ {{ aisearchLog.data.window.to }} · 请求 {{ aisearchLog.data.sampled.requests }} · 独立IP {{ aisearchLog.data.sampled.unique_ip }}
{{ aisearchLog.error }}
{{ aisearchLog.data.note }}

🛡 安全特征命中

未发现攻击特征(扫描/注入/路径穿越等) {{ h.sig }} × {{ h.count }}

📊 Top IP 访问频率

🚨 疑似扫描(访问最多不同接口)

📋 Top 接口路径

🧭 Top User-Agent + 方法

{{ m.method }}: {{ m.count }}
仅看闲置 查询 导出 CSV 共 {{ idle.total }} 台闲置
🔍 重新扫描 读缓存 扫描时间:{{ slbIdle.data.scanned_at }} {{ slbIdle.data.from_cache ? '(走缓存,30 分钟有效)' : '(实时,耗时 ' + slbIdle.data.elapsed_sec + 's)' }}
正在扫描 {{ slbIdle.data ? slbIdle.data.total_slbs : '所有' }} 个 SLB 的监听器和后端服务器组...
每个 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 }}
用户自建
类别分布
{{ c }} × {{ n }}
闲置 SLB 列表(按月费降序)
⚠ 扫描失败 ({{ slbIdle.data.errors.length }})
{{ slbIdle.data.errors.join('\n') }}
💡 月费按性能保障型公开价估算(s1.small ¥670/月起)。"可释放"判定基于名字模式(ServiceMesh* / MseGatewaySlb-* / ManagedK8SSlb* / k8s/* 都是 K8s 自动建的)
🔍 刷新 共 {{ idleEip.data.total }} 个 EIP,其中 {{ idleEip.list.length }} 个未绑定(每个约 ¥50/月,估算月浪费 ¥{{ idleEip.list.length * 50 }}
🔍 刷新 GB 起,30 天 0 访问 {{ idleOss.list.length }} 个闲置 bucket,共 {{ Number(idleOss.totalGb).toLocaleString() }} GB
🔍 刷新 CDN {{ idleCdn.cdnList.length }} 个 offline · DCDN {{ idleCdn.dcdnList.length }} 个 offline
CDN({{ idleCdn.cdnList.length }} 个 offline)
DCDN({{ idleCdn.dcdnList.length }} 个 offline)
🔍 刷新 总 {{ idleLive.total }} 个域名 · {{ idleLive.list.length }} 个非 online 状态(offline / configuring 等)
🔍 刷新 总 {{ idleAck.total }} 个集群 · {{ idleAck.list.length }} 个闲置嫌疑
🔍 刷新 总 {{ idleMse.total }} 个集群 · {{ idleMse.list.length }} 个闲置嫌疑
🔍 刷新 总 {{ idleVpc.total }} 个 VPC · {{ idleVpc.list.length }} 个孤立 VPC(无任何资源关联)
🔍 刷新 总 {{ idleNat.total }} 个 NAT · {{ idleNat.list.length }} 个闲置嫌疑
🔍 刷新 总 {{ idleVod.total }} 个域名 · {{ idleVod.list.length }} 个非 online 状态
查询 导出 CSV 共 {{ trail.total }} 条
远程读取 ECS 上的日志文件(基于云助手)
读取 导出 TXT 📁 扫描 /var/log
{{ p }}
{{ logs.error }}
{{ logs.content }}
当前路径: {{ seg.label }} ⬆ 上一级 🔄 重扫
⚠ {{ logScan.error }}
共 {{ logScan.entries.length }} 条 · {{ logScan.entries.filter(e=>e.type==='dir').length }} 目录 · {{ logScan.entries.filter(e=>e.type==='file').length }} 文件
批量命令执行(基于云助手)
指定实例 按标签匹配 = Linux Shell Windows Bat Windows PowerShell 超时 / 同步等待秒数 执 行

执行结果

{{ 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 }})
系统事件明细(实例重启 / 磁盘故障 / 系统维护等)
正在告警中的资源(共 {{ cmsActive.total }})
阿里云账号 + 新增账号
{{ ({idle:'闲置分析阈值', alert:'告警通知', regions:'采集地域'})[group] || group }}
保存设置
查询 共 {{ rds.total }} 个实例
🌊 OceanBase Cloud 来源:OB Cloud 自营 API (api-cloud-cn.oceanbase.com) 🔄 同步实例 刷新
共 {{ 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 }}
📋 资源列表 🎯 降本优化{{ obc.opt && obc.opt.summary && obc.opt.summary.monthly_savings_total ? ' (月省 ¥' + Number(obc.opt.summary.monthly_savings_total).toLocaleString() + ')' : '' }}
扫描中...
开始扫描
查询 闲置 SLB 扫描入口已移至 业务治理 → 闲置分析 · 共 {{ slb.total }} 个实例
仅看公开读 Bucket(高风险) 刷新
显示 天内到期 查询 查看全部 显示已处理 立即刷新证书数据 + 用 Certbot 签发新证书 已处理 ({{ dismissed.count }}) 共 {{ cert.list.length }} 项
这里展示所有「处理」过的证书/域名。撤销处理后,它们会重新出现在到期列表里。
⚡ 快捷方式:仅上传到证书服务 (CAS)
如果你的网关是 MSE / Higress、或者不确定怎么自动部署,建议直接上传到 CAS,然后到对应控制台手动选用。
📤 上传到 CAS
— 或 — 继续走自动部署到 ECS:
选择目标 ECS(共 {{ ecsDeploy.backends.length }} 台后端)
{{ b.instance_id }} {{ b.instance_name }} {{ b.region_id }} {{ b.public_ip || b.private_ip }} {{ b.status }}
nginx 文件(写到本地路径 + reload) K8s Secret(kubectl 创建/更新 TLS Secret)
{{ ecsDeploy.results.message }}
{{ r.instance_id }} {{ r.status }} exit={{ r.exit_code }}
{{ r.output }}
正在从阿里云 DNS / Cloudflare / crt.sh 发现子域名...
正在探测:{{ rowProbe.progressDone }} / {{ rowProbe.progressTotal }} 个
共 {{ rowProbe.results.length }} 个 最新 {{ rowProbe.results.filter(r=>r.ok && !r.needs_update).length }} 需更新 {{ rowProbe.results.filter(r=>r.needs_update).length }} 失败 {{ rowProbe.results.filter(r=>!r.ok).length }} 数据来源:{{ rowProbe.sourcesText }} 只看需更新
📜 本服务器 certbot 已签发证书(用于复制部署到 ECS / 上传到 CAS)
查看 / 加载证书内容 📤 上传到证书服务 (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'
{{ rowProbe.error }}
🔍 线上 SSL 部署探测(通过 HTTPS 握手获取该域名当前实际证书)
💡 用途:检测「证书已经签新了,但二级域名解析不在 CDN,所以 CDN 那边新证书 ≠ 实际线上的证书」。逐个域名做 TLS 握手,把现场指纹 + 到期日和数据库里最新证书比对。
自动发现子域名 从证书库导入 {{ probe.discoverInfo }} 开始探测 ({{ probe.domains.split('\n').filter(x=>x.trim()).length }} 个)
共 {{ probe.results.length }} 个 成功 {{ probe.results.filter(r=>r.ok).length }} 失败 {{ probe.results.filter(r=>!r.ok).length }} 需更新 {{ probe.results.filter(r=>r.needs_update).length }} 只看需更新
RSA 2048(推荐,兼容 SLB/CLB) ECDSA P-256(更小更快,但 SLB 不支持)
+ 添加域名
支持通配符(*.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('、') }}
仅看高风险(>90天)
磁盘总数
{{ snap.summary.total_disks||0 }}
未覆盖磁盘
{{ snap.summary.uncovered||0 }}
覆盖率
{{ snap.summary.coverage_pct||0 }}%
仅看未覆盖(>7天无快照) 刷新
📊 大数据各项目费用(摊销视角,包年包月已按月分摊) 刷新 期间合计 ¥ {{ Number(bigdata.data.grand_total||0).toLocaleString('zh-CN',{minimumFractionDigits:2,maximumFractionDigits:2}) }}
· 金额取摊销视角(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 }})
📨 发送测试告警 刷新 共 {{ alertlog.total }} 条
查询 共 {{ nat.list.length }} 个 NAT 网关
仅看闲置(未绑定 = 烧钱) 查询 共 {{ eip.list.length }} 个
CDN: {{ cdnFiltered.length }}/{{ cdn.cdnList.length }} | DCDN: {{ dcdnFiltered.length }}/{{ cdn.dcdnList.length }}
最近 刷新 查看 4xx/5xx 排行 总流量 {{ fmtBytes(cdnUsage.summary.sum_bytes) }} | 总请求 {{ Number(cdnUsage.summary.sum_access||0).toLocaleString() }}
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 }}
HTTP 状态码 / 错误率排行(按 4xx+5xx 错误率倒序)
列出日志 {{ cdnLog.list.length }} 个日志文件 / 总 {{ fmtBytes(cdnLog.totalSize) }}
{{ 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
产品: CDN DCDN 操作: 刷新 URL 刷新目录 预热 URL 🔄 刷新配额
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 }} 条
最近任务({{ cdnRefresh.tasks.length }}) 🔄 刷新
时间范围: 1 天 7 天 30 天
总流量
{{ 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 }}
无需升级
每集群明细(按风险分降序)
分析时间:{{ ackOpt.data.analyzed_at }} · 估算说明:EOL 集群按 ¥3500/节点/年(运维风险 + 安全合规),即将停 ¥1500,支持中 ¥500
扫描节点中...
运行中
{{ 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 }}
💡 优化建议
{{ t.category }} {{ t.desc }} ¥{{ Number(t.save).toLocaleString() }}/年
📦 节点池分布
🖥 节点规格 Top 5
{{ t.type }} × {{ t.count }}
🌐 关联 SLB(K8s Service / Ingress 自动建)
业务标签: {{ b }}
📋 业务识别(多源关键字)
来源 关键字 出现次数 附加信息
{{ {'node-tag':'节点tag','slb-svc':'K8s Service','slb-cluster-alias':'K8s集群别名','node-name':'节点名','slb-name':'SLB名'}[cl.source] || cl.source }} {{ 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() }}

🔁 重复执行 SQL Top 10 ({{ dwRealSql.bizdate }} · 按 signature 聚合) 物化中间表可降本

💰 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 天后到期的分区/记录才会被自动清理。建议先对单表试运行。
📋 复制到剪贴板 💾 下载 .sql 文件
{{ 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 }}

业务流程列表(按僵尸评分降序)

📋 复制 💾 下载 .md 🔄 重新生成 冷数据月费 ¥{{ dwReport.summary.cold_monthly_cost.toLocaleString() }} · 死亡节点 {{ dwReport.summary.dead_nodes_count }} · 僵尸业务 {{ dwReport.summary.zombie_biz_count }} · 已扫表 {{ dwReport.summary.tables_scanned.toLocaleString() }}
{{ 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 }}

💰 Owner 周费用排行 (近 7 天)

🔁 重复执行 SQL Top 20 · {{ dwRealSql.bizdate }} (按 signature 聚合, 同 SQL 多次跑)

📌 执行 ≥10 次的 SQL 强烈建议物化为中间表,下游一律读中间表(一次扫,多次读零成本)

🔥 输入表扫描热度 Top 20 (近 7 天,按 ¥ 排)

📌 被反复扫的大表是降本重点 —— 可考虑物化为汇总表,下游 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 用户 wangweicdn → 给"开发"或"运维"角色
namespaces: {{ n }} · 共 {{ ws.deploy_count }} 个 deployment
⚠ 全部 deployment 加起来的 CU 数 > workspace 配额 → 说明资源用满;如果有大量 deploy 但 running=0 → 浪费

SQL 计算热榜(耗时 + 错误,非真实费用

⚠ MaxCompute SQL 按扫描量计费,本榜按执行时长排。两者部分相关但不等价。
要拿真实费用排序需查 INFORMATION_SCHEMA.TASKS_HISTORY.cpu_cost / input_bytes, 需要 MaxCompute 读权限(当前 AK 没有,需让运维加 odps:Submit on db_warehouse)。 {{ dwShowTrueCostSql ? '隐藏' : '查看' }} 真·最贵 SQL 查询脚本(让数据团队跑)
-- ==========================================
-- 真·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 }})

❌ 错误次数 Top {{ dwJobRank.errorRank.length }} (近期)

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-tagbusiness-tag → 域名前缀类
筛选模式: 缺 business 类 tag(默认) 完全无 tag 刷新 共 {{ untagged.total }} 个未打标资源
💡 去阿里云控制台给这些资源补打 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.category }} {{ 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 信息。请通过以下链接管理:

打开 Bailian API 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 || '从未' }}
状态: 待处理 已完成 已忽略 已自动消失 全部 {{ rec.loading ? '加载中...' : '🔄 刷新' }}
百度云 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.category }}{{ t.description }}年省约 ¥{{ Number(t.est_save_yearly).toLocaleString() }}
💡 {{ t.suggestion }}
总磁盘
{{ bdCds.summary.total }}
已挂载
{{ bdCds.summary.in_use }}
未挂载
{{ bdCds.summary.available }}
总容量
{{ bdCds.summary.total_size_gb }} GB
查询 🔄 同步
💡 优化建议
{{ t.category }}{{ t.description }}
💡 {{ t.suggestion }}
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
查询 🔄 同步 显示最新 2000 条
💡 优化建议
{{ t.category }}{{ t.description }}
💡 {{ 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() }}
标准存储参考价
查询 🔄 同步列表 📊 扫描容量 扫描走 list-objects 分页累加;每桶上限 10 万对象,超出标记 truncated
💡 优化建议
{{ t.category }} × {{ t.count }}{{ t.description }}
💡 {{ t.suggestion }}
总域名
{{ bdCdn.summary.total }}
运行中
{{ bdCdn.summary.running }}
已停止
{{ bdCdn.summary.stopped }}
未启用 HTTPS
{{ bdCdn.summary.no_https }}
查询 🔄 同步
💡 优化建议
{{ t.category }}{{ t.description }}
💡 {{ t.suggestion }}
时间范围: 1 天 7 天 30 天 加载中...
总流量
{{ 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 }}
查询 🔄 同步 先在 凭据配置 填好 SecretId/SecretKey 再点同步
💡 优化建议
{{ t.category }} {{ t.description }} 年省约 ¥{{ Number(t.est_save_yearly).toLocaleString() }}
💡 {{ t.suggestion }}
总域名
{{ txCdn.summary.total }}
online
{{ txCdn.summary.online }}
offline
{{ txCdn.summary.offline }}
未启用 HTTPS
{{ txCdn.summary.no_https }}
海外/全球
{{ txCdn.summary.overseas }}
查询 🔄 同步
💡 优化建议
{{ t.category }}{{ t.description }}
💡 {{ 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() }}
查询 🔄 同步 {{ p }} × {{ n }}
💡 优化建议 总年节省可达 ¥{{ Number(txTeo.total_save).toLocaleString() }}
{{ t.category }} × {{ t.count }}{{ t.description }}年省 ¥{{ Number(t.est_save_yearly).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() }}
标准存储均价
查询 🔄 同步列表 📊 扫描容量 容量扫描每桶 1-3 个 API 调用,11 个桶约 30 秒
地域分布: {{ r }} × {{ n }}
💡 优化建议
{{ t.category }} × {{ t.count }}{{ t.description }}月省 ¥{{ t.monthly_save }}
💡 {{ t.suggestion }}
又拍云有两套独立的凭据:
  • USS 操作员(必填)— 控制台 → 服务名/操作员管理 创建一个操作员,设密码。用来查 bucket 用量、文件操作。
  • 账号 username/password(选填)— 又拍云控制台主账号,用来调控制台开放 API(OAuth Token,覆盖 CDN/域名/账单)。文档不公开,参数可能需要根据真实返回错误调整。
USS 操作员凭据(必填)
已配置:{{ upyun.creds.has_operator_password ? '✓ 已存(加密)' : '未配置' }}
💾 保存 USS 凭据 ⚠ 你输入了密码但还没保存
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 || '永不过期' }}
{{ upyun.creds.has_token ? '🔄 重新创建 Token' : '➕ 创建 Token' }} 🗑 清除 Token(本地) 🔍 测试连接
⚠ 又拍云每账号最多 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 含 statsglobal scope。
❌ {{ upyunFlow.error }}
汇总({{ upyunFlowList.length }} 行)
原始响应
{{ JSON.stringify(upyunFlow.data, null, 2) }}
🔄 刷新 数据源:本地 upyun_buckets 表(先在「USS 存储」页点 📥 自动发现服务)
总 Bucket
{{ upyunAllDomains.data.total_buckets || 0 }}
总域名数
{{ upyunAllDomains.data.total_domains || 0 }}
🔍 查询 调用 GET /v2/statistics,需要 OAuth Token 含 statsglobal scope
❌ {{ upyunStat.error }}
原始响应(结构待你确认后再做表格化)
{{ JSON.stringify(upyunStat.data, null, 2) }}
点上方 "🔍 查询" 按钮拉取
🌋 火山引擎 数据来源:火山引擎 OpenAPI (open.volcengineapi.com) 🔄 强制刷新 仅刷新缓存
扫描时间:{{ volc.data.scanned_at }} {{ volc.data.from_cache ? '(走缓存)' : '(实时)' }} ⚠ {{ volc.data.errors.length }} 个接口报错
加载中...
{{ volc.error }}
🎯 火山引擎 降本扫描 规则:环比异常 / Top 高消费 / 孤儿 VPC / AI 用量暴涨 🔄 强制刷新 仅刷新缓存
扫描时间:{{ volcOpt.data.scanned_at }}
扫描中...
{{ volcOpt.error }}
📚 火山方舟资源 Endpoints 是方舟所有调用消费的入口(账单"豆包/方舟知识库"承载在这) 🔄 强制刷新 仅刷新缓存
扫描时间:{{ volcArk.data.scanned_at }} 📝 {{ volcArk.data.note }}
加载中...
{{ volcArk.error }}
所有管理员账号(强制启用 2FA) + 新增管理员 刷新
admin(最高权限) operator(操作) viewer(只读)
运行中 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 分钟);扫完刷新即可。
查询
区域: 查 SLB 7天流量 查 ECS 闲置(慢) 🔍 开始扫描 仅刷新缓存
最近扫描:{{ 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 }}
全部 仅 High 仅 Medium 仅 Low
只看有风险的
基本信息
{{ topo.detail.row.name }} {{ topo.detail.row.cluster_id }} {{ topo.detail.row.version }} {{ topo.detail.row.state }} {{ topo.detail.row.vpc_id }} {{ topo.detail.row.service_cidr }} {{ topo.detail.row.real_worker_count }} {{ topo.detail.row.virtual_node_count }} {{ topo.detail.row.created }} {{ (topo.detail.row.vswitch_ids||[]).join(', ') }}
节点列表
基本信息
{{ topo.detail.row.name }} {{ topo.detail.row.lb_id }} {{ topo.detail.row.address }} ({{ topo.detail.row.address_type }}) {{ topo.detail.row.spec }} {{ topo.detail.row.vpc_id || '-' }} {{ topo.detail.row.vswitch_id || '-' }} {{ topo.detail.row.master_zone }} / {{ topo.detail.row.slave_zone }} {{ topo.detail.row.created }} K8s 控制器 MSE 网关 手动 {{ topo.detail.row.health_up }} up / {{ topo.detail.row.health_down }} down
近 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 资源(按月成本倒序)
全部 SLB ECS EIP 共享带宽包 仅显示前 50
📋 优化扫描 🗑 孤儿清理{{ slsOrphansCountLabel }}
区域: 🔍 强制扫描 仅刷新缓存
扫描时间:{{ 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 }},按风险倒序)
全部 仅高危 仅中危 有风险 清除 project 过滤: {{ slsOpt.projFilter }} 指标筛选: {{ slsMetricLabel[slsOpt.metricFilter] }} · 命中 {{ filteredSlsLogstores.length }} 仅显示前 100
💡 修改 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)。
🗑 孤儿 Logstore(单 logstore 删,共 {{ (slsOrphans.orphan_logstores||[]).length }})
💡 这些 logstore 挂在还在用的共享 project 下(如 ARMS xtrace),名字带已删集群 ID。 只删 logstore,不要删 project! 点「📋 检视」进 SLS 控制台 logsearch 页 → 左侧栏鼠标悬停 logstore → ⋯ 菜单 → 删除。
({{ slsNotify.total }} 条)
全部 启用 禁用 🔍 强制刷新 🔧 接收端配置 扫描时间: {{ slsAlert.scanned_at }} {{ slsAlert.from_cache?'(走缓存)':'(实时)' }}
告警规则总数
{{ slsAlert.stats.total || 0 }}
已启用
{{ slsAlert.stats.enabled || 0 }}
已禁用
{{ slsAlert.stats.disabled || 0 }}
通知方式
{{ slsAlertNotifyTypes }}
告警规则列表(共 {{ filteredSlsAlerts.length }})
时间范围: 🔄 刷新 🔧 接收端配置
总通知数({{ slsNotify.days }} 天)
{{ slsNotify.total }}
firing
{{ slsNotifyStatusCount('firing') }}
resolved
{{ slsNotifyStatusCount('resolved') }}
High/Critical
{{ slsNotifySeverityCount(['Critical','High']) }}
通知日志(时间倒序,共 {{ slsNotify.rows.length }} / {{ slsNotify.total }})
结果太多,仅显示前 {{ slsNotify.rows.length }} 条 / 共 {{ slsNotify.total }} 条 — 请用筛选条件缩小范围
加载中...
通知 webhook
完整 configuration(JSON)
{{ JSON.stringify(slsAlert.detail.alert.configuration, null, 2) }}
加载中...
Webhook URL(粘贴到阿里云 SLS)
复制
请求方法:POST
Token:{{ slsAlertReceiver.token }}
阿里云 SLS 操作步骤
  1. 打开 SLS Webhook集成 ↗
  2. 点「新建」→ 类型选 通用 Webhook(不是钉钉!)→ 请求方法 POST → 请求地址粘贴上面 URL → 保存
  3. 打开 行动策略 ↗
  4. 编辑现有的策略 → 在「通知渠道」里 追加 上一步新建的 webhook(保留原有钉钉,不要删!)→ 保存
  5. 等下一次告警触发,「📥 自建归档」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 行(可能问题已自愈)
跑过滤部分:{{ slsLogDrill.data.filter }}
📥 CSV 📥 JSON
无命中日志(窗口已自愈或告警 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 }},按风险倒序)
全部 仅高危 仅中危 仅显示前 100
🔄 重新扫描
扫描时间:{{ 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)
全部 有风险 仅公开 仅冷数据候选 仅有碎片
🔄 刷新 共 {{ vpc.total }}
🔄 刷新 共 {{ fc.total }}
🔄 刷新 共 {{ pai.total }} 个工作空间
🔄 刷新 共 {{ cen.total }} 个 CEN 实例
🔄 刷新 共 {{ vod.total }} 个 VOD 加速域名
🔄 刷新 共 {{ live.total }} 个 LIVE 加速域名
🔄 刷新 共 {{ mse.total }}
查询命名空间 / 服务 / 配置中...
集群 {{ 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 }}
📡 注册到此 Nacos 的客户端机器(共 {{ (ns.clients||[]).length }} 个 IP)
📦 注册的服务(按命中率/服务名识别业务)
⚙️ Nacos 配置项(点「查看」看正文,能找到挂的 DB/Redis/OSS 等下游资源)
加载中...
DataID:{{ mseConfig.dataId }} · Group:{{ mseConfig.group }} · App:{{ mseConfig.appName || '-' }} · 类型:{{ mseConfig.type || '-' }} · 复制
{{ mseConfig.content || '(空配置)' }}
💡 这份配置里通常会出现:jdbc:mysql://...(数据库)、redis-host: ...oss endpointkafka brokers 等下游资源地址 —— 找这些就能摸清应用的家底
总账单 按产品
{{ meta.row.instance_id }}
{{ meta.row.instance_name || '(未命名)' }}
Workspace:{{ wsEdit.row.workspace_id }}
累计消费 ¥{{ Number(wsEdit.row.total||0).toLocaleString() }},使用 {{ wsEdit.row.model_cnt }} 个模型

基础信息

{{ ecsDetail.instance.instance_id }} {{ ecsDetail.instance.status }} {{ ecsDetail.instance.region_id }} {{ ecsDetail.instance.zone_id }} {{ ecsDetail.instance.instance_type }} {{ ecsDetail.instance.cpu }}核 / {{ ecsDetail.instance.memory }}MB {{ ecsDetail.instance.os_name }} {{ ecsDetail.instance.instance_charge_type }} {{ ecsDetail.instance.private_ip }} {{ ecsDetail.instance.public_ip }} {{ ecsDetail.instance.expired_time || '-' }} {{ t.TagKey || t.Key }}={{ t.TagValue || t.Value }}

🔗 关联资源(同 VPC / 同安全组)

未发现同 VPC 关联资源

🔌 监听端口扫描 {{ portsBox.scanning ? '扫描中...' : (portsBox.scanAt ? '重新扫描' : '开始扫描') }}

云助手在该机器上执行只读命令 ss -tlnp,约 5-10 秒返回。 · 上次扫描: {{ portsBox.scanAt }}
{{ portsBox.error }}
该机器未发现监听端口
还未扫描,点上面"开始扫描"