mcpField
H
huawei-cloud-cdn-traffic-anomaly-analysis

huawei-cloud-cdn-traffic-anomaly-analysis

github.com/huaweicloud云与 DevOps59153 次安装2 天前更新
代码仓库

关于 huawei-cloud-cdn-traffic-anomaly-analysis

面向华为云 CDN 运维人员的只读分析技能,根据计费模式选择指标,并将域名流量与三个月基线比较。它通过日级数据识别绝对阈值异常和相对流量激增。

主要功能

  1. 01识别计费模式并选择指标
  2. 02按日分析 CDN 域名流量
  3. 03与三个月基线比较
  4. 04检测绝对及相对异常
  5. 05生成含日明细的报告

适用场景

  1. 01排查域名是否疑似流量盗刷
  2. 02检查近期带宽是否激增
  3. 03将当前流量与历史水平比较

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/huaweicloud/huaweicloud-skills --skill huawei-cloud-cdn-traffic-anomaly-analysis

安装后在 Claude Code 中输入/huawei-cloud-cdn-traffic-anomaly-analysis确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.markdownlint.json
references/
acceptance-criteria.md
cli-installation-guide.md
dataflow-diagram.md
iam-policies.md
prohibited-operations.md
related-apis.md
task-domain-validation.md
task-list-domains.md
task-query-metrics.md
task-show-charge-modes.md
task-threshold-judgment.md
task-timestamp-calculation.md
troubleshooting.md
verification-method.md
scripts/
cdn_timestamp.py

详细介绍

CDN 流量异常分析

概述

此技能通过查询计费方式及对应的流量/带宽指标,分析 CDN 域名流量异常。它会根据账户的计费方式(bw_95、flux、combine_flux、bw、bw_peak)自动确定适用的指标,查询可配置时间范围内的历史数据,建立 3 个月的基线进行对比,并结合绝对阈值和相对于基线的偏差,识别潜在的流量盗刷或滥用。

主要功能:

  • 自动检测计费方式并选择指标
  • 支持所有计费方式:bw_95、flux、combine_flux、bw、bw_peak
  • 域名验证与流量分析
  • 3 个月基线分析——检测相较历史常态的流量激增
  • 双阈值异常检测——绝对阈值 + 相对基线对比
  • 三级结论:正常/关注(相对激增)/异常(超过绝对阈值)
  • 提供全面的分析报告,包含基线对比和每日明细

工具:hcloud CLI(KooCLI)
时间戳工具:内置工具 scripts/cdn_timestamp.py
分析范围:当前窗口为过去 7 天(可配置);基线为过去 3 个月
核心原则:只查询与计费方式对应的指标;高效利用 API 功能,以尽可能少的 API 调用覆盖当前窗口和基线窗口

触发条件

当用户请求符合以下任一模式时使用此技能(用户层级的示例输入):

用户输入示例触发意图
“example.com 的流量是否正在被盗刷或滥用?”流量盗刷检测
“分析过去 7 天 CDN 带宽是否异常激增”带宽异常分析
“将过去 3 个月的流量与当前时段对比,检查是否存在异常”3 个月基线对比
“检查我们账户的 CDN 计费方式和域名列表”计费方式/域名查询
“为什么 example.com 的 95 百分位带宽这么高?”95 百分位带宽分析
“流量异常/带宽异常/CDN 流量分析”英文触发词

此外,frontmatter description 中列出的触发短语也会触发此技能(例如,CDN流量异常、流量盗刷、带宽异常、traffic anomaly)。

相近场景/请勿使用

