Datadog AI代理集成

为AI代理提供优化的Datadog集成服务,支持自然语言查询和高效数据检索。

  • by junyeong-ai
  • Rust
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 junyeong-ai/mcp-datadog

使用说明

MCP数据狗服务器

面向AI代理的Datadog集成-兼具令牌优化和性能

英语 |韩语


📑 目录


🎯 这是什么?

“请查找过去一小时的错误日志” →Claude自动搜索Datadog 无需复杂的查询语法,像与AI对话一样使用Datadog

MCP数据狗服务器是一个Model Context Protocol服务器,允许AI代理用自然语言控制Datadog。 代币减少数百倍, 客户端缓存, 自然语言时间 通过支持,针对AI代理进行了优化。

实际使用示例

“展示生产CPU使用率趋势” →AI自动生成图表 “请分析昨天下午的故障原因” →AI提供日志分析和解决方案


🚀 快速入门(3分钟)

📋 前提条件

1构建(1分钟)

git clone https://github.com/junyeong-ai/mcp-datadog.git
cd mcp-datadog
cargo build --release

2⃣设置(1分钟)

打开Claude Desktop设置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

复制并粘贴以下内容:

{
  "mcpServers": {
    "datadog": {
      "command": "/절대/경로/to/mcp-datadog/target/release/mcp-datadog",
      "env": {
        "DD_API_KEY": "여기에_API_키_입력",
        "DD_APP_KEY": "여기에_APP_키_입력",
        "DD_SITE": "datadoghq.com",
        "DD_TAG_FILTER": "env:,service:",
        "LOG_LEVEL": "warn"
      }
    }
  }
}

💡 请务必设置DD_TAG_FILTER! 通过排除不必要的标签,可以大幅减少响应大小。

3⃣运行(30秒)

重启Claude Desktop就结束了! 🎉

现在问问Claude:

"지난 1시간 동안 production 환경의 에러 로그를 service별로 집계해줘"
"payment-api의 CPU 사용률 추이를 보여줘"
"어제 오후 3시부터 5시 사이에 발생한 500 에러를 분석해줘"

💡 为什么要用这个?

📊 与其他方式相比

方式 设置时间 AI亲和性 令牌效率 自然语言支持
直接API调用 低无过滤
开发包 10分钟+一般一般
MCP数据狗 3分钟 ✅ 优化 ✅ 节省数百倍 ✅

🎯 三个关键优化

1.自动卷取可将代币减少数百倍

# 30일 메트릭 조회 시 max_points로 대폭 압축
{"query": "avg:system.cpu.user{*}", "from": "30 days ago", "max_points": 100}
# → 43,200 포인트를 60개로 압축 (실측 720x 절감!)
  • 根据时间范围 数十至数百倍 节省(7天:120x,30天:720x)
  • 9步间歇自动计算(60s至86400s)
  • 自动检测聚合方式(avg/max/min/sum)
  • 保留现有rollup

2.通过智能缓存处理大量数据

  • 100+显示器也分页面提供
  • 首次请求后利用缓存(TTL 5分钟,LRU方式)
  • 不支持服务器分页的API也没有问题

3.通过标签过滤大幅减少响应大小

# 필요한 태그만 선택
DD_TAG_FILTER="env:,service:"
# 수십~수백 개 태그 → 필요한 것만

其他优点

  • 单个二进制文件:5.3 MB,不依赖运行时
  • 自然语言时间:支持“1小时前”、“昨天”
  • 自动重试:Exponential backoff(最多3次)
  • 只读:仅安全的数据查询

💡 更详细的技术信息 技术堆栈和体系结构 请参阅部分。


主要功能

📊 度量和基础架构(2个)

  • datadog_metrics_query:查询时间序列度量+自动汇总(最多节省700x+)
  • datadog_hosts_list:筛选主机列表和标签

📝 日志&分析(3个)

  • datadog_logs_search:搜索日志+过滤标签
  • datadog_logs_aggregate:统计日志(count/sum/avg/min/max/pc99)
  • datadog_logs_时间序列:时间序列分析(自定义间隔)

🔍 监视&事件(3个)

  • datadog_monitors_list:监视器列表(客户端缓存)
  • datadog_monitors_get:查看单个监视器
  • datadog_events_query:事件流(客户端缓存)

📈 仪表板(2个)

  • datadog_dashboards列表:仪表板列表(客户端缓存)
  • datadog_dashboards_get:仪表板详细信息

