mcpField
D
dd-monitors

dd-monitors

github.com/datadog-labs云与 DevOps1801.9k 次安装6 天前更新
代码仓库

关于 dd-monitors

dd-monitors 是通过 Pup 命令行创建、检查和维护 Datadog 监控器的技能,并提供告警范围、阈值、恢复条件、停机时段及审计方面的操作指导。

主要功能

  1. 01列出并获取监控器
  2. 02从 JSON 文件创建监控器
  3. 03安排停机时段以静默告警
  4. 04检查监控器归属和告警活动
  5. 05设置查询范围与恢复阈值

适用场景

  1. 01为指标或服务检查创建告警
  2. 02在计划维护期间静默通知
  3. 03审计缺少团队归属的监控器
  4. 04排查告警过多或未触发的问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/datadog-labs/agent-skills --skill dd-monitors

安装后在 Claude Code 中输入/dd-monitors确认已加载。

详细介绍

Datadog 监控器

创建、管理和维护用于告警的监控器。

前置条件

需要确保 pup 位于路径中。请参阅 设置 Pup。

命令执行顺序(节省令牌)

对于范围限定的命令,请按以下顺序执行:

  1. 首先检查上下文(先前的输出、对话内容、已保存的值)。
  2. 如果缺少必需的值,先运行发现命令。
  3. 如果仍有歧义,请让用户确认。
  4. 然后运行目标命令。
  5. 避免运行可能失败的推测性命令。

快速入门

pup auth login

常见操作

列出监控器
pup monitors list
pup monitors list --tags "team:platform"
获取监控器
pup monitors get <id>
创建监控器
pup monitors create --file monitor.json
静默告警(停机时间)
# No pup monitors mute/unmute commands.
# Use downtime payloads to silence monitor notifications.
pup downtime create --file downtime.json
pup downtime cancel <downtime_id>

创建监控器的最佳实践

1. 避免告警疲劳
规则原因
避免告警抖动使用 last_Xm,而不是 last_1m
设置有意义的阈值根据 SLO 设置,而非猜测
确保告警可执行如果无需采取行动,就不要发出告警
附上运行手册在消息中添加 @runbook-url
# WRONG - will flap constantly
query = "avg(last_1m):avg:system.cpu.user{*} > 50"  # ❌ Too sensitive

# CORRECT - stable alerting
query = "avg(last_5m):avg:system.cpu.user{env:prod} by {host} > 80"  # ✅ Reasonable window
2. 正确设置范围
# WRONG - alerts on everything
query = "avg(last_5m):avg:system.cpu.user{*} > 80"  # ❌ No scope

# CORRECT - scoped to what matters
query = "avg(last_5m):avg:system.cpu.user{env:prod,service:api} by {host} > 80"  # ✅
3. 设置恢复阈值
monitor = {
    "query": "avg(last_5m):avg:system.cpu.user{env:prod} > 80",
    "options": {
        "thresholds": {
            "critical": 80,
            "critical_recovery": 70,  # ✅ Prevents flapping
            "warning": 60,
            "warning_recovery": 50
        }
    }
}
4. 在消息中加入上下文
message = """
## High CPU Alert

Host: {{host.name}}
Current Value: {{value}}
Threshold: {{threshold}}

### Runbook
1. Check top processes: `ssh {{host.name}} 'top -bn1 | head -20'`
2. Check recent deploys
3. Scale if needed

@slack-ops @pagerduty-oncall
"""

切勿直接删除监控器

请使用安全删除工作流(与仪表板相同):

def safe_mark_monitor_for_deletion(monitor_id: str, client) -> bool:
    """Mark monitor instead of deleting."""
    monitor = client.get_monitor(monitor_id)
    name = monitor.get("name", "")
    
    if "[MARKED FOR DELETION]" in name:
        print(f"Already marked: {name}")
        return False
    
    new_name = f"[MARKED FOR DELETION] {name}"
    client.update_monitor(monitor_id, {"name": new_name})
    print(f"✓ Marked: {new_name}")
    return True

监控器类型

类型使用场景
metric alertCPU、内存、自定义指标
query alert复杂指标查询
service checkAgent 检查状态
event alert事件流模式
log alert日志模式匹配
composite合并多个监控器
apmAPM 指标

审计监控器

# Find monitors without owners
pup monitors list | jq '.[] | select(.tags | contains(["team:"]) | not) | {id, name}'

# Find noisy monitors (high alert count)
pup monitors list | jq 'sort_by(.overall_state_modified) | .[:10] | .[] | {id, name, status: .overall_state}'

停机时间与静默

用途适用情况
停机时间任何计划内的静默时段
编辑监控器查询或阈值行为发生变化
# Downtime (preferred)
pup downtime create --file downtime.json

故障处理

问题解决方法
未触发告警检查查询是否返回数据、阈值是否正确
告警过多延长时间窗口,添加恢复阈值
无数据告警检查 Agent 连接状态和指标是否存在
身份验证错误pup auth refresh

参考资料

评论

支持 Markdown