以下情况请勿使用此技能:

  • ❌ 任何 CDN 写入操作:创建/删除域名、修改域名配置、刷新/预热、启用/禁用域名、更改计费方式等——此技能严格只读,必须拒绝此类请求(请参阅 references/prohibited-operations.md 中列出的全部 55 项禁止操作)
  • ❌ 需要按小时或更细粒度进行的流量分析——此技能按日粒度工作(interval=86400)
  • ❌ 非 CDN 服务的流量/带宽分析(例如 ECS、ELB、OBS 流量)——此技能仅涵盖 CDN 域名
  • ❌ 运维任务,例如更改域名配置、管理证书或配置防盗链
  • ❌ 缺少 hcloud 凭证或 CDN 权限的场景(请先完成身份验证部分中的凭证检查)
  • ❌ 跨境/海外区域分析——CDN CLI 仅接受 cn-north-1 和 ap-southeast-1;其他区域会返回 [USE_ERROR]

⛔ 禁止的操作(安全限制)

此技能严格禁止所有非 GET(写入/修改/删除)CDN 操作,无论用户提出何种请求。

共计:55 项禁止的操作(24 项 POST + 25 项 PUT + 6 项 DELETE)。

如需查看全部 55 项禁止的非 GET 操作及其风险说明,请参阅 references/prohibited-operations.md。

具有代表性的禁止操作(完整列表请参阅参考文档):

禁止的操作API/命令原因
❌ 创建域名CreateDomain (v1/v2), CreateDomainByDuplicate写入操作;会创建生产资源
❌ 删除域名DeleteDomain (v1/v2)不可逆;会从 CDN 中移除域名
❌ 修改域名配置UpdateDomainFullConfig (v1/v2), UpdateDomainOrigin, UpdateCacheRules 等写入操作;可能影响生产流量
❌ 启用/禁用域名EnableDomain (v1/v2), DisableDomain (v1/v2)会影响生产流量
❌ 修改计费模式SetChargeModes会产生财务影响;需要明确授权
❌ 创建刷新/预热任务CreateRefreshTasks (v1/v2), CreatePreheatingTasks (v1/v2)写入操作;会影响边缘缓存
❌ 验证域名所有权VerifyDomainOwnerPOST 操作;会触发验证流程

如果用户请求执行禁止的操作,你必须拒绝并告知: “根据安全限制,此技能不允许执行写入/删除/修改操作。此技能仅用于流量分析,不提供写入功能。请使用 Huawei Cloud CDN 控制台,或手动运行 hcloud CLI 进行配置更改。references/prohibited-operations.md 中记录了 55 项禁止操作的完整列表。”

架构

CDN Traffic Anomaly Analysis
├── ShowChargeModes        (Query account billing mode)
├── ListDomains/v2         (List all CDN domains)
├── Domain Validation      (Verify target domain exists)
├── TimestampCalculation   (scripts/cdn_timestamp.py)
│   ├── Current window     (default 7 days, UTC+8 midnight)
│   └── Baseline windows   (3 × 30-day windows, non-overlapping)
├── QueryMetrics           (Based on billing mode)
│   ├── bw_95 → ShowBandwidthCalc
│   │   ├── Current: 1 call (7-day single aggregate)
│   │   └── Baseline: 3 calls (30-day aggregates each)
│   └── flux/bw → ShowDomainStats/v2 (stat_type=flux or bw)
│       ├── Current: 1 call (7-day window, interval=86400)
│       └── Baseline: 3 calls (30-day windows each, interval=86400)
└── ThresholdJudgment      (Dual-threshold: absolute + baseline-relative)
    ├── ⚠️ Anomalous: exceeds absolute threshold
    ├── 👀 Watch: exceeds baseline × multiplier (sub-threshold surge)
    └── ✅ Normal: neither threshold triggered
API 调用预算
计费模式API 调用次数速率限制预计耗时
bw_956(1 次计费 + 1 次域名 + 1 次当前值 + 3 次基准值)2/s (ShowBandwidthCalc)~3s
flux / bw6(1 次计费 + 1 次域名 + 1 次当前值 + 3 次基准值)15/s (ShowDomainStats)~1s

KooCLI 命令格式规范

所有 hcloud CDN 命令均遵循以下标准格式:

hcloud CDN <Operation> --cli-region=cn-north-1 [--parameter=value ...]