🔬 APM&跟踪(2个)

  • datadog_spans_search:APM扫描+ 尺寸减少70% (堆栈追溯压缩)+光标分页
  • datadog_services_list:服务目录+按环境筛选

🌐 RUM(真实用户监控)(1개)

  • datadog_rum_events_search:监控用户体验+跟踪会话/视图/动作/资源/错误+压缩堆栈跟踪

📖 详细参数和使用方法 可用工具 请参阅部分。


环境变量指南

变量 必需 默认值 说明 💡 优化提示
DD_API_KEY ✅ - 数据狗API ronment-age对象 在Datadog中创建
DD_APP_KEY ✅ - Datadog应用——观察 在Datadog中创建
DD_SITE ❌ datadoghq.com Datadog站点 针对区域设置(datadoghq.eu、us3、us5等)
DD_TAG_FILTER ❌ * (所有标签)标签筛选器 "env:,service:"大幅减少响应大小!
LOG_LEVEL ❌ warn 调试日志级别 debug 使用

🎯 DD_TAG_FILTER使用策略

通过标签过滤 大幅减少响应大小可以:

# 전략 1: 프로덕션 환경만 모니터링
DD_TAG_FILTER="env:production"

# 전략 2: 특정 서비스만 추적
DD_TAG_FILTER="env:,service:payment,service:auth"

# 전략 3: 핵심 태그만 (권장!)
DD_TAG_FILTER="env:,service:,version:"

# 전략 4: 모든 태그 포함 (기본값)
DD_TAG_FILTER="*"

# 전략 5: 태그 제외
DD_TAG_FILTER=""

实际使用示例:

{
  "name": "datadog_logs_search",
  "arguments": {
    "query": "status:error",
    "from": "1 hour ago",
    "tag_filter": "env:,service:"  // 여기서 토큰 절약!
  }
}

🎯 实际使用示例

示例1:监控生产错误

询问Claude:

"지난 1시간 동안 production 환경의 에러 로그를 service별로 집계해줘"

AI自动:

  1. datadog_logs_aggregate 使用工具
  2. query="status:error env:production" 设置
  3. group_by=["@service"] 应用
  4. 将结果整理成表格显示出来

示例2:性能分析

询问Claude:

"payment-api의 지난 24시간 CPU 사용률 추이를 보여줘"

AI自动:

  1. datadog_metrics_query 使用工具
  2. query="avg:system.cpu.user{service:payment-api}" 创建
  3. from="24 hours ago" 设置
  4. 显示为可视化图表

示例3:调查事件

询问Claude:

"어제 오후 3시부터 5시 사이 status:500 에러를 찾아서
 가장 많이 발생한 endpoint를 알려줘"

AI自动:

  1. datadog_logs_search通过日志搜索
  2. datadog_logs_aggregate统计为
  3. 确定最常发生的端点
  4. 原因分析和解决方案建议

示例4:优化资源

询问Claude:

"메모리 사용량이 80% 이상인 호스트 목록을 보여줘"

AI自动:

  1. datadog_hosts_list 使用工具
  2. 度量数据分析
  3. 筛选超出阈值的主机
  4. 提供优化建议

🛠️ 可用工具(13个)

📊 메트릭 & 인프라 (2개)

datadog_metrics_query

时间度量查询(CPU、内存、网络等)

🚀 自动卷取功能: max_points大幅减少ROTOKEN!基于时间范围和max_points自动计算最佳间隔。 .rollup(agg, interval) 添加

参数:

  • query (必需):度量查询(例如: "avg:system.cpu.user{*}")
  • from (可选):开始时间(默认: "1 hour ago")
  • to (可选):结束时间(默认: "now")
  • max_points (可选):最大数据点数(例如100)-设置时应用自动卷取

示例:

{
  "query": "avg:system.cpu.user{*}",
  "from": "7 days ago",
  "to": "now",
  "max_points": 100
}
// 자동으로 2시간 간격 롤업 적용 → 토큰 120x 절감

datadog_hosts_list

基础架构主机列表和筛选

参数:

  • filter (可选):查询主机筛选器
  • from (可选):开始时间(默认: "1 hour ago")
  • count (可选):要返回的主机数(默认值:100,最大值:1000)
  • tag_filter (可选):过滤标签
📝 로그 & 분석 (3개)

datadog_logs_search

强大的日志搜索和过滤

参数:

  • query (必需):查询日志搜索
  • from (可选):开始时间(默认: "1 hour ago")
  • to (可选):结束时间(默认: "now")
  • limit (可选):最大日志数(默认值:10)
  • tag_filter (可选):过滤标签("*", "", "env:,service:")

