Telegraf 发送指标给 Prometheus

秦晓辉@快猫星云 2023-02-01 06:06:10

Telegraf 简介

Telegraf 作为一个指标层面的 all-in-one 的采集器,用途广泛,Telegraf 具备多种 output 插件,本篇介绍如何使用 prometheus remote write 方式发送数据给后端。

Telegraf 具体的介绍之前讲过很多了,不在这里展开了,如果想看历史文章,可以关注公众号 SRETalk,搜索(搜索关键字 Telegraf)历史文章,有好几篇调研笔记。

Telegraf 输出插件

Telegraf 支持多种 output plugin,可以把采集到的数据发给多种后端,比如 OpenTSDB、Datadog 等,之前讲解 Nightingale 和 Telegraf 对接的时候,大都推荐使用 outputs.opentsdb 插件与 Nightingale 对接。实际上,OpenTSDB 的方式比较简单易于理解,性能不好,更好的发送方式其实是通过 prometheus remote write 协议来发送指标。

在 telegraf.conf 里增加下面的配置:

[[outputs.http]]
  url = "http://localhost:19000/prometheus/v1/write"
  data_format = "prometheusremotewrite"
  [outputs.http.headers]
     Content-Type = "application/x-protobuf"
     Content-Encoding = "snappy"
     X-Prometheus-Remote-Write-Version = "0.1.0"

这是开启了 Telegraf 的 http output 插件,通过 http 方式发送指标给后端,发送地址配置的是 http://localhost:19000/prometheus/v1/write 这是 n9e-server 的地址,因为 n9e-server 支持接收 prometheus remote write 数据,所以通过这种方式,Telegraf 就可以把数据推给 Nightingale 了。

当然,也可以把数据直接推给 Prometheus,url 配置为 Prometheus 的 remote write 地址即可,比如:http://localhost:9090/api/v1/write。前提是 Prometheus 需要开启 remote-write 的 feature,怎么开启?在 Prometheus 的启动参数中增加:--web.enable-remote-write-receiver 即可。

Telegraf 发给后端的监控指标,都会带有一个 host 标签来标识 Telegraf 所在机器的机器名,host 这个标签比较通用,容易和实际的监控数据的标签冲突,通过 remote write 方式发数据给 Nightingale 的时候,我们建议做如下调整:

1, 在 [global_tags] 中增加一个标签,标签名是 agent_hostname,标签值设置为本机的机器名,比如

[global_tags]
  agent_hostname = "telegraf-flashcat.cloud"

2, 在 [agent] 配置段中忽略 hostname 字段,配置如下:

[agent]
  ## Override default hostname, if empty use os.Hostname()
  hostname = ""
  ## If set to true, do no set the "host" tag in the telegraf agent.
  omit_hostname = true

这样一来,Telegraf 就会忽略 host 字段,同时,我们又设置了全局标签 agent_hostname,Telegraf 就会给所有时序数据都附上 agent_hostname 这个标签,Nightingale 服务端收到这个数据之后,看到 agent_hostname 标签,就会当做机器标识,自动 rename 成 ident,写入 target 表,这样你就可以在对象列表里看到了。

关于作者

本文作者秦晓辉Flashcat合伙人,文章内容是Flashcat技术团队共同沉淀的结晶,作者做了编辑整理,我们会持续输出监控、稳定性保障相关的技术文章,文章可转载,转载请注明出处,尊重技术人员的成果。

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat