关于 dd-logs
dd-logs 是供 AI Agent 搜索、处理和归档 Datadog 日志的技能,并关注成本控制。它提供查询指导、配置示例,以及减少噪声和处理敏感日志数据的流程。
主要功能
- 01按筛选条件和语法搜索日志
- 02查看归档和日志配置
- 03配置处理器与排除筛选器
- 04创建和查看基于日志的指标
- 05提供成本及敏感数据处理指导
适用场景
- 01在指定时间范围内查找错误
- 02通过排除筛选器减少索引数据量
- 03设置用于合规存储的日志归档
MCP 相关
这是通过 Pup 管理 Datadog 日志的技能;输入未说明 MCP 功能。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ datadog-labs/ agent-skills --skill dd-logs安装后在 Claude Code 中输入/dd-logs确认已加载。
详细介绍
Datadog 日志
以成本为考量,搜索、处理和归档日志。
前提条件
应已安装 Datadog Pup。如尚未安装,请参阅 设置 Pup。
命令执行顺序(节省令牌)
对于范围受限的命令,请按以下顺序执行:
- 先检查上下文(之前的输出、对话和已保存的值)。
- 如果缺少必需的值,先运行发现命令。
- 如果仍不明确,请向用户确认。
- 然后运行目标命令。
- 避免运行可能失败的推测性命令。
快速入门
pup auth login
搜索日志
# Basic search
pup logs search --query="status:error" --from="1h"
# With filters
pup logs search --query="service:api status:error" --from="1h" --limit 100
# JSON output
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* | 通配符 |
配置 API
pup 0.42.0 中可用的日志配置命令:
# List log archives
pup logs archives list
# List log restriction queries
pup logs restriction-queries list
# List custom log destinations
pup logs custom-destinations list
常见处理器
{
"name": "API Logs",
"filter": {"query": "service:api"},
"processors": [
{
"type": "grok-parser",
"name": "Parse nginx",
"source": "message",
"grok": {"match_rules": "%{IPORHOST:client_ip} %{DATA:method} %{DATA:path} %{NUMBER:status}"}
},
{
"type": "status-remapper",
"name": "Set severity",
"sources": ["level", "severity"]
},
{
"type": "attribute-remapper",
"name": "Remap user_id",
"sources": ["user_id"],
"target": "usr.id"
}
]
}
排除过滤器(控制成本)
仅索引重要内容:
{
"name": "Drop debug logs",
"filter": {"query": "status:debug"},
"is_enabled": true
}
高流量排除项
# Find noisiest log sources
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" |
| 调试日志 | status:debug |
| 静态资源 | @http.url:*.css OR @http.url:*.js |
| 心跳 | @message:*heartbeat* |
归档
以低成本存储日志,满足合规要求:
# List archives
pup logs archives list
# Archive config (S3 example)
{
"name": "compliance-archive",
"query": "*",
"destination": {
"type": "s3",
"bucket": "my-logs-archive",
"path": "/datadog"
},
"rehydration_tags": ["team:platform"]
}
重新水合(恢复)
# No `pup logs rehydrate` command in pup 0.42.0.
# Use Datadog UI/API for rehydration workflows.
基于日志的指标
从日志创建指标(比索引成本更低):
# List log-based metrics
pup logs metrics list
# Get one metric by ID
pup logs metrics get api.errors.count
**基数警告:**仅按取值范围有限的值分组。
敏感数据
清理规则
{
"type": "hash-remapper",
"name": "Hash emails",
"sources": ["email", "@user.email"]
}
切勿记录
# In your app - sanitize before sending
import re
def sanitize_log(message: str) -> str:
# Remove credit cards
message = re.sub(r'\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b', '[REDACTED]', message)
# Remove SSNs
message = re.sub(r'\b\d{3}-\d{2}-\d{4}\b', '[REDACTED]', message)
return message
故障排除
| 问题 | 解决方法 |
|---|---|
| 未显示日志 | 检查 Agent 和流水线过滤器 |
| 成本高 | 添加排除过滤器 |
| 搜索缓慢 | 缩小时间范围,使用索引 |
| 缺少属性 | 检查 grok 解析器 |
参考资料/文档
评论
支持 Markdown