其他
需要管理 Datadog 日志搜索、管道、归档…
适用于已安装 Datadog Pup 且需要查询、处理、归档 Datadog 日志、创建日志指标并控制成本的场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
需要管理 Datadog 日志搜索、管道特定
解决思路
- 确保已安装 Datadog Pup;如未安装,参考 Setup Pup 文档安装:https://github.com/datadog-labs/agent-skills/tree/main?tab=readme-ov-file#setup-pup。
- 执行 `pup auth login` 完成 Datadog 认证。
- 对限定范围的命令,先检查上下文(先前输出、对话、已保存值)。
- 若缺少必需值,先运行发现命令获取该值。
- 若仍不明确,请用户确认。
- 然后运行目标命令。
- 避免运行可能失败的高猜测性命令。
- 运行基础日志搜索:`pup logs search --query="status:error" --from="1h"`。
- 运行带过滤器的日志搜索:`pup logs search --query="service:api status:error" --from="1h" --limit 100`。
- 以 JSON 输出搜索日志:`pup logs search --query="@http.status_code:>=500" --from="1h"`。
- 搜索语法:`error` 表示全文搜索。
- 搜索语法:`status:error` 表示标签等于。
- 搜索语法:`@http.status_code:500` 表示属性等于。
- 搜索语法:`@http.status_code:>=400` 表示数值范围。
- 搜索语法:`service:api AND env:prod` 表示布尔组合。
- 搜索语法:`@message:*timeout*` 表示通配符。
- 列出日志归档:`pup logs archives list`。
- 列出日志限制查询:`pup logs restriction-queries list`。
- 列出自定义日志目标:`pup logs custom-destinations list`。
- 配置日志管道 JSON:包含 `name`、`filter.query` 和 `processors`。
- 使用 `grok-parser`:设置 `type`、`name`、`source: "message"` 和 `grok.match_rules`,例如 `%{IPORHOST:client_ip} %{DATA:method} %{DATA:path} %{NUMBER:status}`。
- 使用 `status-remapper`:设置 `type`、`name` 和 `sources`,例如 `["level", "severity"]`,以设置严重级别。
- 使用 `attribute-remapper`:设置 `type`、`name`、`sources` 和 `target`,例如将 `user_id` 重映射为 `usr.id`。
- 配置排除过滤器以控制成本,只索引重要日志:JSON 中包含 `name`、`filter.query` 和 `is_enabled: true`。
- 丢弃 debug 日志:设置 `filter.query` 为 `status:debug`。
- 查找最嘈杂的日志来源:`pup logs search --query="*" --from="1h" | jq 'group_by(.service) | map({service: .[0].service, count: length}) | sort_by(-.count)[:10]'`。
- 排除健康检查:查询 `@http.url:"/health" OR @http.url:"/ready"`。
- 排除 debug 日志:查询 `status:debug`。
- 排除静态资源:查询 `@http.url:*.css OR @http.url:*.js`。
- 排除心跳:查询 `@message:*heartbeat*`。
- 配置归档以低成本存储日志并满足合规:归档 JSON 包含 `name`、`query`、`destination` 和 `rehydration_tags`,例如 `rehydration_tags: ["team:platform"]`。
- 归档到 S3:设置 `destination.type: "s3"`、`destination.bucket`、`destination.path`,例如 `my-logs-archive`、`/datadog`。
- 恢复归档日志:pup 0.42.0 中没有 `pup logs rehydrate` 命令,改用 Datadog UI/API 执行 rehydration 工作流。
- 从日志创建基于日志的指标,比索引更便宜。
- 列出基于日志的指标:`pup logs metrics list`。
- 按 ID 获取单个基于日志的指标:`pup logs metrics get api.errors.count`。
- 注意基数:仅按有界值分组。
- 配置敏感数据清洗规则:使用 `hash-remapper`,设置 `type`、`name` 和 `sources`,例如清洗 `email`、`@user.email`。
- 在应用发送日志前先脱敏:使用 Python 函数 `sanitize_log(message: str) -> str`,通过正则在发送前替换敏感信息。
- 移除信用卡号:用正则 `r'\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b'` 替换为 `[REDACTED]`。
- 移除 SSN:用正则 `r'\b\d{3}-\d{2}-\d{4}\b'` 替换为 `[REDACTED]`。
- 排查日志未出现:检查 agent 和 pipeline filters。
- 排查高成本:添加 exclusion filters。
- 排查搜索慢:缩小时间范围,使用 indexes。
- 排查缺少属性:检查 grok parser。
- 参考文档 Log Search Syntax:https://docs.datadoghq.com/logs/explorer/search_syntax/。
- 参考文档 Pipelines:https://docs.datadoghq.com/logs/log_configuration/pipelines/。
- 参考文档 Exclusion Filters:https://docs.datadoghq.com/logs/indexes/#exclusion-filters。
- 参考文档 Archives:https://docs.datadoghq.com/logs/archives/。
适用边界 · 注意事项
- 无法安装或使用 Datadog Pup、无法访问 Datadog 服务时。
- 不使用 Datadog 云日志管理/付费服务,或只需要本地日志分析时。
- 需要执行归档日志 rehydrate 恢复时,pup 0.42.0 没有 `pup logs rehydrate` 命令,需改用 Datadog UI/API。