AutoMQ 支持将指标导出到 Datadog 进行监控和告警。本文介绍两种集成方式,适用于不同的部署环境:
- Kubernetes:使用 Datadog Agent 内置的 OpenTelemetry(OTEL)Collector,通过 Kubernetes 服务发现抓取 AutoMQ Pod 的 Prometheus 指标。
- Linux(EC2 / VM):使用 Vector 接收 AutoMQ 的 Prometheus Remote Write 数据,并转发到 Datadog。
前提条件
- 已部署并启用指标导出的 AutoMQ 集群
- 有效的 Datadog API Key
- Datadog Site URL(例如
datadoghq.com、us3.datadoghq.com、datadoghq.eu)
方式一:Kubernetes 环境使用 Datadog Agent(OTEL Collector)
该方式下,Datadog Agent 以 DaemonSet 形式运行,内置 OTEL Collector。Collector 通过 Kubernetes 服务发现抓取 AutoMQ Pod 的 Prometheus 指标,然后导出到 Datadog。
AutoMQ Pods(在 9090 端口暴露 Prometheus 指标)
↓ Prometheus 抓取(Kubernetes 服务发现)
Datadog Agent(内置 OTEL Collector)
↓ 导出到 Datadog
Datadog
步骤 1:配置 AutoMQ 指标导出
在 Kubernetes 上通过 Helm 部署 AutoMQ 时,在 Helm values 中将指标导出器设置为 Prometheus 模式:
global:
config: |
s3.telemetry.metrics.exporter.uri=prometheus://?host=0.0.0.0&port=9090
此配置会在每个 AutoMQ Pod 的 9090 端口暴露 Prometheus 格式的指标。
为了让 Datadog Agent 能发现这些 Pod,请在 controller.annotations 和 broker.annotations 下添加以下配置:
controller:
annotations:
prometheus.io/automq-scrape: "true"
prometheus.io/automq-port: "9090"
prometheus.io/automq-path: "/metrics"
broker:
annotations:
prometheus.io/automq-scrape: "true"
prometheus.io/automq-port: "9090"
prometheus.io/automq-path: "/metrics"
这些 annotation key 与步骤 2 中的 relabel_configs 一一对应。
步骤 2:创建 Datadog Agent values 文件
创建 datadog-values.yaml 文件,配置 OTEL Collector。Collector 使用 Kubernetes 服务发现来查找带有抓取注解的 AutoMQ Pod。
datadog:
otelCollector:
enabled: true
config: |
receivers:
prometheus:
config:
scrape_configs:
- job_name: "automq"
scrape_interval: 15s
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_automq_scrape]
action: keep
regex: true
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_automq_port]
action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
target_label: __address__
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_automq_path]
action: replace
target_label: __metrics_path__
regex: (.+)
exporters:
datadog:
api:
key: ${env:DD_API_KEY}
site: ${env:DD_SITE}
processors:
infraattributes:
cardinality: 2
service:
pipelines:
metrics:
receivers: [prometheus]
processors: [infraattributes]
exporters: [datadog]
本示例使用以下组件:
| 组件 | 用途 |
|---|
prometheus receiver | 通过 Kubernetes 服务发现找到 AutoMQ Pods,并抓取其 Prometheus 指标端点。relabel_configs 会按注解筛选 Pod,并重写抓取目标的地址和路径。 |
datadog exporter | 将指标发送到 Datadog。API key 和 site 从 Agent 的环境变量中读取。 |
infraattributes processor | 可选。在相关资源属性可用时,为遥测数据添加 Datadog 基础设施标签。 |
该示例为 AutoMQ 配置了 Prometheus 抓取任务和指标 pipeline,并使用可选的 infraattributes processor 在相关资源属性可用时添加 Datadog 基础设施标签。OTLP receiver 和其他 pipeline(traces、logs)已省略。如需通过同一 Collector 采集其他应用的 OTLP 数据,请参考 Datadog DDOT Collector 文档 添加相应的 receiver 和 pipeline。
如果 AutoMQ 节点运行在带有 taint 的专用 Kubernetes 节点上,需要添加 toleration 以确保 Datadog Agent DaemonSet 能调度到这些节点:
agents:
tolerations:
- key: "dedicated"
operator: "Equal"
value: "automq"
effect: "NoSchedule"
步骤 3:部署 Datadog Agent
添加 Datadog Helm 仓库并创建 Kubernetes Secret 存储 API key:
helm repo add datadog https://helm.datadoghq.com
helm repo update
kubectl create secret generic datadog-secret \
--from-literal api-key=<your-datadog-api-key>
使用步骤 2 中的 values 文件安装 Datadog Agent:
helm install datadog-agent datadog/datadog \
-f datadog-values.yaml \
-n datadog --create-namespace \
--set datadog.apiKeyExistingSecret=datadog-secret \
--set datadog.site=<your-datadog-site>
将 <your-datadog-site> 替换为你的 Datadog Site(例如 datadoghq.com、us3.datadoghq.com、datadoghq.eu)。
步骤 4:在 Datadog 中验证
- 打开 Datadog,进入 Metrics > Explorer。
- 在搜索栏中输入指标名称前缀,搜索 AutoMQ 指标。
- 新指标可能需要 1–3 分钟才能显示。
AutoMQ 指标使用 Prometheus 命名规范(下划线分隔,例如 kafka_request_time_mean_milliseconds),而 Datadog 内置的 Apache Kafka 仪表盘依赖 Datadog Kafka 集成,使用点号分隔的命名(例如 kafka.request.time)。因此,AutoMQ 指标不会出现在内置仪表盘中。请使用 Datadog Metrics Explorer 直接查询 AutoMQ 指标,或使用下划线分隔的名称构建自定义仪表盘。可用指标请参考 Prometheus Metrics。
以下截图展示了命名差异 — Datadog 内置仪表盘使用点号分隔格式,而 AutoMQ 指标使用下划线分隔格式:
方式二:Linux 环境使用 Vector(Prometheus Remote Write)
该方式下,AutoMQ 通过 Prometheus Remote Write 协议将指标推送到本地的 Vector 实例,Vector 转换并转发数据到 Datadog。
Vector 是 Datadog 维护的可观测数据管道。对于独立 Linux 主机上的纯指标转发场景,它是完整 Datadog Agent 之外的一种可选方案。
AutoMQ(Linux 进程)
↓ Prometheus Remote Write(HTTP POST,protobuf/snappy)
Vector(Remote Write 端点:端口 9090,路径 /api/v1/write)
↓ 转发到 Datadog
Datadog
步骤 1:配置 AutoMQ 指标导出
在 AutoMQ 的 server.properties(或启动配置)中,将指标导出器设置为 Remote Write 模式,指向本地 Vector 实例:
s3.telemetry.metrics.exporter.uri=rw://?endpoint=http://localhost:9090/api/v1/write
rw:// 是 AutoMQ 的 Prometheus Remote Write 导出器协议前缀。
endpoint 指向 Vector 的 prometheus_remote_write source 地址。
AutoMQ 的 Remote Write URI 支持多种认证方式。由于 Vector 运行在同一主机上,通常不需要认证。| 认证方式 | URI 格式 |
|---|
| 无认证(默认) | rw://?endpoint=http://localhost:9090/api/v1/write |
| Basic Auth | rw://?endpoint=http://localhost:9090/api/v1/write&auth=basic&username=${user}&password=${pass} |
| Bearer Token | rw://?endpoint=http://localhost:9090/api/v1/write&auth=bearer&token=${token} |
步骤 2:安装 Vector
curl --proto '=https' --tlsv1.2 -sSfL https://sh.vector.dev | bash -s -- -y
确认安装成功:
步骤 3:配置 Vector
创建 Vector 配置文件:
sudo mkdir -p /etc/vector
sudo tee /etc/vector/vector.toml > /dev/null << 'EOF'
[sources.automq_in]
type = "prometheus_remote_write"
address = "0.0.0.0:9090"
path = "/api/v1/write"
[transforms.add_tags]
type = "remap"
inputs = ["automq_in"]
source = '''
.tags.service = "automq"
.tags.env = "local-test"
'''
[sinks.datadog_out]
type = "datadog_metrics"
inputs = ["add_tags"]
default_api_key = "${DATADOG_API_KEY}"
site = "${DATADOG_SITE}"
EOF
transforms.add_tags 部分是可选的,但建议添加,方便在 Datadog 中按标签过滤指标。
步骤 4:启动 Vector
调试模式 — 前台运行 Vector:
DATADOG_API_KEY="<your-api-key>" \
DATADOG_SITE="<your-datadog-site>" \
vector --config /etc/vector/vector.toml
生产模式 — 以 systemd 服务运行 Vector:
sudo mkdir -p /etc/default
sudo tee /etc/default/vector > /dev/null << 'EOF'
DATADOG_API_KEY=<your-api-key>
DATADOG_SITE=<your-datadog-site>
EOF
由于该文件包含 Datadog API key,需要收紧访问权限。同时,避免把真实 key 粘贴到共享的 shell 历史或日志中。
sudo chmod 600 /etc/default/vector
sudo tee /etc/systemd/system/vector.service > /dev/null << 'EOF'
[Unit]
Description=Vector
Documentation=https://vector.dev
After=network-online.target
Requires=network-online.target
[Service]
User=vector
Group=vector
EnvironmentFile=/etc/default/vector
ExecStart=/usr/bin/vector --config /etc/vector/vector.toml
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable vector
sudo systemctl start vector
步骤 5:验证
打开 Datadog Metrics > Explorer,搜索 AutoMQ 指标,并按 env 和 service 标签过滤。新指标可能需要 1–3 分钟才能显示。
参考资料