格式规则:

  • 服务名称:CDN(大写)
  • 操作名称:PascalCase(例如:ShowChargeModes、ListDomains、ShowBandwidthCalc)
  • 区域参数:--cli-region=cn-north-1(必需,CDN 始终使用 cn-north-1)
  • 参数格式:--key=value(使用等号,不加空格)
  • 索引参数:--key.1=value1(用于数组参数)

示例:

# Correct
hcloud CDN ShowChargeModes --cli-region=cn-north-1 --product_type=base
hcloud CDN ListDomains/v2 --cli-region=cn-north-1 --page_size=100

# Incorrect (space instead of equals sign)
hcloud CDN ShowChargeModes --cli-region cn-north-1

前置条件

前置条件检查:需要 Huawei Cloud CLI(hcloud / KooCLI)>= 3.2.0 运行 hcloud version,确认版本 >= 3.2.0。如果尚未安装或版本过低,请参阅 references/cli-installation-guide.md 查看安装指南。

hcloud version

前置条件检查:需要 Python >= 3.8(用于时间戳计算) 运行 python --version,确认版本 >= 3.8。

python --version

前置条件检查:已配置 hcloud 凭证

执行 CDN 操作前,必须确认已配置 hcloud 凭证:

hcloud configure list

如果没有有效凭证,请停止操作并引导用户配置凭证。

⚠️ hcloud 参数格式要求

hcloud(KooCLI)的所有参数都必须使用 --param=value 格式(以等号连接);不支持以空格分隔的格式。

✅ 正确:hcloud CDN ShowChargeModes --cli-region=cn-north-1

❌ 错误:hcloud CDN ShowChargeModes --cli-region cn-north-1

⚠️ CDN API 区域要求

CDN 是一项全球服务(is_global=true)。CDN 的 hcloud CLI 仅接受 cn-north-1 和 ap-southeast-1(二者映射到同一端点 cdn.myhuaweicloud.com);使用 cn-north-4 会被 拒绝并返回 [USE_ERROR]。 建议:始终使用 cn-north-1。


身份验证

前置条件检查:需要 Huawei Cloud 凭证

安全规则(必须遵守):

  • 禁止读取、回显或打印 AK/SK 值

  • 禁止要求用户在对话中直接输入 AK/SK

  • 禁止使用 hcloud configure set 传递明文凭证值

  • 禁止接受用户在对话中直接提供的 AK/SK

  • 仅允许从环境变量或已配置的 CLI 配置文件中读取凭证

⚠️ 重要:处理用户提供的凭证

如果用户尝试直接提供 AK/SK(例如:“我的 AK 是 xxx,SK 是 yyy”):

  • 立即停止——不要执行任何命令
  • 礼貌地拒绝,并返回以下消息:
为保障账户安全,请勿在对话中直接提供 Huawei Cloud Access Key ID 和 Access Key Secret。

请使用以下任一安全方式配置凭证:

方法 1:交互式配置(推荐)
    hcloud configure
    # 按提示输入 AK/SK;凭证将安全地存储在本地配置文件中

方法 2:配置环境变量
    export HUAWEICLOUD_SDK_AK=<your-access-key-id>
    export HUAWEICLOUD_SDK_SK=<your-secret-key>

配置完成后,请重试您的请求。
  • 在凭证配置完成前,不要继续执行任何 Huawei Cloud 操作

检查 CLI 配置:

hcloud configure list

检查输出中是否包含有效配置(AK/SK、IAM 等)。

如果没有有效凭证,请在此处停止。


IAM 权限策略

确保 IAM 用户具有所需权限。详情请参阅 references/iam-policies.md。

最低所需权限:

  • cdn:*:query* — 此技能使用的所有 CDN 查询类操作(ListDomains/v2、ShowChargeModes、ShowDomainStats/v2、ShowBandwidthCalc)
  • cdn:configuration:queryDomains — 列出 CDN 域名(与通配符权限并列明确列出)
  • cdn:configuration:queryChargeMode — 查询计费模式(与通配符权限并列明确列出)

