从代理下发送Prometheus数据到Datadog

我想做的事情

我希望将本地的Prometheus数据发送到Datadog。

设定情况

针对以下情况进行实施:
– 为了连接到DataDog,需要通过代理。
– DataDog接收的帐户由多个基础设施团队共享,发送不必要的指标等需谨慎。
– 在Docker容器环境下执行。
– Prometheus将使用私有证书进行HTTPS连接。

普罗米修斯整合

解释DataDog和Prometheus Integration1的步骤。

安装Integration

image.png

获取DataDog API密钥

按照 [集成]→[APIs]→[API密钥]→[新API密钥]的顺序,创建一个新的 DataDog API密钥。

image.png

安装DataDog代理

使用Docker Compose进行安装。

version: '3.3'
services:
    agent:
        image: 'datadog/agent:7'
        container_name: dd-agent
        restart: always
        volumes:
            - '/var/run/docker.sock:/var/run/docker.sock:ro'
            # 余計なメトリクスを送信しないように、デフォルトのvolumeオプションをコメントアウトした
            # - '/proc/:/host/proc/:ro'
            # - '/sys/fs/cgroup/:/host/sys/fs/cgroup:ro'
            - './prometheus.d:/etc/datadog-agent/conf.d/prometheus.d' # Prometheus連携用設定ファイルをホストからマウントさせる
        environment:
            - DD_API_KEY=$DD_API_KEY
            - DD_SITE=$DD_SITE
            - DD_HOSTNAME=$DD_HOSTNAME # デフォルトではDataDog agentが自動で設定するが、docker版agentの場合はOSのhostnameが取得できない可能性があるため、手動で設定した
            - DD_PROXY_HTTP=$DD_PROXY_HTTP
            - DD_PROXY_HTTPS=$DD_PROXY_HTTPS
            - DD_PROXY_NO_PROXY=$DD_PROXY_NO_PROXY
DD_API_KEY=YOUR_DD_API_KEY
DD_SITE=datadoghq.com
DD_HOSTNAME=YOUR_DD_HOST_NAME
DD_PROXY_HTTP=YOUR_PROXY_URL
DD_PROXY_HTTPS=YOUR_PROXY_URL
DD_PROXY_NO_PROXY="localhost,127.0.0.1,YOUR_PROMETHEUS_FQDN" # Prometheusに接続する場合はプロキシを経由する必要がないため、NO_PROXYに設定した

DataDog Agent 的 Prometheus 連接設定 2 如下所示:
namespace 是用於 DataDog 上的指標名稱前綴。建議設定具有團隊特定的明顯 namespace。
由於可取得的指標數量預設上限為 2000,因此需要根據需要設定 max_returned_metrics,以調整上限。
如果要使用所有取得的指標,請將 metrics 設定為 *。

init_config:

instances:
  - prometheus_url: 'https://YOUR_PROMETHEUS_FQDN/federate?match[]=%7Bjob%3D~%22.%2B%22%7D'
    namespace: 'YOUR_NAMESPACE'
    metrics:
      - '*'
    ssl_ca_cert: false # プライベート証明書のため、SSL検証を無効化する。本来であれば、プライベート証明書を発行したCAのルート証明書を指定することが望ましい。
    max_returned_metrics: 20000

关于prometheus_url的补充说明。
在将Prometheus的度量数据发送到DataDog时,DataDog agent将使用Prometheus的Federation3端点。
这个Federation端点使用查询参数来指定要获取的Prometheus度量的标签。由于使用PromQL,可以使用正则表达式。
由于要通过查询参数传递,因此需要使用URL编码来编码值4。

エンコード前エンコード後{job=~”.+”}%7Bjob%3D~%22.%2B%22%7D

启动 DataDog Agent

启动代理。

docker-compose up -d

在DataDog平台上查看

当在[Metrics] → [Summary]菜单中使用搜索菜单以YOUR_NAMESPACE作为关键词进行搜索时,可以发现Prometheus的数据作为自定义指标被发送到DataDog。

image.png

请解释不明之处。
请澄清不清楚的地方。
请阐述不明白的部分。

我稍微查了一下关于定制度量(Custom Metrics)的费用5。
定制度量在Pro计划(每个主机每月15美元)中有一个服务上限,即每个主机最多有100个度量。这次我们使用了DataDog的免费试用,只使用了一个主机。根据文档显示,定制度量最多只能有100个度量,但根据上述截图显示,度量数为1046…
这是怎么回事呢?
难道免费试用是无上限的吗…?

请参考相关资料

有用的网站参考。
– 将 Prometheus 的指标发送到 Datadog。
– Agent 环境变量。

DataDog Prometheus 将以自定义指标的形式获取到的指标全部视为自定义指标。

GitHub DataDog代理Prometheus配置示例。

Prometheus联邦。

联邦的Prometheus URL不起作用 #6091。

自定义指标的计费。

广告
将在 10 秒后关闭
bannerAds