datadog_logs_aggregate

日志事件统计和度量计算

参数:

  • query (可选):日志搜索查询(默认: "*")
  • from (可选):开始时间
  • to (可选):结束时间
  • compute (可选):统计运算数组(count,sum,avg,min,max,pc99)
  • group_by (可选):分组facet数组

datadog_logs_时间序列

从日志聚合生成时间序列数据

参数:

  • query (可选):查询日志搜索
  • from (可选):开始时间
  • to (可选):结束时间
  • interval (可选):时间间隔(默认: "1h")
  • aggregation (可选):聚合类型(默认: "count")
🔍 모니터링 & 이벤트 (3개)

datadog_monitors_list

所有监视器列表(客户端缓存)

🎯 客户端缓存核心:Datadog API一次返回所有监视器,可能会受到令牌限制。该工具在客户端处理缓存+分页操作!

参数:

  • tags (可选):标签过滤器(逗号分隔)
  • monitor_tags (可选):筛选监视器标签
  • page (可选):页码(从0开始)
    • 第0页:始终获取最新数据并保存缓存
    • 第1页+:从缓存获取并滑动(5分钟TTL)
  • page_size (可选):每页显示器数(默认值:50)

优点:

  • 100+显示器也可以在没有令牌限制的情况下进行导航
  • 首次请求后快速响应(利用缓存)
  • 通过LRU提高内存效率

datadog_monitors_get

特定显示器的详细信息

参数:

  • monitor_id (必需):监视器ID

datadog_events_query

查看Datadog事件流

🎯 客户端缓存核心:通过客户端缓存有效地处理一次性返回大量事件的API!

参数:

  • from (可选):开始时间(默认: "1 hour ago")
  • to (可选):结束时间(默认: "now")
  • priority (可选):优先级筛选器("normal", "low")
  • sources (可选):源过滤器
  • tags (可选):标签筛选器
  • page (可选):页码(默认值:0)
    • 第0页:保存最新数据和缓存
    • 第1页+:利用高速缓存(5分钟TTL)
📈 대시보드 (2개)

datadog_dashboards列表

所有仪表板列表

🎯 客户端缓存:客户端高效处理不支持分页的API(5分钟TTL)

datadog_dashboards_get

特定仪表板的详细信息

参数:

  • dashboard_id (必需):仪表板ID
🔬 APM & 트레이싱 (2개)

datadog_spans_search

APM范围搜索(高级筛选)

🎯 响应减少70%:将堆栈跟踪压缩到默认的10行,删除空字段!

参数:

  • query (可选):搜索查询(默认: "*")
  • from (必需):开始时间
  • to (必需):结束时间
  • limit (可选):最大跨距(默认值:10)
  • cursor (可选):页面国家光标
  • tag_filter (可选):过滤标签
  • full_stack_trace (可选):设置true时包括完整堆栈跟踪(默认值:false)

datadog_services_list

服务目录列表

参数:

  • env (可选):环境筛选器
  • page (可选):页码(默认值:0)
  • page_size (可选):每页项目数(默认值:10)
🌐 RUM (Real User Monitoring) (1개)

datadog_rum_events_search

监控用户体验和前端性能

🎯 堆栈追溯压缩:将错误堆栈压缩到默认的10行,以优化令牌效率!

参数:

  • query (可选):RUM搜索查询(默认: "*")
    • 示例: "@type:session AND @session.type:user"
    • 示例: "@view.url_path:/checkout AND @error.message:*"
    • 示例: "@resource.status_code:>=400"
  • from (可选):开始时间(默认: "1 hour ago")
  • to (可选):结束时间(默认: "now")
  • limit (可选):最大事件数(默认值:10)
  • cursor (可选):页面国家光标
  • sort (可选):排序顺序(例如: "timestamp", "-timestamp")
  • tag_filter (可选):过滤标签
  • full_stack_trace (可选):设置true时包括错误堆栈的完整追溯(默认值:false)

RUM事件类型:

  • 会话(Session):用户会话信息,是否可播放
  • 视图(View):页面视图、URL、加载时间、停留时间
  • 动作(Action):用户交互(单击、选项卡、滚动)
  • 资源(Resource):XHR、Fetch、CSS、JS、图像加载性能
  • 错误(Error):JavaScript错误、网络错误、崩溃

示例:

{
  "query": "@type:error AND @application.name:web-app",
  "from": "1 hour ago",
  "to": "now",
  "limit": 25,
  "tag_filter": "env:,service:"
}