核心命令

此技能中使用的所有 hcloud CDN 命令速查:

命令用途关键参数
hcloud CDN ShowChargeModes --cli-region=cn-north-1 --product_type=base查询账户计费模式--service_area(可选)
hcloud CDN ListDomains/v2 --cli-region=cn-north-1 --page_size=100列出所有 CDN 域名--page_size、--page_number
hcloud CDN ShowBandwidthCalc --cli-region=cn-north-1 --domain_name=<domain> --calc_type=bw_95 --start_time=<ms> --end_time=<ms>查询 95 百分位带宽(当前 7 天或基准 30 天)--service_area
hcloud CDN ShowDomainStats/v2 --cli-region=cn-north-1 --domain_name=<domain> --stat_type=flux --interval=86400 --start_time=<ms> --end_time=<ms> --action=detail查询每日流量统计(针对 flux/bw 路径进行 1 次当前 7 天查询和 3 次 × 30 天基准查询)--stat_type、--interval、--service_area

注意:

  • 所有命令都必须指定 --cli-region=cn-north-1
  • 时间戳必须以毫秒为单位(例如 1785081600000)
  • 使用 scripts/cdn_timestamp.py 计算时间戳
  • 使用 scripts/cdn_timestamp.py --baseline 生成 3 个 × 30 天的基准时间窗口
  • ShowBandwidthCalc:最长查询范围为 31 天,只返回一个汇总值(不提供每日明细),调用频率限制为 2 次/秒
  • ShowDomainStats/v2:interval=86400(1 天)时,最长查询范围为 31~32 天——一次查询 97 天会失败并返回 CDN.0202;每天返回一个数据点;调用频率限制为 15 次/秒;基准查询必须拆分为 3 次 × 30 天

参数确认

执行分析前,请与用户确认以下参数:

参数必填说明默认值示例
domain_name是要分析的目标 CDN 域名无example.com
--days否当前窗口分析的天数714
--cli-region是华为云区域cn-north-1cn-north-1

用户确认清单:

  • 已提供目标域名,或已从域名列表中选定目标域名
  • 已确认分析时间范围(默认:当前窗口为过去 7 天)
  • 用户了解这是只读分析操作
  • 用户了解基准对比范围为过去 3 个月

核心工作流

开始任何分析步骤前,必须指定目标域名。

  • 如果用户未提供目标域名,请询问域名,并等待用户回复后再开始。
  • 仅当用户不知道域名或要求你查询域名时,才通过 hcloud CDN ListDomains/v2(步骤 2)列出账户的域名,并请用户选择一个。
  • 未经用户明确提供域名,绝不要开始分析:不要猜测域名,不要回退到示例域名或默认域名,也不要自行从列表中选择域名。
步骤 1:查询账户计费模式

通过 hcloud CLI 查询计费模式,以确定要分析的指标。

📄 详细步骤 → references/task-show-charge-modes.md

步骤 2:列出所有 CDN 域名(仅在用户要求查询域名时)

列出当前账户下所有在线 CDN 域名,然后请用户从列表中选择目标域名。

📄 详细步骤 → references/task-list-domains.md

步骤 3:验证域名

确认用户提供的域名存在于域名列表中。

📄 详细步骤 → references/task-domain-validation.md

步骤 4:计算时间戳

计算当前窗口(默认 7 天)和 3 个基准窗口(各 30 天、互不重叠)的时间范围,并按 UTC+8 午夜对齐。

📄 详细步骤 → references/task-timestamp-calculation.md

步骤 5:查询当前窗口指标

根据计费模式,查询当前窗口(7 天)的对应指标。

📄 详细步骤 → references/task-query-metrics.md

步骤 6:查询基线指标

