用 KooCLI 与 MCP 把华为云资源巡检做成可复用的 Agent 工作流
为什么要把巡检做成工作流
云上资源一旦多起来,巡检就会变成一件重复且容易漏的事:ECS 是否有异常状态、OBS 桶的 ACL 是否过宽、VPC 里有没有不该开放的端口。手工点控制台不仅慢,而且每次的检查口径还不一致。更合理的做法是把巡检拆成三层:只读采集、结构化输出、可复用的工具入口。本文用华为云 KooCLI 做采集,用 MCP 把能力暴露给 Agent,给出一套可以直接落地的最小实践。
一、三层结构
- 采集层:KooCLI 调用各云服务只读接口,不产生写操作。
- 规整层:把返回的 JSON 归一化成统一字段,便于对比和告警。
- 入口层:把常用巡检封装成 MCP 工具或脚本,Agent 与人都能调用。
这样拆的好处是:采集命令可以独立测试,规整逻辑可以版本化,入口层则负责权限与参数校验。任何一层出问题,都不会影响另外两层。
二、准备 KooCLI 与最小权限
先确认本机已经安装并配置好 KooCLI:
hcloud version
hcloud configure list
建议单独创建一个只读的 IAM 用户或委托,只授予巡检需要的只读策略,例如 ECS、VPC、OBS 的查看权限。不要把租户级管理员 AK/SK 直接写进脚本。配置完成后,用一条只读命令验证凭据是否可用:
hcloud ECS NovaListServers --cli-region=cn-north-4 --project_id=PROJECT_ID
如果返回 401 或 403,先检查 AK/SK、region 与 project_id 是否匹配,再检查策略是否包含对应服务的只读权限。
三、只读采集:三条常用命令
下面三条命令覆盖了最常见的巡检对象。输出统一加 --cli-json-filter 或管道给 jq,避免把整包响应写进报告。
1. ECS 实例状态
hcloud ECS NovaListServersDetails \
--cli-region=cn-north-4 \
--project_id=PROJECT_ID \
| jq -r '.servers[] | [.id, .name, .status, .addresses] | @tsv'
2. OBS 桶列表与访问策略
hcloud OBS ListBuckets
hcloud OBS GetBucketAcl --bucket=BUCKET_NAME
重点看 ACL 里是否出现了 AllUsers 的写权限。如果业务确实需要匿名读,也应该限制到具体前缀,而不是整桶。
3. VPC 安全组规则
hcloud VPC ListSecurityGroups --cli-region=cn-north-4
hcloud VPC ListSecurityGroupRules --security_group_id=SG_ID
把 0.0.0.0/0 且端口为 22、3389、3306、6379 的规则单独标出来,这类规则是最值得优先复核的。
四、把巡检封装成 MCP 工具
MCP 的价值在于把“命令 + 参数校验 + 输出格式”打包成一个稳定的工具,而不是让 Agent 每次临时拼命令行。一个最小工具可以只暴露三个参数:region、resource_type、project_id。返回结构建议固定为:
{
"resource_type": "ecs",
"region": "cn-north-4",
"checked_at": "2026-10-23T12:00:00Z",
"findings": [
{"id": "i-xxxx", "name": "web-01", "status": "ACTIVE", "risk": "none"}
]
}
工具内部只做两件事:调用 KooCLI 或 SDK 采集,按固定 schema 输出。把“怎么判断风险”留给上层策略,这样同一份采集结果可以复用于日报、工单和告警,而不必为每种场景重写一遍。
五、生成可对比的巡检报告
巡检报告最重要的不是“今天有什么”,而是“和昨天相比变了什么”。建议每次把结果落成一个带日期的 JSON 文件,再用 jq 做差集:
jq -s '.[0].findings - .[1].findings' today.json yesterday.json
如果接入了对象存储,可以把报告按 reports/YYYY/MM/DD.json 的路径归档,配合生命周期规则自动清理。这样既不占本地磁盘,也保留了可追溯的历史。
六、落地时的四个细节
- 只读优先:巡检工具默认不暴露任何写操作,确需修复时走独立的、需要确认的工具。
- 幂等与限速:批量调用时加并发上限和重试退避,避免触发接口限流。
- 敏感信息:报告里不要写 AK/SK、内网 IP 全量列表和桶内对象名,必要时做脱敏。
- 可观测性:记录每次调用的 request id 和耗时,出问题时能快速定位是权限、网络还是接口变更。
七、小结
把巡检做成工作流,本质上是把“人记得要检查什么”变成“工具每次都按同一口径检查”。KooCLI 负责稳定地拿到数据,MCP 负责把能力以工具的形式复用,剩下的就是策略和报告。先从一个 region、三类资源开始,跑通一条端到端的链路,再逐步扩展,比一上来追求大而全更容易见到效果。
- 点赞
- 收藏
- 关注作者
评论(0)