关于 datadog-analyser
datadog-analyser 是通过 `pup` 命令行调查 Datadog 可观测性数据的技能。它指导查询监控器、日志、指标、事件等数据,并将结构化报告写入 `.datadog-analyser-tmp/report.md`。
主要功能
- 01使用 `pup` 查询 Datadog 数据
- 02分析监控器、日志和指标
- 03设置分析时间范围与服务筛选
- 04汇总发现与异常
- 05保存结构化 Markdown 报告
适用场景
- 01调查触发告警的监控器和错误日志
- 02按时间范围检查服务健康状况
- 03汇总事件及可观测性调查结果
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ delexw/ claude-code-misc --skill datadog-analyser安装后在 Claude Code 中输入/datadog-analyser确认已加载。
详细介绍
Datadog 分析器
使用 pup CLI 调查和分析 Datadog 可观测性数据。
输入
原始参数:$ARGUMENTS
根据参数推断:
- QUERY:要分析的内容。
- SINCE:(可选)分析时间范围的 UTC ISO8601 起始时间。提供时,将其转换为 epoch 秒,以用于
pup--from标志(例如,在 Linux 上运行date -d "2026-03-20T02:30:00Z" +%s,或在 macOS 上运行date -jf "%Y-%m-%dT%H:%M:%SZ" "2026-03-20T02:30:00Z" +%s)。 - UNTIL:(可选)分析时间范围的 UTC ISO8601 结束时间。提供时,将其转换为 epoch 秒,以用于支持
--to标志的命令;否则省略(默认值为现在)。 - SERVICE_HINT:(可选)优先在查询中使用的服务名称(优先按此服务筛选监控器、日志和 APM)。
系统要求
- 已安装
pupCLI — 请参阅 https://github.com/datadog-labs/pup/blob/main/README.md - 已设置
DD_API_KEY和DD_APP_KEY环境变量。重要: 检查这些变量时,在确定它们未设置之前,至少验证 2 次。由于 shell 上下文差异,环境变量可能会显示为未设置。切勿泄露变量值 — 只检查变量是否存在(例如test -n "$DD_API_KEY")。 - 如果使用的不是
datadoghq.com,则设置DD_SITE(可选)
输出目录
.datadog-analyser-tmp/
└── report.md # Final analysis report
执行
1. 验证连接
运行 pup test,确认 CLI 已配置并连接:
pup test
如果失败,请使用 AskUserQuestion 告知用户 pup 尚未配置,或未设置 DD_API_KEY/DD_APP_KEY,并提供设置指南链接:https://github.com/datadog-labs/pup/blob/main/README.md
在 pup test 成功之前,请勿继续。
2. 发现可用命令
运行 pup agent guide,获取本次会话的完整可用命令列表和用法模式:
pup agent guide
如果 pup agent guide 不可用(找不到命令),请使用下方已知的命令参考并继续。
3. 分析
根据 QUERY,确定最相关的 pup 命令。所有命令均使用 --output=json(默认值)以获取结构化输出。按顺序运行命令。
时间窗口规则 — 当 QUERY 中包含特定日期(“今天”“昨天”)或日历日期范围时,请使用本地日期边界计算时间窗口,而不是按 UTC 日历日计算。用户说“今天”表示从本地午夜开始,因此即使某事件对应的 UTC 日期不同,只要它发生在本地时间上午 11 点,也应包含在内。
对于相对时长(“过去 1 小时”“过去 24 小时”),直接将其作为 pup 相对时间字符串传入:--from="1h"、--from="24h"。
对于特定日期,计算本地日期边界的 epoch 秒数,并传入 --from/--to:
# Start of local today as epoch (Linux / macOS)
date -d "$(date +%Y-%m-%d) 00:00:00" +%s # Linux
date -jf "%Y-%m-%d %H:%M:%S" "$(date +%Y-%m-%d) 00:00:00" +%s # macOS
# Current time as epoch
date +%s
# Start of local yesterday
date -d "$(date -d yesterday +%Y-%m-%d) 00:00:00" +%s # Linux
date -jf "%Y-%m-%d %H:%M:%S" "$(date -v-1d +%Y-%m-%d) 00:00:00" +%s # macOS
当提供了 SINCE 和 UNTIL,且其格式为 UTC ISO8601 时,将它们分别转换为 epoch 秒数,并用于所有 --from/--to 标志,而不是根据 QUERY 推断时间窗口。这样可确保所有 Datadog 查询都涵盖与其他 PIR 子技能完全相同的时间窗口:
# Linux
SINCE_EPOCH=$(date -d "2026-03-20T02:30:00Z" +%s)
UNTIL_EPOCH=$(date -d "2026-03-20T06:00:00Z" +%s)
# macOS
SINCE_EPOCH=$(date -jf "%Y-%m-%dT%H:%M:%SZ" "2026-03-20T02:30:00Z" +%s)
UNTIL_EPOCH=$(date -jf "%Y-%m-%dT%H:%M:%SZ" "2026-03-20T06:00:00Z" +%s)
当提供了 SERVICE_HINT 时,请在查询中优先使用它:
- 筛选监视器:
pup monitors search --query="service:<SERVICE_HINT>" - 在查询字符串中加入
service:<SERVICE_HINT>,限定日志搜索范围 - 优先聚焦该服务的 APM 跟踪
常见分析模式:
| 目标 | 命令 |
|---|---|
| 已触发/正在告警的监视器 | pup monitors list、pup monitors search --query="status:alert" |
| 错误日志 | pup logs search --query="status:error" --from="1h" |
| 指标趋势 | pup metrics query --query="<metric>" --from="<window>" |
| 活跃事件 | pup incidents list |
| SLO 健康状况 | pup slos list、pup slos status <id> |
| APM 服务健康状况 | pup apm services、pup apm dependencies |
| 安全信号 | pup security signals list、pup security findings search |
| 错误跟踪 | pup error-tracking issues search --query="<service>" |
| Synthetics 失败 | pup synthetics tests list |
| CI 失败 | pup cicd pipelines list、pup cicd events list |
所有命令默认输出 JSON。使用 --from、--to、--query、--tags 等标志缩小范围。可通过 pup <command> --help 查看可用标志。
4. 报告
报告中的所有时间戳都必须使用当前 Agent 的本地时区(通过系统时钟检测),而不是 UTC。格式:2026-03-20 15:30 NZDT(包含时区缩写)。面向用户的报告部分不得使用 UTC——这也包括直接来自 API 响应的时间戳(例如 last_triggered、overall_state_modified 和事件时间)。写入报告前,必须将每个时间戳转换为本地时间。
使用 Write 工具将结构化分析写入 .datadog-analyser-tmp/report.md:
- 摘要 — 整体健康状态和关键发现
- 详情 — 按领域(监视器、日志、指标等)分类列出发现
- 异常 — 任何告警、性能下降或异常情况
- 建议 — 建议采取的后续行动
告知用户报告位置:.datadog-analyser-tmp/report.md