根据计费模式,查询基线窗口(过去 3 个月)的对应指标。

  • bw_95:调用 ShowBandwidthCalc 3 次,每次覆盖一个互不重叠的 30 天窗口(API 的最大范围为 31 天)。两次调用之间暂停 0.6 秒,以遵守每秒 2 次调用的速率限制。
  • flux / bw:调用 ShowDomainStats/v2 4 次——1 次查询当前 7 天窗口(来自步骤 5),另 3 次查询 3 个 30 天基线窗口(interval=86400,按 UTC+8 午夜对齐)。 interval=86400 的 API 最大范围为 31–32 天,因此单次查询 97 天会失败(CDN.0202)。根据 3 个聚合后的 30 天窗口计算基线统计值(均值 / P95 / 最大值),与 bw_95 路径保持一致。

📄 详细步骤 → references/task-query-metrics.md

步骤 7:阈值判断

应用双重阈值逻辑:绝对阈值(硬性上限)+ 相对基线比较(流量激增检测)。生成三级分析报告。

📄 详细步骤 → references/task-threshold-judgment.md


阈值规则摘要

计费模式指标绝对阈值相对基线
bw_957 天 P95 带宽(bit/s)≥ 8 Gbps → ⚠️ 异常当前值 > baseline_max × 1.5 → 👀 关注
flux / combine_flux每日流量(Byte)任意一天 > 5 TB → ⚠️ 异常任意一天 > baseline_P95 × 1.5 → 👀 关注
bw / bw_peak每日峰值带宽(bit/s)任意一天 ≥ 3 Gbps → ⚠️ 异常任意一天 > baseline_P95 × 1.5 → 👀 关注

三级结论:

  • ⚠️ 异常 — 超过绝对阈值;是流量盗用的强烈信号
  • 👀 关注 — 未超过绝对阈值,但超过基线 × 1.5;可能存在值得调查的相对流量激增
  • ✅ 正常 — 未超过绝对阈值和相对阈值

无数据的域名(result: {} 或 value: 0)一律视为正常。


输出格式

每次分析都会生成统一的 CDN 流量异常分析报告。三个级别(⚠️ 异常 / 👀 关注 / ✅ 正常)的完整模板见 references/task-threshold-judgment.md——必须严格遵循这些模板。

报告结构约定(必填字段):

字段必填说明
分析时间✅分析时间戳
目标域名✅分析的域名
计费模式✅bw_95 / flux / combine_flux / bw / bw_peak
指标✅7-Day P95 Bandwidth / Daily Traffic / Daily Peak Bandwidth
当前窗口✅分析周期(默认 7 天)
基线统计✅过去 3 个月的 mean / P95 / max / 相对限值
当前值✅每日值(或单个聚合值)及相对于基线的偏差百分比
状态✅三级结论枚举值之一
结论✅判定结果 + 建议

状态枚举(必须且只能使用以下一种):

状态含义
⚠️ Anomalous超过绝对阈值;是流量盗用的强烈信号
👀 Watch低于绝对阈值,但高于基线 × 1.5;相对流量激增
✅ Normal未超过两个阈值

输出中禁止包含的内容(绝不可包含):

  • ❌ AK/SK、令牌或任何凭据(参见身份验证规则)
  • ❌ 原始 API 响应;仅包含解析或汇总后的值
  • ❌ 与所分析目标域名无关的域名或数据
  • ❌ 未经查询数据支持的推测性说法(例如“攻击者身份”)

故障模式

故障模式触发条件处理方式
没有有效凭据hcloud configure list 返回空配置或无效配置立即停止;引导用户完成“身份验证”部分的操作
未找到域名目标域名不在 ListDomains/v2 在线列表中停止;告知用户并列出可用域名(参见 task-domain-validation.md)
权限被拒绝API 返回权限错误验证 IAM 策略(iam-policies.md);向用户报告失败
超出速率限制ShowBandwidthCalc 限制为 2 次调用/秒在调用之间添加 sleep 0.6,然后重试(参见 troubleshooting.md)
查询范围过大单次查询超过 31 天(ShowBandwidthCalc)或超过 31–32 天(ShowDomainStats interval=86400,CDN.0202)将基线拆分为 3 个 30 天窗口;绝不进行单次 97 天查询
没有流量数据API 返回 result: {} 或 value: 0视为正常;在报告中注明数据为空
时间戳未对齐interval=86400 查询未与 UTC+8 午夜对齐始终使用 scripts/cdn_timestamp.py;手动设置时间戳容易出错
hcloud CLI 参数错误[USE_ERROR](例如,参数之间使用空格分隔、区域错误)验证 --key=value 格式和 --cli-region=cn-north-1

