⚠️ 所有脚本在 skill 目录下执行:先 cd skills/txcloud-diagnostics/
bash
python3 scripts/prefetch.py --instance-id <id> --product <product> \
--region <region> --namespace <namespace> --dimension-key <dim-key>
status: "ok" → 进 Step 2status: "auth_failed" → 执行凭证授权(见下方),成功后重试status: "error" → 根据 message 提示用户bash
python3 scripts/diagnose.py \
--instance-id <id> --region <region> \
--namespace <namespace> --dimension-key <dim-key> \
--metrics '<指标1,指标2,...>' \
--problem-start '<ISO8601+08:00>' --problem-end '<ISO8601+08:00>'
可选: --pad-before/ --pad-after(默认15分钟), --extra-dims(CCN 等多维度产品必传)。
时间处理:用户说的时间默认为 北京时间(UTC+8),直接用 +08:00 后缀。例:用户说"19点左右" → --problem-start '2026-03-28T18:30:00+08:00' --problem-end '2026-03-28T19:30:00+08:00'。 不要做 UTC 转换。
指标选择优先用 profile 决策表,通用匹配:慢→latency、错误→error/fail、流量→traffic/bandwidth、连接→conn。
输出规范: 全流程禁止输出中间思考/排查过程。用户只看到以下内容:
text
📋 诊断结论:<一句话结论>
| 实例 | 指标1 | 指标2 | ... | 状态 |
|------|-------|-------|-----|------|
| xxx | 数据 | 数据 | ... | ✅/❌ |
建议:
1. <具体可执行动作>
2. <具体可执行动作>
禁止:输出思考过程、暴露 tccli/脚本报错细节、重复展示同一数据、编造未查证的信息
当 diagnose.py 返回失败(API错误或数据为空)时, 不要直接报错放弃,按以下顺序自主尝试( 总耗时不超过 10 分钟,超时如实告知用户当前进展和失败原因):
namespace 不对 → 用 tccli 查实际可用的 namespace: bash
tccli monitor DescribeBaseMetrics --cli-unfold-argument --region <region> --Namespace <当前namespace> --output json
如果返回 0 个指标,换同产品的其他已知 namespace 重试(如 TDSQL-C: QCE/CYNOSDB_MYSQL ↔ QCE/TDMYSQL)
实例 ID 格式不对 → 用户给的可能是集群 ID 而非实例 ID,通过产品 API 查询实际实例: bash
tccli cynosdb DescribeClusterInstanceGrps --region <region> --ClusterId <集群ID> --output json
从返回的 InstanceSet 中取 InstanceId(如 cynosdbmysql-ins-xxx)
dimension-key 不对 → 从 DescribeBaseMetrics 返回的 MetricSet[0].Dimensions 中确认实际维度名
指标名不对 → 从 DescribeBaseMetrics 返回的 MetricSet 中确认实际可用的指标名(注意大小写)
数据为空但无报错 → 该时间段确实没有监控数据(实例空闲/新建/已停机),如实告知用户
当 prefetch.py 返回 auth_failed 时执行:
bash
nohup python3 -u scripts/tccli_auth_daemon.py > /tmp/tccli_daemon.log 2>&1 &
sleep 5 && cat /tmp/tccli_daemon.log && cat /tmp/tccli_auth_link.txt
提取链接生成超链接发给用户一键点击登录。提示用户回传验证码(一段 eyJ... 开头的 base64 长字符串)
授权环节只对用户输出:授权链接 + "请点击登录并回复验证码"。 不要输出 auth_failed 原因、tccli 配置状态、credential 为空等内部信息。
将用户回复的base64 长字符串内容完整写入 /tmp/tccli_auth_input_code.txt
bash
echo '<用户回复的验证码>' > /tmp/tccli_auth_input_code.txt
sleep 5 && cat /tmp/tccli_daemon.log
日志出现 AUTH_SUCCESS 即成功,重新执行 Step 1。
产品关键字Profilecvm、云服务器、lighthouse、轻量应用、cdhscripts/product_profiles/compute.mdtke、容器、tcrscripts/product_profiles/container.mdscf、云函数、tcb、云开发scripts/product_profiles/serverless.mdckafka、kafka、tdmq、rabbitmq、cmq、rocketmq、pulsarscripts/product_profiles/mq.mdapigateway、api网关、tse、tsfscripts/product_profiles/microservice.mdcbs、cos、cfs、chdfs、goosefs、cls、日志、ciscripts/product_profiles/storage.mdclb、负载均衡、nat、vpn、dc、专线、ccn、云联网scripts/product_profiles/network.mdcdb、mysql、cynosdb、tdsql、mariadb、dcdb、postgres、sqlserver、mongodb、redis、memcached、keewidbscripts/product_profiles/database.mdes、elasticsearch、emr、oceanus、dlc、cdwscripts/product_profiles/bigdata.mdcdn、ecdn、gaap、edgeone、ecmscripts/product_profiles/cdn.mdlive、直播、vod、waf、cfw、ddosscripts/product_profiles/media_security.md
前缀产品product 参数ins-CVMcvmlhins-Lighthouselighthousecdb-CDB MySQLcdbcynosdbmysql-TDSQL-C MySQLtdsql-ctdsql- / tdsqlshard-TDSQL / DCDBtdsqlpostgres-PostgreSQLpostgresmssql-SQL Serversqlservercrs-Redisrediscmgo-MongoDBmongodbkeewidb-KeeWiDBkeewidblb-CLBclbckafka-CKafkackafkaes-Elasticsearchesemr-EMRemr
其它实例id搜索参考 腾讯云官网
tccli <service> <Action> --cli-unfold-argument --ParamName value(注意 --cli-unfold-argument)> /tmp/xxx.json 保存文件再用 Python 读取, 不要用 | python3