🏗️ 技术堆栈和体系结构

核心技术

  • 语言:Rust 2024版本(1.90+)
  • 协议:模型上下文协议(MCP 2024-11-05)
  • 通信:JSON-RPC 2.0通过标准输入
  • HTTP客户端:reqwest(HTTP/2,rustls tls)
  • 异步运行时:tokio(全功能)
  • 时间解析:interim(自然语言支持)

性能特性

项目 数值
二进制大小 ~5.3MB(LTO优化)
缓存TTL 5分钟(可设置)
请求超时 30秒
最大重试 3次(expensive backoff)

体系结构

┌─────────────────────────────────────────────────┐
│           AI Agent (Claude, ChatGPT)            │
│              자연어로 질문                        │
└────────────────────┬────────────────────────────┘
                     │ JSON-RPC 2.0 (stdio)
┌────────────────────▼────────────────────────────┐
│            MCP Datadog Server (Rust)            │
│  ┌─────────────────────────────────────────┐   │
│  │  MCP Protocol Handler                   │   │
│  │  - JSON-RPC 2.0                         │   │
│  │  - Tool Schema (12개 도구)              │   │
│  │  - Router                               │   │
│  └─────────────┬───────────────────────────┘   │
│                │                                 │
│  ┌─────────────▼───────────────────────────┐   │
│  │  Smart Cache (TTL: 5분)                 │   │
│  │  - Page 0: 항상 최신                    │   │
│  │  - 이후 페이지: 캐시 활용                │   │
│  └─────────────┬───────────────────────────┘   │
│                │                                 │
│  ┌─────────────▼───────────────────────────┐   │
│  │  Datadog Client (HTTP/2)                │   │
│  │  - Retry Logic (exponential backoff)    │   │
│  │  - Rate Limit Handling                  │   │
│  │  - Connection Pooling                   │   │
│  └─────────────┬───────────────────────────┘   │
└────────────────┼───────────────────────────────┘
                 │ HTTPS
┌────────────────▼───────────────────────────────┐
│              Datadog API (v1/v2)               │
│  Metrics, Logs, Monitors, Events, APM, etc.   │
└────────────────────────────────────────────────┘

📚 时间格式支持

支持自然语言、绝对时间和相对时间:

相对时间(Natural Language)

"10 minutes ago"
"2 hours ago"
"3 days ago"
"1 week ago"

命名时间

"now"
"today"
"yesterday"
"last week"
"last month"

绝对时间

ISO 8601: "2024-01-15T10:30:00Z"
Unix timestamp: 1704067200

🧪 开发&测试

设置开发环境

# 저장소 클론
git clone https://github.com/junyeong-ai/mcp-datadog.git
cd mcp-datadog

# 환경 변수 설정
cp .env.example .env
# .env 파일에 API 키 입력

# 디버그 모드 실행
LOG_LEVEL=debug cargo run

运行测试

# 모든 테스트 실행
cargo test

# 특정 모듈 테스트
cargo test --lib cache::tests
cargo test --lib handlers::metrics::tests

# 상세 출력
cargo test -- --nocapture

# 테스트 커버리지
cargo install cargo-llvm-cov
cargo llvm-cov --all-features --lcov --output-path lcov.info

MCP协议测试

# 초기화
echo '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05"},"id":0}' | cargo run

# 도구 목록
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | cargo run

# 도구 실행 (메트릭 조회)
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"datadog_metrics_query","arguments":{"query":"avg:system.cpu.user{*}","from":"1 hour ago"}},"id":2}' | cargo run

生产构建

# 최적화된 빌드
cargo build --release

# 심볼 제거 (선택사항)
strip target/release/mcp-datadog

# 결과: ~5.3MB 바이너리

🔒 保安

  • 只读:所有操作均为只读(数据不可修改)
  • 信用安全:API密钥永远不会写入日志
  • 验证输入:验证所有参数
  • 错误处理:防止内部信息泄露

🤝 贡献

欢迎您的贡献!

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'feat: add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

开发指南

  • cargo fmt用代码格式化
  • cargo clippy -- -D warnings罗林特检查
  • cargo test通过所有测试
  • 新功能需要进行单元测试
  • 零警报策略(CI强制)

📝 许可证

MIT License-详细信息 许可证 请参考文件。


💬 支持


由以下材料制成❤️ Rust for MCP生态系统

⭐ 标记此回购 | 🐛 报告Bug | ✨ 请求功能