各故障模式的恢复策略: 重试(速率限制/暂时性错误,最多重试 2 次,并使用退避策略)→ 降级处理(拆分查询范围,使用可用数据)→ 报告失败(停止并向用户说明)。绝不伪造数据,也绝不使用无效结果继续处理。

输出前自检: 验证(1)计费模式与所查询的指标一致,(2)3 个基线窗口彼此不重叠,且与当前窗口不重叠,(3)阈值比较使用了正确的单位(bit/s 与 Byte)和方向(≥ 与 >)。


常见问题

问题答案
为什么 ShowBandwidthCalc 只返回一个值?这是预期行为:该 API 会返回查询时段内单个 P95 聚合值,不提供逐日明细,且最大查询范围为 31 天。要获取逐日数据,请使用 ShowDomainStats/v2。
为什么不能一次查询 97 天?ShowDomainStats/v2 的 interval=86400 最大查询范围为 31–32 天;单次查询 97 天会因 CDN.0202 而失败。基线必须拆分为 3 个互不重叠的 30 天窗口。
没有流量数据(result: {} / value: 0)的域名是否算异常?不算。没有数据的域名始终视为正常(参见“阈值规则摘要”);你可以在报告中注明该域名在查询时段内没有流量。
为什么始终建议使用 --cli-region=cn-north-1?CDN 是一项全球服务;CLI 仅接受 cn-north-1 和 ap-southeast-1(两者映射到同一端点),而 cn-north-4 会被拒绝([USE_ERROR])。
如果遇到速率限制错误怎么办?ShowBandwidthCalc 限制为 2 次调用/秒:在命令之间添加 sleep 0.6;ShowDomainStats 限制为 15 次调用/秒,通常无需特殊处理。
域名不在账户的在线域名列表中怎么办?停止分析,并请用户核实域名拼写、状态和账户(参见 troubleshooting.md 中的“未找到域名”部分)。
用户请求执行写操作(例如刷新缓存、更改配置)怎么办?拒绝并说明此技能为只读(参见 prohibited-operations.md);请用户改用 CDN 控制台或手动执行 hcloud CLI。

如需了解更多问题和故障排查信息,请参见 references/troubleshooting.md。


变更日志 / 版本历史

版本日期变更
1.0.02026-08-09初始版本:计费模式查询 + 流量/带宽统计 + 3 个月基线对比 + 双阈值异常检测

负责人:cdn-ops
维护:重大变更时,更新此表并递增版本号(SemVer)。弃用/退役须经 cdn-ops 团队审核,并记录在此表中。


参考资料

文档描述
task-show-charge-modes.md步骤 1:查询计费模式
task-list-domains.md步骤 2:列出所有域名
task-domain-validation.md步骤 3:域名验证
task-timestamp-calculation.md步骤 4:时间戳计算
task-query-metrics.md步骤 5-6:查询当前指标 + 基线指标
task-threshold-judgment.md步骤 7:双阈值判断 + 报告
prohibited-operations.md所有 55 个禁止的非 GET 操作(POST/PUT/DELETE)
dataflow-diagram.mdMermaid 数据流图
related-apis.mdAPI 和 CLI 命令参考
iam-policies.mdIAM 权限策略
verification-method.md输出格式和验证
cli-installation-guide.mdCLI 安装指南
troubleshooting.md故障排查和最佳实践
acceptance-criteria.md验收标准清单

评论

支持 Markdown