使用说明
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自动:
datadog_logs_aggregate使用工具query="status:error env:production"设置group_by=["@service"]应用- 将结果整理成表格显示出来
示例2:性能分析
询问Claude:
"payment-api의 지난 24시간 CPU 사용률 추이를 보여줘"
AI自动:
datadog_metrics_query使用工具query="avg:system.cpu.user{service:payment-api}"创建from="24 hours ago"设置- 显示为可视化图表
示例3:调查事件
询问Claude:
"어제 오후 3시부터 5시 사이 status:500 에러를 찾아서
가장 많이 발생한 endpoint를 알려줘"
AI自动:
datadog_logs_search通过日志搜索datadog_logs_aggregate统计为- 确定最常发生的端点
- 原因分析和解决方案建议
示例4:优化资源
询问Claude:
"메모리 사용량이 80% 이상인 호스트 목록을 보여줘"
AI自动:
datadog_hosts_list使用工具- 度量数据分析
- 筛选超出阈值的主机
- 提供优化建议
🛠️ 可用工具(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密钥永远不会写入日志
- 验证输入:验证所有参数
- 错误处理:防止内部信息泄露
🤝 贡献
欢迎您的贡献!
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'feat: add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
开发指南
cargo fmt用代码格式化cargo clippy -- -D warnings罗林特检查cargo test通过所有测试- 新功能需要进行单元测试
- 零警报策略(CI强制)
📝 许可证
MIT License-详细信息 许可证 请参考文件。
💬 支持
由以下材料制成❤️ Rust for MCP生态系统