Datadog —— 免运维的一体化 SaaS 可观测平台(指标 / APM / 日志 / Monitor / Dashboard)
Datadog —— 免运维的一体化 SaaS 可观测平台(指标 / APM / 日志 / Monitor / Dashboard)
分类:07 商业与云监控 适用:混合云、多云、容器与微服务;从几台主机到上万主机,需要指标 + 链路 + 日志统一关联且不愿自建存储 一句话:装一个 Agent 即可把主机、应用、日志、链路送到 Datadog 云端,用 Monitor 与 Dashboard 统一告警与可视化 官方:https://www.datadoghq.com/ · 文档 https://docs.datadoghq.com/ 授权:商业 SaaS,按用量计费(主机 / 容器 / 日志 GB / 索引事件 / 自定义指标 / APM 主机与 span);提供免费试用与最多 5 台主机的免费版(1 天指标保留)。价格与免费额度以官方定价页为准
1. 它解决什么问题
自建监控要分别维护采集、时序库、日志管道、APM、告警与可视化,组件多、升级与扩容成本高。Datadog 把这些收敛为一个托管平台:
- 一个 Agent 同时采集主机指标、容器、日志、APM trace、进程与网络数据,1000+ 官方 Integration 开箱即用。
- 指标 / 链路 / 日志通过统一 Tag(
env、service、version)自动关联,排障时可从一条慢 trace 直接下钻到日志与主机指标。 - Monitor 统一做阈值、异常、组合告警与 On-call 通知;Dashboard / Notebook / SLO 免运维。
- 适合:无专职监控平台团队、多云混合部署、需要快速覆盖 APM/RUM/安全的团队。不适合:数据严禁出境、要求完全可控存储、成本极度敏感的超大规模场景。
2. 核心概念与架构
2.1 术语表
| 术语 | 含义 |
|---|---|
| Datadog Agent | 部署在主机 / 容器 / K8s 的采集进程,含 core agent、trace-agent、process-agent、logs-agent |
| Intake | Datadog 云端接收端点,按 DD_SITE 分流(US1/EU/US3/US5/AP1 等地域,以官方文档为准) |
| Metric / Custom Metric | 内置指标与用户自定义指标;自定义指标按「指标名 + tag 组合」计费 |
| DogStatsD | Agent 内置 StatsD 兼容的本地 UDP/Unix Socket 指标聚合器(默认 UDP 8125) |
| APM / Trace / Span | 分布式链路,应用经 ddtrace SDK 或 Single Step Instrumentation 上报(trace-agent 8126) |
| Logs | 日志采集、Processing Pipeline、Index 与 Flex Storage(摄入与索引分别计费) |
| Monitor | 告警规则,含 query、阈值、evaluation delay、通知消息与 renotify |
| Dashboard | 可版本化的 JSON 看板,支持 Template Variable 与 Widget |
| Tag / Unified Service Tagging | env / service / version 统一标签,是跨信号关联的基础 |
| Integration | 官方采集插件,配置放 conf.d/<name>.d/conf.yaml |
| Cluster Agent / Datadog Operator | K8s 场景的集群级采集与 CRD 化管理 |
| High-watermark billing | 主机类按每小时计数,月末取低 99% 小时读数的最高值计费(剔除 1% 尖峰) |
2.2 组件与数据流
主机/容器/K8s 本地 Agent Datadog SaaS(Intake) 消费层
┌──────────────┐ ┌──────────────────────────────┐ ┌──────────────────┐ ┌────────────────┐
│应用 /metrics │─▶│ core agent(checks/集成) │─▶│ Metrics Intake │─▶│ 时序存储 │
│应用日志 stdout│─▶│ logs-agent(pipeline) │─▶│ Logs Intake │─▶│ 索引/Flex │
│ddtrace SDK │─▶│ trace-agent(8126) │─▶│ APM Intake │─▶│ Trace/Service │
│业务埋点 │─▶│ DogStatsD(8125/UDP,聚合) │─▶│ Metrics Intake │ │ Map │
│K8s API │◀─│ Cluster Agent/Autodiscovery │ └────────┬─────────┘ └────────────────┘
└──────────────┘ └──────────────────────────────┘ ▼
HTTPS/443(仅出站) ┌────────────────────────────────┐
│ Monitor(求值query)→通知/On-call │
│ Dashboard / APM / Logs / SLO │
└────────────────────────────────┘
Agent → Intake → 指标/APM/日志 → Monitor 链路:① 主机安装 Agent 并配置 api_key 与 site → ② core agent 定时跑 Integration/checks、logs-agent tail 日志、trace-agent 收 span、DogStatsD 聚合本地自定义指标 → ③ Agent 批量压缩后经 HTTPS 发到对应 DD_SITE 的 Intake(无需入站端口,只需出站 443)→ ④ 云端按数据类型落指标时序库 / APM / 日志索引 → ⑤ Monitor 对指标或日志查询按周期求值,超阈值进入 ALERT 状态并通过 @... 通知语法发 Slack / 邮件 / PagerDuty / Webhook → ⑥ Dashboard、Service Map、Log Explorer 统一消费带 Tag 的数据。
数据出境提示:Agent 主动把数据发送到所选地域的 SaaS,以官方站点与合规文档为准,境内业务需评估数据出境与等保要求。
3. 安装与部署
3.1 环境准备
| 项 | 要求 |
|---|---|
| 账号 / 密钥 | 注册 Datadog 组织,取得 API Key(Agent 上报)与 Application Key(调用 API);Organization Settings → API Keys |
站点 DD_SITE |
决定 Intake 与控制台地域(datadoghq.com、datadoghq.eu 等),以官方站点文档为准 |
| 主机 | 支持主流 Linux / Windows / macOS;Agent 7 为当前主线(具体版本以官方最新稳定版为准) |
| 权限 | Linux 需 root/sudo;容器需挂载 docker.sock;K8s 需能创建 DaemonSet、ClusterRole、Secret |
| 网络 | 出站 HTTPS 443 到 Intake 与 install.datadoghq.com;如走代理配 DD_PROXY_HTTPS / proxy |
| 资源 | Agent 通常 100~300MB 内存起,容器/K8s 规模越大越高(以官方容量建议为准) |
| 时间 | 主机需 NTP 同步,时间漂移会导致指标与 trace 被丢弃 |
3.2 多种安装方式
A. Linux 一键脚本(官方标准方式)/ B. 容器 / C. K8s / D. 包管理器
DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=<DD_API_KEY> DD_SITE="datadoghq.com" \
bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script.sh)"
# B. Docker(tag 以官方最新稳定版为准)
docker run -d --name datadog-agent -e DD_API_KEY=<DD_API_KEY> -e DD_SITE="datadoghq.com" \
-e DD_APM_ENABLED=true -e DD_LOGS_ENABLED=true -e DD_CONTAINER_EXCLUDE="name:datadog-agent" \
-v /var/run/docker.sock:/var/run/docker.sock:ro -v /proc/:/host/proc/:ro \
-v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro gcr.io/datadoghq/agent:7
# C. K8s Helm(或用 Datadog Operator 的 DatadogAgent CRD,以官方文档为准)
helm repo add datadog https://helm.datadoghq.com && helm repo update
helm install <RELEASE> datadog/datadog -n datadog --create-namespace \
--set datadog.apiKey=<DD_API_KEY> --set datadog.site=datadoghq.com \
--set datadog.logs.enabled=true --set datadog.apm.enabled=true \
--set clusterAgent.enabled=true -f values.yaml
D. 包管理器 / 配置管理:官方提供 RPM/DEB 仓库、Ansible / Chef / Puppet / SaltStack 模块与 Windows MSI;从 Integrations → Agent 选平台会生成带密钥的安装命令,以官方安装页为准。
⚠️ API Key 属敏感凭据,禁止写入公开 Git 仓库;K8s 用 Secret 引用,不放 values.yaml 明文。
3.3 首次启动与验证
sudo datadog-agent status # 汇总:Collector / DogStatsD / Logs / APM 健康
sudo datadog-agent check <INTEGRATION> # 单集成自检(如 cpu、disk、http_check)
sudo datadog-agent configcheck # 校验 conf.d 配置
sudo systemctl status datadog-agent
sudo tail -f /var/log/datadog/agent.log # Linux 日志路径
控制台验证:Infrastructure → Host Map 几分钟内出现主机;Metrics → Explorer 搜 system.cpu.idle;APM → Services 出现已埋点服务;Logs → Explorer 有日志流。也可用 sudo datadog-agent flare 打包诊断信息发给官方支持(⚠️ 会上传本地配置与日志,发送前确认脱敏)。
4. 配置文件详解
4.1 datadog.yaml / 告警规则关键项
| 配置项 | 作用 | 建议 |
|---|---|---|
api_key / site |
上报凭据与 Intake 地域 | Secret / 环境变量注入,勿明文 |
hostname / tags |
主机标识与全局标签 | 配 env:<ENV>、team:<TEAM> |
logs_enabled / logs_config |
启用日志采集与容器日志 | true |
apm_config.enabled |
启用 trace-agent(8126) | true |
process_config / process_config.enabled |
进程与容器实时数据 | 按需 |
dogstatsd_port / dogstatsd_socket |
DogStatsD UDP 端口 / UDS 路径 | 8125 |
use_dogstatsd / dogstatsd_metrics_stats_enable |
开关与统计 | true |
proxy.https / proxy.no_proxy |
出站代理 | 内网环境必配 |
logs_config.use_compression / logs_config.compression_level |
上传压缩 | true |
conf.d/<integration>.d/conf.yaml |
单个 Integration 实例配置(instances / init_config / logs) | 见 §5.2 |
Monitor query / thresholds |
告警查询表达式与阈值 | avg(last_5m):... > 0.9 |
Monitor message / tags / notify_no_data |
通知文案、标签、无数据告警 | 用 @... 指定渠道 |
Monitor renotify_interval / evaluation_delay |
重复通知间隔 / 数据延迟容忍 | 按需 |
4.2 完整可运行最小 datadog.yaml
# /etc/datadog-agent/datadog.yaml —— 主机最小可用基线
api_key: <DD_API_KEY>
site: datadoghq.com # 以官方站点文档为准
hostname: <HOSTNAME>
tags: ["env:prod", "team:ops", "service:checkout"]
logs_enabled: true
apm_config: {enabled: true}
process_config: {enabled: "true"} # 官方示例常用字符串值,以官方文档为准
dogstatsd_port: 8125
dogstatsd_metrics_stats_enable: true
use_dogstatsd: true
logs_config: {use_compression: true}
# proxy: {https: "http://<PROXY_HOST>:<PROXY_PORT>"}
sudo datadog-agent configcheck && sudo systemctl restart datadog-agent && sudo datadog-agent status | head -40
4.3 Integration / 告警规则配置示例
# /etc/datadog-agent/conf.d/http_check.d/conf.yaml
init_config:
instances:
- name: checkout-health
url: http://127.0.0.1:8080/health
timeout: 2
tags: ["env:prod", "service:checkout"]
logs:
- {type: file, path: /var/log/checkout/*.log, source: python, service: checkout}
log_processing_rules: [{type: multi_line, name: new_log_start_with_date, pattern: \d{4}-\d{2}-\d{2}}]
Monitor 规则(API JSON)见 §5.3;avg(last_5m) 为时间窗口聚合,critical/warning 分级,notify_no_data 与 no_data_timeframe 处理数据断流。
5. 核心使用方法
5.1 Agent / CLI 常用命令(22 条)
sudo datadog-agent status # 1 总体健康
sudo datadog-agent check <INTEGRATION> # 2 单集成自检
sudo datadog-agent check <INTEGRATION> --check-rate # 3 带速率自检
sudo datadog-agent configcheck # 4 校验 conf.d 配置
sudo datadog-agent config # 5 打印运行时配置
sudo datadog-agent version # 6 查看版本
sudo datadog-agent hostname # 7 查看解析出的主机名
sudo datadog-agent flare --email <MAIL> --case-id <ID> # 8 ⚠️ 打包诊断信息上传支持
sudo datadog-agent stop / start / restart # 9 进程控制
sudo systemctl start|stop|restart|status datadog-agent # 10 systemd 服务管理
sudo -u dd-agent -- datadog-agent check <INTEGRATION> # 11 以 Agent 用户身份自检
sudo datadog-agent stream-logs # 12 实时查看 logs-agent 状态
sudo datadog-agent stream-event-platform # 13 事件平台流
sudo datadog-agent diagnose # 14 自动诊断(版本支持以官方文档为准)
sudo datadog-agent integration install -t <INTEGRATION>==<VERSION> # 15 安装社区集成
sudo datadog-agent integration remove -t <INTEGRATION> # 16 卸载集成
sudo datadog-agent integration freeze # 17 列出已装集成版本
sudo datadog-agent secret # 18 查看 secrets 后端解析
sudo tail -f /var/log/datadog/agent.log # 19 主日志
sudo tail -f /var/log/datadog/trace-agent.log # 20 trace-agent 日志
sudo ls /etc/datadog-agent/conf.d/ # 21 已启用集成目录
docker logs -f datadog-agent # 22 容器方式查看日志
5.2 DogStatsD 与指标 / 日志 API
# DogStatsD 本地 UDP 上报(metric:value|type|@rate|#tag:v)
echo "checkout.order.count:1|c|#env:prod,service:checkout" | nc -u -w0 127.0.0.1 8125
echo "checkout.latency:123|h|#env:prod" | nc -u -w0 127.0.0.1 8125
echo "checkout.gauge:42|g|#env:prod" | nc -u -w0 127.0.0.1 8125
python -c "from datadog import initialize, statsd; initialize(); statsd.increment('checkout.order.count', tags=['env:prod'])"
# Metrics v2 API(提交自定义指标,端点以官方 API 文档为准)
curl -s -X POST "https://api.<DD_SITE>/api/v2/series" \
-H "Content-Type: application/json" -H "DD-API-KEY: <DD_API_KEY>" \
-d '{"series":[{"metric":"checkout.latency","type":1,"points":[{"timestamp":<EPOCH_SEC>,"value":123}],"tags":["env:prod","service:checkout"]}]}' | jq
# 查询指标(v1 query,时间窗为 Unix 秒)
curl -s -G "https://api.<DD_SITE>/api/v1/query" \
-H "DD-API-KEY: <DD_API_KEY>" -H "DD-APPLICATION-KEY: <DD_APP_KEY>" \
--data-urlencode "query=avg:system.cpu.user{env:prod}" \
--data-urlencode "from=<FROM_EPOCH>" --data-urlencode "to=<TO_EPOCH>" | jq
5.3 Monitor API(完整 JSON)
curl -s -X POST "https://api.<DD_SITE>/api/v1/monitor" \
-H "Content-Type: application/json" -H "DD-API-KEY: <DD_API_KEY>" -H "DD-APPLICATION-KEY: <DD_APP_KEY>" \
-d '{"name":"[prod] 主机 CPU 使用率过高","type":"metric alert",
"query":"avg(last_5m):avg:system.cpu.user{env:prod} by {host} > 0.9",
"message":"CPU 超过 90%,请检查 {{host.name}}。\n @slack-ops-oncall @webhook-dingtalk @pagerduty",
"tags":["env:prod","team:ops"],
"options":{"thresholds":{"critical":0.9,"warning":0.8},"notify_no_data":true,
"no_data_timeframe":10,"renotify_interval":60,"evaluation_delay":60,
"include_tags":true,"new_group_delay":60},"priority":1}' | jq '.id, .name'
# 其余操作(路径与参数以官方 API 文档为准)
curl -s "https://api.<DD_SITE>/api/v1/monitor/<MONITOR_ID>" -H "DD-API-KEY: <DD_API_KEY>" -H "DD-APPLICATION-KEY: <DD_APP_KEY>" | jq
curl -s -X PUT "https://api.<DD_SITE>/api/v1/monitor/<MONITOR_ID>" -H "Content-Type: application/json" \
-H "DD-API-KEY: <DD_API_KEY>" -H "DD-APPLICATION-KEY: <DD_APP_KEY>" -d '{"options":{"thresholds":{"critical":0.95}}}' | jq
curl -s -X DELETE "https://api.<DD_SITE>/api/v1/monitor/<MONITOR_ID>" -H "DD-API-KEY: <DD_API_KEY>" -H "DD-APPLICATION-KEY: <DD_APP_KEY>" | jq
5.4 Dashboard JSON(完整可运行)
{
"title": "Checkout 服务概览", "description": "指标 + 日志关联看板", "layout_type": "ordered",
"widgets": [
{"definition": {"type": "timeseries", "title": "请求速率(按 service)",
"requests": [{"q": "sum:trace.http.request.hits{env:prod,service:checkout} by {service}.as_rate()", "display_type": "line"}]},
"layout": {"x": 0, "y": 0, "width": 6, "height": 3}},
{"definition": {"type": "query_value", "title": "P99 延迟(ms)",
"requests": [{"q": "p99:trace.http.request.duration{env:prod,service:checkout}"}]},
"layout": {"x": 6, "y": 0, "width": 3, "height": 3}},
{"definition": {"type": "log_stream", "title": "错误日志", "query": "service:checkout status:error",
"columns": ["timestamp", "host", "service", "message"]},
"layout": {"x": 0, "y": 3, "width": 9, "height": 4}}
],
"template_variables": [{"name": "env", "prefix": "env", "default": "prod"}],
"notify_list": [], "reflow_type": "auto"
}
curl -s -X POST "https://api.<DD_SITE>/api/v1/dashboard" \
-H "Content-Type: application/json" -H "DD-API-KEY: <DD_API_KEY>" -H "DD-APPLICATION-KEY: <DD_APP_KEY>" \
-d @dashboard.json | jq '.id, .url'
5.5 查询语言与 Web UI
- 指标查询:
avg:system.cpu.user{env:prod} by {host};支持.as_rate()、rollup(sum, 60)、top()、anomalies()、forecast()等函数(以官方 Querying 文档为准)。 - 日志查询:
service:checkout status:error @http.status_code:500,用 Facets 与 Pipeline 做结构化。 - APM 查询:
service:checkout env:prod resource_name:POST /order,Trace Explorer 看 Span 与 Service Map。 - Web UI 入口:Metrics Explorer、APM → Services、Logs → Explorer、Monitors → Manage、Dashboards → Dashboard List、Integrations。
6. 告警与通知
Monitor 类型:metric / log / APM / anomaly / composite / event / service check / process / SLO 等。通知通过 message 里的 @... 语法路由:@slack-<CHANNEL>、@email-<ADDR>、@pagerduty-<SERVICE>、@webhook-<NAME>(可指向企业微信 / 钉钉 / 内部平台 / 云函数回调)、@opsgenie-*。
{
"name": "5xx 错误率告警", "type": "log alert",
"query": "logs(\"service:checkout status:error\").index(\"*\").rollup(\"count\").last(\"5m\") > 50",
"message": "5xx 激增,请排查 {{service}}。 @slack-ops-oncall @webhook-dingtalk-oncall",
"options": {"thresholds": {"critical": 50, "warning": 20}, "notify_no_data": false,
"renotify_interval": 30, "enable_logs_sample": true,
"groupby_fields": ["service"], "notification_preset_name": "hide_handles"},
"tags": ["env:prod", "team:ops"]
}
静默 / 升级 / 降噪:Downtime 按 scope 屏蔽维护窗口;Monitors → Manage 可 Mute;renotify_interval 控制重复通知、evaluation_delay 容忍数据延迟、new_group_delay 抑制新分组抖动;升级用多条 Monitor(warning→critical)或 Notification Rules + On-call Escalation Policy。
# Downtime(路径与字段以官方 API 文档为准)
curl -s -X POST "https://api.<DD_SITE>/api/v2/downtime" \
-H "Content-Type: application/json" -H "DD-API-KEY: <DD_API_KEY>" -H "DD-APPLICATION-KEY: <DD_APP_KEY>" \
-d '{"data":{"attributes":{"message":"发布窗口静默","monitor_identifier":{"monitor_tags":["env:prod"]},"scope":"env:prod","schedule":{"start":"<RFC3339_START>","end":"<RFC3339_END>"}},"type":"downtime"}}' | jq
curl -s -X DELETE "https://api.<DD_SITE>/api/v1/downtime/<DOWNTIME_ID>" -H "DD-API-KEY: <DD_API_KEY>" -H "DD-APPLICATION-KEY: <DD_APP_KEY>" # ⚠️ 提前取消静默
7. 实战场景
场景 A:给一个新部署的业务暴露 /metrics 并接入(含 APM)
目标:checkout 服务的 Prometheus 格式 /metrics 与 trace 进入 Datadog,打统一 Tag。
# conf.d/openmetrics.d/conf.yaml —— 或 K8s 用 Autodiscovery 注解(以官方文档为准)
init_config:
instances:
- openmetrics_endpoint: http://127.0.0.1:8080/metrics
namespace: checkout
metrics: [".*"]
tags: ["env:prod", "service:checkout", "version:<VERSION>"]
sudo systemctl restart datadog-agent
sudo datadog-agent check openmetrics
# 应用侧启用 ddtrace(Python 示例)
DD_SERVICE=checkout DD_ENV=prod DD_VERSION=<VERSION> ddtrace-run python app.py
验证:Metrics Explorer 搜 checkout.;APM → Services 出现 checkout;sudo datadog-agent status 中 openmetrics check 无 ERROR。回滚:删除该 conf.yaml 并 sudo systemctl restart datadog-agent;停止 ddtrace-run 即停止上报。
场景 B:CPU 高告警 + 多通道通知
目标:为 prod 主机创建 CPU Monitor 并接 Slack、钉钉 Webhook。
# 使用 §5.3 的 JSON,替换 query 为 system.cpu.user,message 加 @slack-ops-oncall @webhook-dingtalk-oncall
curl -s -X POST "https://api.<DD_SITE>/api/v1/monitor" \
-H "Content-Type: application/json" -H "DD-API-KEY: <DD_API_KEY>" -H "DD-APPLICATION-KEY: <DD_APP_KEY>" \
-d @cpu-monitor.json | jq '.id'
验证:Monitors → Manage 看到该 Monitor 为 OK/ALERT;触发压测 stress --cpu 4 --timeout 300 后 Slack 收到消息;curl .../api/v1/monitor/<ID> 查状态。回滚:curl -X DELETE .../api/v1/monitor/<ID>(⚠️ 会删除历史告警配置,先导出 JSON 备份)。
场景 C:日志接入并控制索引成本
目标:只索引 error 日志,其余走 Flex Storage / 归档以降本。
# conf.d/python.d/conf.yaml 的 logs 段 + 云端 Log Index(控制台配置,以官方文档为准)
logs:
- {type: file, path: /var/log/checkout/*.log, source: python, service: checkout}
sudo datadog-agent restart && sudo datadog-agent stream-logs | head -20
# 控制台:Logs → Configuration → Indexes,设 filter "status:error" 专用索引,其余进低费存储
验证:Logs Explorer 能检索 service:checkout status:error;Usage → Logs 账单中索引事件数下降。回滚:恢复默认 Index 过滤器,或删除 logs 段并重启 Agent;⚠️ 已摄入日志不可撤回,注意计费周期。
8. 日常运维与故障排查
8.1 服务管理、日志路径与健康检查
sudo systemctl status|start|stop|restart datadog-agent
sudo datadog-agent status | head -60
sudo datadog-agent configcheck ; sudo datadog-agent diagnose
sudo tail -f /var/log/datadog/agent.log /var/log/datadog/trace-agent.log /var/log/datadog/process-agent.log
sudo ls -l /etc/datadog-agent/conf.d/ ; docker logs -f datadog-agent
日志路径(Linux):/var/log/datadog/;配置:/etc/datadog-agent/datadog.yaml 与 conf.d/;K8s 用 kubectl -n datadog logs daemonset/<RELEASE>-datadog;健康检查以 datadog-agent status 输出各组件 Running 为准。
8.2 故障「现象 → 原因 → 处置」表
| 现象 | 原因 | 处置 |
|---|---|---|
| Host Map 不出现主机 | API Key 错 / DD_SITE 与账号地域不符 / 出站 443 被拦 |
datadog-agent status 看 API 校验;核对密钥与站点;配 proxy |
| 指标断断续续 | 主机 NTP 漂移 | 同步时间(chrony/ntp),检查 datadog-agent status 时间告警 |
| Integration 报 ERROR | conf.d 配置字段错 / 目标不可达 |
datadog-agent check <NAME> 看堆栈,configcheck 校验 |
| 日志收不到 | logs_enabled: false / 文件权限 / 容器未挂卷 |
开 logs_enabled,确认 dd-agent 用户可读与 volume 挂载 |
| APM 无 trace | apm_config.enabled 未开 / SDK 连错 8126 / 采样率过低 |
开 APM、统一 DD_AGENT_HOST 与 DD_TRACE_AGENT_PORT,查 trace-agent 日志 |
| Dashboard 空白 | Tag 不匹配 / 时间窗无数据 / 指标名错 | 在 Metrics Explorer 先验证 metric{tag} 有数据 |
| Monitor 一直 No Data | query 的 tag 写错 / Agent 停了 / evaluation_delay 过小 |
校正 query,配 notify_no_data + no_data_timeframe |
| 账单异常暴涨 | 高基数自定义指标 / 日志全量索引 / 容器超配额 | 删高基数字段、加索引过滤器、用 Usage 与 Metrics without Limits 管控 |
9. 性能、容量与高可用
| 维度 | 建议 |
|---|---|
| Agent 资源 | 按节点密度给 requests/limits;datadog-agent status 看内存与 forwarder 队列积压 |
| 抓取规模 | Integration 的 min_collection_interval 别盲目调小;K8s 用 Cluster Agent 降 API 压力 |
| 自定义指标 | 控制 tag 基数,user_id/request_id 会直接推高 custom metric 账单 |
| 日志成本 | 摄入(按 GB)与索引(按事件/保留期)分开计费;只索引需检索的日志,其余走 Flex Storage / 归档 |
| 保留与降采样 | 指标保留期随套餐(免费版 1 天、Pro 15 个月等,以官方定价页为准);用 rollup 与 retention filter 控量 |
| 高可用 | Agent 本机单点但 SaaS 端多副本托管;关键主机配监控 Agent 自身的进程 check 与 process_config |
| 成本与配额 | 主机类按 high-watermark(低 99% 小时峰值)计费;用 Usage Explorer、Budget、Metrics without Limits 与日志 Ingestion Controls 控费 |
10. 安全加固、备份与升级
- 密钥管理:API Key 只用于 Agent 上报,Application Key 单独授权且按最小权限;用 Secret / Vault / K8s Secret 注入,禁止硬编码到镜像或 Git;定期轮换并在 Organization Settings 禁用旧 Key。
- 最小权限:Application Key 配 RBAC/角色限制到需要的 Monitor/Dashboard 范围;Agent 容器只读挂载
/proc、/sys与 docker.sock。 - TLS / 网络:Intake 强制 HTTPS 443;内网走
proxy.https,用DD_PROXY_HTTPS与no_proxy;开启日志脱敏(Sensitive Data Scanner)与logs_config的 scrubber 规则。 - 配置即代码:
datadog.yaml、Integration conf、Monitor/Dashboard JSON 全部入库,用 Terraform Provider 或 API 脚本幂等下发(GitOps 备份)。 - 升级顺序:先在预发主机升到目标 Agent 大版本(以官方最新稳定版为准)→
datadog-agent status验证 → 灰度生产 → 失败sudo datadog-agent stop+ 安装旧版本回滚;K8s 用 Helmhelm upgrade/helm rollback <REVISION>,注意 CRD 与 Operator 版本兼容。
11. 常见坑
| # | 现象 | 原因 | 解决 |
|---|---|---|---|
| 1 | 装完看不到主机 | DD_SITE 与账号地域不一致 |
用控制台安装页生成的命令,确认站点 |
| 2 | 数据延迟 / 被丢弃 | 主机时间不同步 | 部署 NTP/chrony 并校验 |
| 3 | 自定义指标账单暴涨 | 把 user_id/pod_name 等高基数当 tag |
去高基数字段,配 Metrics without Limits |
| 4 | 日志费远超预期 | ⚠️ 摄入与索引分别计费,默认全量索引 | 只索引必要日志,其余走 Flex Storage / 归档 |
| 5 | 自动扩缩容后账单跳涨 | high-watermark 按低 99% 小时峰值计费,持续高峰不豁免 | 用混合月/小时方案与 Budgets 预算告警 |
| 6 | 容器超配额另计费 | Pro/Enterprise 每主机含固定容器数(以官方定价页为准) | 评估节点密度,选合适套餐或控制容器数 |
| 7 | APM 服务不出现 | 未启用 apm_config 或 SDK 未连到 8126 |
开 APM,统一 DD_AGENT_HOST / DD_SERVICE / DD_ENV |
| 8 | Monitor 反复误报 | 未设 evaluation_delay / for 等价的窗口 |
调大窗口与 new_group_delay,用 anomaly monitor |
| 9 | 用错 API Key 调 API 报 403 | API Key 只用于上报,改数据需 Application Key | 调用 /api/* 同时带 DD-API-KEY 与 DD-APPLICATION-KEY |
| 10 | flare 泄露内部配置 |
⚠️ 会把本地配置与日志打包上传 | 发送前脱敏,限定接收方 |
| 11 | 代理环境指标发不出去 / 删 Monitor 找不回 | 只配 http 未配 https、漏 no_proxy;⚠️ API DELETE 不可撤销 |
配 proxy.https 与 DD_PROXY_HTTPS;删前先 GET 导出 JSON 备份 |
12. 速查表
| 项 | 值 / 命令 |
|---|---|
| 官网 / 文档 | https://www.datadoghq.com/ · https://docs.datadoghq.com/ |
| 定价页 | https://www.datadoghq.com/pricing/ · https://docs.datadoghq.com/account_management/billing/pricing/ |
| Agent 安装脚本 | https://install.datadoghq.com/scripts/install_script.sh(SSI 用 install_script_agent7.sh) |
| 主配置 | /etc/datadog-agent/datadog.yaml |
| 集成配置目录 | /etc/datadog-agent/conf.d/<name>.d/conf.yaml |
| 日志路径 | /var/log/datadog/agent.log、trace-agent.log、process-agent.log |
| Agent 状态 | sudo datadog-agent status |
| 配置校验 | sudo datadog-agent configcheck |
| 单集成自检 | sudo datadog-agent check <INTEGRATION> |
| 诊断打包 | sudo datadog-agent flare(⚠️ 脱敏) |
| DogStatsD 端口 | UDP 8125(可配 UDS) |
| API Key / App Key 头 | DD-API-KEY / DD-APPLICATION-KEY |
| 常用 API | /api/v1/monitor、/api/v1/dashboard、/api/v2/series、/api/v1/query(以官方 API 文档为准) |
| Helm 仓库 | https://helm.datadoghq.com ,chart datadog/datadog |
| 控制台入口 | Infrastructure / Metrics / APM / Logs / Monitors / Dashboards / Integrations |
13. 选型建议与同类对比
| 维度 | 自建(Prometheus + Grafana) | Datadog(商业 SaaS) | 云厂商监控 |
|---|---|---|---|
| 部署运维 | 自管采集、存储、升级、扩容 | 免运维,装 Agent 即可 | 免管控制面,深度绑定自家云 |
| 功能广度 | 指标 + 告警 + 可视化,日志/APM 需另接 | 指标/日志/APM/RUM/安全/SLO 一体 | 指标 + 云产品监控 + 事件告警 |
| 成本模型 | 算力 + 存储 + 人力,大规模边际成本低 | 按主机/容器/日志/指标/APM 多维计费,规模大时昂贵 | 按调用量/series/存储计费,通常最低 |
| 数据主权 | 完全自控 | ⚠️ 数据出境到 SaaS,需评估合规 | 数据在云账号同地域 |
| 定制能力 | 最高(CRD + PromQL + 任意 exporter) | 中(受平台约束,但开箱即用) | 中低(受托管限制) |
| 多云统一 | 需自建聚合层 | 原生全局视图,最强 | 各云割裂,需自行汇总 |
| 信创/国产化 | 可控,易适配国产发行版 | 需确认境内节点与合规资质 | 主流云有信创/政务云形态 |
选 Datadog:无专职平台团队、多云混合、需要 APM/日志与指标快速关联、愿意为免运维付费。不选:数据严禁出境、成本极度敏感的超大规模、要求完全自主可控存储。常见混用:云产品基础告警与账单用云监控、核心业务用 Datadog、超大规模冷指标存自建对象存储;合规业务放在境内自建栈。
14. 参考链接
- 官网:https://www.datadoghq.com/
- 文档首页:https://docs.datadoghq.com/
- Agent 入门:https://docs.datadoghq.com/getting_started/agent/
- Agent 命令:https://docs.datadoghq.com/agent/configuration/agent-commands/
- 配置文件:https://docs.datadoghq.com/agent/configuration/agent-configuration-files/
- 计费说明:https://docs.datadoghq.com/account_management/billing/pricing/
- 定价页:https://www.datadoghq.com/pricing/
- DogStatsD:https://docs.datadoghq.com/extend/dogstatsd/
- Monitors:https://docs.datadoghq.com/monitors/
- K8s 安装:https://docs.datadoghq.com/containers/kubernetes/installation
- Agent 源码:https://github.com/DataDog/datadog-agent