跳转到主要内容
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.comus3.datadoghq.comdatadoghq.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.annotationsbroker.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.comus3.datadoghq.comdatadoghq.eu)。

步骤 4:在 Datadog 中验证

  1. 打开 Datadog,进入 Metrics > Explorer
  2. 在搜索栏中输入指标名称前缀,搜索 AutoMQ 指标。
  3. 新指标可能需要 1–3 分钟才能显示。
Kubernetes 集成后在 Datadog Metrics Explorer 中查看 AutoMQ 指标 Datadog Metrics Explorer 中 AutoMQ 指标详情
AutoMQ 指标使用 Prometheus 命名规范(下划线分隔,例如 kafka_request_time_mean_milliseconds),而 Datadog 内置的 Apache Kafka 仪表盘依赖 Datadog Kafka 集成,使用点号分隔的命名(例如 kafka.request.time)。因此,AutoMQ 指标不会出现在内置仪表盘中。请使用 Datadog Metrics Explorer 直接查询 AutoMQ 指标,或使用下划线分隔的名称构建自定义仪表盘。可用指标请参考 Prometheus Metrics
以下截图展示了命名差异 — Datadog 内置仪表盘使用点号分隔格式,而 AutoMQ 指标使用下划线分隔格式: Datadog 内置仪表盘使用点号分隔的指标命名 AutoMQ 指标使用下划线分隔的 Prometheus 命名

方式二: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 Authrw://?endpoint=http://localhost:9090/api/v1/write&auth=basic&username=${user}&password=${pass}
Bearer Tokenrw://?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
确认安装成功:
vector --version

步骤 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 指标,并按 envservice 标签过滤。新指标可能需要 1–3 分钟才能显示。 Vector 集成后在 Datadog Metrics Explorer 中查看 AutoMQ 指标

参考资料