SuperAPI AI 工具集

datadog-logs

部署与运维

查看项目

更新于 10-15 08:59

技能介绍

Datadog Logs 是一个通过 Composio CLI 在 shell 中查询 Datadog 日志的技能,让智能体能够过滤、透视和汇总日志,而无需手动粘贴截图。

用途

该技能适用于以下场景:

  • 调查错误激增、错误爆发或延迟回归,并希望获得结构化 JSON 返回结果。
  • 将部署与跨服务/环境的日志量变化进行关联分析。
  • 构建定时的“夜间出了什么问题”摘要。

主要能力

通过 Composio CLI 提供对 Datadog 日志的查询与聚合能力,常用工具 slug 包括:

  • DATADOG_SEARCH_LOGS
  • DATADOG_AGGREGATE_LOGS
  • DATADOG_LIST_ACTIVE_METRICS
  • DATADOG_GET_EVENT

可使用 composio search 和 composio tools list datadog 发现工具,并通过 --get-schema 确认 slug。

使用方式

前置条件

curl -fsSL https://composio.dev/install | bash
composio login
composio link datadog       # prompts for site + API/APP keys

发现工具

composio search "search logs" --toolkits datadog
composio search "aggregate logs" --toolkits datadog
composio tools list datadog

过滤配方

查询某服务最近 15 分钟的错误:

composio execute DATADOG_SEARCH_LOGS -d '{
  "filter": {
    "query": "service:checkout status:error env:prod",
    "from": "now-15m",
    "to": "now"
  },
  "page": { "limit": 100 },
  "sort": "-timestamp"
}'

按端点聚合错误计数:

composio execute DATADOG_AGGREGATE_LOGS -d '{
  "filter": { "query": "service:checkout status:error", "from": "now-1h", "to": "now" },
  "group_by": [{ "facet": "@http.url_path", "limit": 20 }],
  "compute": [{ "aggregation": "count" }]
}'

跨服务追踪单个请求:

composio execute DATADOG_SEARCH_LOGS -d '{
  "filter": { "query": "@trace_id:7f3a2b1c env:prod", "from": "now-1h", "to": "now" },
  "sort": "timestamp"
}'

保存可复用查询:

composio search "save log view" --toolkits datadog
composio execute DATADOG_CREATE_SAVED_VIEW -d '{
  "name": "checkout-errors-prod",
  "query": "service:checkout status:error env:prod"
}'

管道到本地分析

Datadog 输出为 stdout 上的 JSON,可管道传给 jq 进行快速汇总:

composio execute DATADOG_SEARCH_LOGS -d '{
  "filter": {"query":"service:api status:error","from":"now-30m","to":"now"},
  "page":{"limit":500}
}' | jq -r '.data[].attributes.message' | sort | uniq -c | sort -rn | head

多步骤工作流

保存为 scripts/dd-incident.ts,然后运行 composio run --file scripts/dd-incident.ts -- --service checkout:

const svc = process.argv[process.argv.indexOf("--service") + 1];

const errors = await execute("DATADOG_SEARCH_LOGS", {
  filter: { query: `service:${svc} status:error`, from: "now-1h", to: "now" },
  page: { limit: 200 }, sort: "-timestamp"
});

const topPaths = await execute("DATADOG_AGGREGATE_LOGS", {
  filter: { query: `service:${svc} status:error`, from: "now-1h", to: "now" },
  group_by: [{ facet: "@http.url_path", limit: 10 }],
  compute: [{ aggregation: "count" }]
});

console.log(JSON.stringify({ svc, sample: errors.data?.slice(0,5), topPaths }, null, 2));

安排每日摘要

使用 cron(或 composio dev listen 处理触发器)运行工作流并将结果转发到 Slack:

composio run --file scripts/dd-incident.ts -- --service checkout \
  | tee /tmp/digest.json

composio execute SLACK_SEND_MESSAGE -d "$(jq -n \
  --slurpfile d /tmp/digest.json \
  '{channel:"oncall", text: ($d[0] | tojson)}')"

适用场景

  • 生产环境错误排查与日志分析。
  • 部署与日志量变化的关联分析。
  • 定时生成日志摘要并推送到协作工具。
  • 将日志查询结果管道到本地工具进行进一步处理。

限制与故障排查

  • 结果为空 → 确认 env: 和 service: 标签;Datadog 索引按区域划分,在 composio link datadog 时设置正确的站点。
  • 403 Forbidden → APP key 缺少 logs_read 权限;重新生成带该权限的 key 并重新关联。
  • 查询缓慢 → 缩小 from/to 范围,添加 facet 过滤器,或使用 DATADOG_AGGREGATE_LOGS 而非拉取原始事件。
  • 未知 facet → 运行 composio search "list log facets" --toolkits datadog。

完整 CLI 参考:docs.composio.dev/docs/cli