从代理下发送Prometheus数据到Datadog
我想做的事情
我希望将本地的Prometheus数据发送到Datadog。
设定情况
针对以下情况进行实施:
– 为了连接到DataDog,需要通过代理。
– DataDog接收的帐户由多个基础设施团队共享,发送不必要的指标等需谨慎。
– 在Docker容器环境下执行。
– Prometheus将使用私有证书进行HTTPS连接。
普罗米修斯整合
解释DataDog和Prometheus Integration1的步骤。
安装Integration
获取DataDog API密钥
按照 [集成]→[APIs]→[API密钥]→[新API密钥]的顺序,创建一个新的 DataDog API密钥。
安装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。
启动 DataDog Agent
启动代理。
docker-compose up -d
在DataDog平台上查看
当在[Metrics] → [Summary]菜单中使用搜索菜单以YOUR_NAMESPACE作为关键词进行搜索时,可以发现Prometheus的数据作为自定义指标被发送到DataDog。
请解释不明之处。
请澄清不清楚的地方。
请阐述不明白的部分。
我稍微查了一下关于定制度量(Custom Metrics)的费用5。
定制度量在Pro计划(每个主机每月15美元)中有一个服务上限,即每个主机最多有100个度量。这次我们使用了DataDog的免费试用,只使用了一个主机。根据文档显示,定制度量最多只能有100个度量,但根据上述截图显示,度量数为1046…
这是怎么回事呢?
难道免费试用是无上限的吗…?
请参考相关资料
有用的网站参考。
– 将 Prometheus 的指标发送到 Datadog。
– Agent 环境变量。
DataDog Prometheus 将以自定义指标的形式获取到的指标全部视为自定义指标。
GitHub DataDog代理Prometheus配置示例。
Prometheus联邦。
联邦的Prometheus URL不起作用 #6091。
自定义指标的计费。