You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置与Check_MK本地检查一致的Datadog本地检查

Datadog 本地检查适配 Check_MK 输出格式方案

Datadog 可以通过自定义服务检查实现和 Check_MK 本地检查一致的逻辑,下面是具体实现方法和集成步骤:

一、核心思路

Check_MK 靠脚本输出的第一个字段标识状态(ok/warn/critical),第二个字段定义服务名;Datadog 可以通过解析脚本输出,将这些字段映射到自身的服务检查体系(状态码+自定义检查名称),实现等价效果。

二、分步实现

1. 保留 Check_MK 格式的 Shell 脚本

继续沿用你熟悉的输出格式编写脚本,比如磁盘使用率检查示例:

#!/bin/bash
DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$DISK_USAGE" -lt 80 ]; then
    echo "ok Disk Usage / is $DISK_USAGE%"
elif [ "$DISK_USAGE" -lt 90 ]; then
    echo "warn Disk Usage / is $DISK_USAGE%"
else
    echo "critical Disk Usage / is $DISK_USAGE%"
fi

给脚本加执行权限:chmod +x /opt/scripts/disk_check.sh

2. 用 Datadog Agent Exec Checks 执行脚本

在 Datadog Agent 配置目录下创建自定义检查的配置:

  • 新建目录:mkdir -p /etc/datadog-agent/conf.d/custom_disk_check.d
  • 创建 conf.yaml 文件,内容如下:
init_config:

instances:
  - name: custom_disk_check
    command: "/opt/scripts/disk_check.sh"
    interval: 60  # 检查间隔,单位秒

3. 解析输出并映射到 Datadog 状态

由于 Datadog 不会自动识别 Check_MK 的状态字段,需要编写一个简单的解析逻辑,将脚本输出转换为 Datadog 服务检查。推荐用 Python 脚本包装(利用 Datadog 的 statsd 客户端):

import subprocess
from datadog import initialize, statsd

# 初始化Datadog statsd客户端
initialize(statsd_host='localhost', statsd_port=8125)

# 执行Shell脚本并捕获输出
proc = subprocess.run(['/opt/scripts/disk_check.sh'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
output_line = proc.stdout.strip()

# 拆分输出字段
parts = output_line.split(maxsplit=2)
if len(parts) < 2:
    # 输出格式异常时标记为UNKNOWN
    statsd.service_check(check_name="custom.disk_usage", status=3, message="Invalid script output")
    exit(1)

# 映射Check_MK状态到Datadog状态码
status_map = {"ok":0, "warn":1, "critical":2}
status = status_map.get(parts[0], 3)
service_name = parts[1].lower().replace(" ", "_")
message = parts[2] if len(parts) ==3 else ""

# 发送服务检查到Datadog
statsd.service_check(
    check_name=f"custom.{service_name}",
    status=status,
    message=message
)

将这个 Python 脚本保存为 /opt/scripts/disk_check_wrapper.py,然后修改 Agent 的 conf.yaml,把执行命令换成这个 Python 脚本:

command: "/usr/bin/python3 /opt/scripts/disk_check_wrapper.py"

4. 验证部署

  • 重启 Datadog Agent:systemctl restart datadog-agent
  • 检查 Agent 状态:datadog-agent status,在「Running Checks」下找到 custom_disk_check
  • 登录 Datadog 控制台,进入「Monitors > Service Checks」,就能看到自定义的服务检查状态了

三、进阶优化

  • 如果有多个 Check_MK 格式的脚本,可以写一个通用的解析 wrapper,避免重复代码
  • 对于不需要复杂解析的场景,也可以直接在 Shell 脚本中调用 dog 命令(Datadog CLI)发送服务检查
  • 可以基于这些服务检查配置告警规则,和 Datadog 原生监控统一管理

内容的提问来源于stack exchange,提问作者chamara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 01:30:20