> ## Documentation Index
> Fetch the complete documentation index at: https://docs.automq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 集成 Datadog 监控

> 通过 Kubernetes 上的 Datadog Agent 或 Linux 上的 Vector，将 AutoMQ 指标发送到 Datadog。涵盖 OpenTelemetry Collector 和 Prometheus Remote Write 两种集成方式。

AutoMQ 支持将指标导出到 [Datadog](https://www.datadoghq.com/) 进行监控和告警。本文介绍两种集成方式，适用于不同的部署环境：

* **Kubernetes**：使用 Datadog Agent 内置的 OpenTelemetry（OTEL）Collector，通过 Kubernetes 服务发现抓取 AutoMQ Pod 的 Prometheus 指标。
* **Linux（EC2 / VM）**：使用 [Vector](https://vector.dev/) 接收 AutoMQ 的 Prometheus Remote Write 数据，并转发到 Datadog。

## 前提条件

* 已部署并启用指标导出的 AutoMQ 集群
* 有效的 [Datadog API Key](https://docs.datadoghq.com/account_management/api-app-keys/)
* 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。

```text theme={null}
AutoMQ Pods（在 9090 端口暴露 Prometheus 指标）
    ↓  Prometheus 抓取（Kubernetes 服务发现）
Datadog Agent（内置 OTEL Collector）
    ↓  导出到 Datadog
Datadog
```

### 步骤 1：配置 AutoMQ 指标导出

在 Kubernetes 上通过 Helm 部署 AutoMQ 时，在 Helm values 中将指标导出器设置为 Prometheus 模式：

```yaml theme={null}
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` 下添加以下配置：

```yaml theme={null}
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。

```yaml theme={null}
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 基础设施标签。                                                             |

<Info>
  该示例为 AutoMQ 配置了 Prometheus 抓取任务和指标 pipeline，并使用可选的 `infraattributes` processor 在相关资源属性可用时添加 Datadog 基础设施标签。OTLP receiver 和其他 pipeline（traces、logs）已省略。如需通过同一 Collector 采集其他应用的 OTLP 数据，请参考 [Datadog DDOT Collector 文档](https://docs.datadoghq.com/opentelemetry/setup/ddot_collector/install/kubernetes_daemonset/?tab=helm) 添加相应的 receiver 和 pipeline。
</Info>

如果 AutoMQ 节点运行在带有 taint 的专用 Kubernetes 节点上，需要添加 toleration 以确保 Datadog Agent DaemonSet 能调度到这些节点：

```yaml theme={null}
agents:
  tolerations:
    - key: "dedicated"
      operator: "Equal"
      value: "automq"
      effect: "NoSchedule"
```

### 步骤 3：部署 Datadog Agent

添加 Datadog Helm 仓库并创建 Kubernetes Secret 存储 API key：

```bash theme={null}
helm repo add datadog https://helm.datadoghq.com
helm repo update
```

```bash theme={null}
kubectl create secret generic datadog-secret \
  --from-literal api-key=<your-datadog-api-key>
```

使用步骤 2 中的 values 文件安装 Datadog Agent：

```bash theme={null}
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 中验证

1. 打开 Datadog，进入 **Metrics > Explorer**。
2. 在搜索栏中输入指标名称前缀，搜索 AutoMQ 指标。
3. 新指标可能需要 1–3 分钟才能显示。

<img alt="Kubernetes 集成后在 Datadog Metrics Explorer 中查看 AutoMQ 指标" src="https://mintcdn.com/automq/EbkNUKzEtdG96TOk/zh/automq-cloud/monitoring-alert/integrating-metrics-with-datadog/1.webp?fit=max&auto=format&n=EbkNUKzEtdG96TOk&q=85&s=5afbb4919785bce73186faf7f08af4e1" width="1280" height="687" data-path="zh/automq-cloud/monitoring-alert/integrating-metrics-with-datadog/1.webp" />

<img alt="Datadog Metrics Explorer 中 AutoMQ 指标详情" src="https://mintcdn.com/automq/EbkNUKzEtdG96TOk/zh/automq-cloud/monitoring-alert/integrating-metrics-with-datadog/2.webp?fit=max&auto=format&n=EbkNUKzEtdG96TOk&q=85&s=dc7428a7ae02dafe283cf6d4c312c1f7" width="1280" height="682" data-path="zh/automq-cloud/monitoring-alert/integrating-metrics-with-datadog/2.webp" />

<Warning>
  AutoMQ 指标使用 Prometheus 命名规范（下划线分隔，例如 `kafka_request_time_mean_milliseconds`），而 Datadog 内置的 Apache Kafka 仪表盘依赖 Datadog Kafka 集成，使用点号分隔的命名（例如 `kafka.request.time`）。因此，AutoMQ 指标不会出现在内置仪表盘中。请使用 Datadog Metrics Explorer 直接查询 AutoMQ 指标，或使用下划线分隔的名称构建自定义仪表盘。可用指标请参考 [Prometheus Metrics](/zh/automq/observability/prometheus-metrics)。
</Warning>

以下截图展示了命名差异 — Datadog 内置仪表盘使用点号分隔格式，而 AutoMQ 指标使用下划线分隔格式：

<img alt="Datadog 内置仪表盘使用点号分隔的指标命名" src="https://mintcdn.com/automq/EbkNUKzEtdG96TOk/zh/automq-cloud/monitoring-alert/integrating-metrics-with-datadog/3.webp?fit=max&auto=format&n=EbkNUKzEtdG96TOk&q=85&s=42729ea218a218075f1bea9e95ea3b07" width="1280" height="627" data-path="zh/automq-cloud/monitoring-alert/integrating-metrics-with-datadog/3.webp" />

<img alt="AutoMQ 指标使用下划线分隔的 Prometheus 命名" src="https://mintcdn.com/automq/EbkNUKzEtdG96TOk/zh/automq-cloud/monitoring-alert/integrating-metrics-with-datadog/4.webp?fit=max&auto=format&n=EbkNUKzEtdG96TOk&q=85&s=ceec4146161fcaa87453f2c70cd5b873" width="1280" height="645" data-path="zh/automq-cloud/monitoring-alert/integrating-metrics-with-datadog/4.webp" />

## 方式二：Linux 环境使用 Vector（Prometheus Remote Write）

该方式下，AutoMQ 通过 Prometheus Remote Write 协议将指标推送到本地的 [Vector](https://vector.dev/) 实例，Vector 转换并转发数据到 Datadog。

Vector 是 Datadog 维护的可观测数据管道。对于独立 Linux 主机上的纯指标转发场景，它是完整 Datadog Agent 之外的一种可选方案。

```text theme={null}
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 实例：

```properties theme={null}
s3.telemetry.metrics.exporter.uri=rw://?endpoint=http://localhost:9090/api/v1/write
```

* `rw://` 是 AutoMQ 的 Prometheus Remote Write 导出器协议前缀。
* `endpoint` 指向 Vector 的 `prometheus_remote_write` source 地址。

<Info>
  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}`                   |
</Info>

### 步骤 2：安装 Vector

```bash theme={null}
curl --proto '=https' --tlsv1.2 -sSfL https://sh.vector.dev | bash -s -- -y
```

确认安装成功：

```bash theme={null}
vector --version
```

### 步骤 3：配置 Vector

创建 Vector 配置文件：

```bash theme={null}
sudo mkdir -p /etc/vector
```

```bash theme={null}
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
```

<Info>
  `transforms.add_tags` 部分是可选的，但建议添加，方便在 Datadog 中按标签过滤指标。
</Info>

### 步骤 4：启动 Vector

**调试模式** — 前台运行 Vector：

```bash theme={null}
DATADOG_API_KEY="<your-api-key>" \
DATADOG_SITE="<your-datadog-site>" \
vector --config /etc/vector/vector.toml
```

**生产模式** — 以 systemd 服务运行 Vector：

```bash theme={null}
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 历史或日志中。

```bash theme={null}
sudo chmod 600 /etc/default/vector
```

```bash theme={null}
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 分钟才能显示。

<img alt="Vector 集成后在 Datadog Metrics Explorer 中查看 AutoMQ 指标" src="https://mintcdn.com/automq/EbkNUKzEtdG96TOk/zh/automq-cloud/monitoring-alert/integrating-metrics-with-datadog/5.webp?fit=max&auto=format&n=EbkNUKzEtdG96TOk&q=85&s=913aa982db3535056b55cf28806e51c0" width="1280" height="463" data-path="zh/automq-cloud/monitoring-alert/integrating-metrics-with-datadog/5.webp" />

## 参考资料

* [Datadog Agent Helm Chart](https://github.com/DataDog/helm-charts/tree/main/charts/datadog)
* [Datadog OTEL Collector on Kubernetes](https://docs.datadoghq.com/opentelemetry/setup/ddot_collector/install/kubernetes_daemonset/?tab=helm)
* [Vector 文档](https://vector.dev/docs/)
* [Vector Prometheus Remote Write Source](https://vector.dev/docs/reference/configuration/sources/prometheus_remote_write/)
