Prometheus Exporter (十八)Graphite Exporter
本文已经收录在 Prometheus 合集 Prometheus 都可以采集那些指标?-- 常用 Exporter 合集 中。
Graphite 是一个开源实时的、显示时间序列度量数据的图形系统。Graphite 并不收集度量数据本身,而是像一个数据库,通过其后端接收度量数据,然后以实时方式查询、转换、组合这些度量数据。Graphite 支持内建的 Web 界面,它允许用户浏览度量数据和图。Graphite 通常用于监控基础设施级别的度量,比如 CPU、内存、I/O 利用率、网络吞吐量和延迟,当然 Graphite 在应用程序级的度量和业务级的度量方面也很不错。
针对 Graphite Prometheus 开发了 Graphite Exporter 来导出 Graphite 的监控指标,官方仓库是 https://github.com/prometheus/graphite_exporter ,最新版本是 0.12.0 ,发布于 2021 年 12 月 1 日。
Graphite Exporter 是一个在 Graphite plaintext 协议中导出监控数据的 Exporter,它通过 TCP 和 UDP 接受数据,并对它们进行转换和公开以供 Prometheus 使用。
Graphite Exporter 对于从现有的 Graphite 设置导出监控指标非常有用,对于核心 Prometheus 出品的 Node Exporter 不包含的指标也很有用。
安装运行
下载 Graphite Exporter 的二进制包,直接执行即可
如果需要配置映射关系,那么可以使用如下参数指定映射关系文件
配置现有的监控,将 Graphite plaintext 数据以 UDP 或 TCP 发送到 9109 端口。举个简单的例子:
接下来就可以在 http://localhost:9108/metrics 看到可以使用的 Metric 。
为了避免使用无限制的内存,指标将在最后一次推送出去的 5 分钟内被垃圾收集。这个可以通过 --graphite.sample-expiry
参数来配置。
也可以使用容器来启动。
Graphite Tag
Graphite Exporter 接受 carbon 格式标记的指标,配置映射中指定的 label 优先级高于于指标中的 label。如果在一个度量中提供了有效标记和无效标记,那么将删除无效标记,并增加graphite_tag_parse_failures
计数器。Exporter 可以接受不一致的标签集,但这可能会导致在 Prometheus 中查询数据时出现问题。
指标 Mapping 和 Configuration
从 v0.2.0 版本之后有一个破坏性的变化,Statsd Exporter 使用 YAML 格式的配置文件。
YAML 配置
可以配置 Graphite Exporter 以便通过 YAML 配置文件将特定的以点分隔 Graphite 指标转换为带 label 的 Prometheus 指标,该文件与 statsd_exporter 共享语法和逻辑。可以参照 statsd_exporter 文档来进行配置,但是,目前 graphite_exporter 还不支持所有解析特性。任何基于 'timer_type' 选项的功能将不起作用。否则,正则匹配、组、匹配、删除等行为会按预期的值进行生效。
在配置文件中不匹配任何映射的指标被转换为不带任何标签的 Prometheus 指标,指标名称中除了 _
and :
以外的所有非字母数字字符都被替换为 _
。
如果您有一组非常大的指标,可能想要跳过那些不匹配映射配置的指标。如果是这种情况,你可以使用--graphite.mapping-strict-match
参数强制这种行为,这样就可以存储真正需要的指标。
一个简单的配置映射示例如下:
把这些 Graphite 指标转换为 Prometheus 指标如下:
转换 Legacy 配置
如果您有一个使用遗留映射语法的现有配置文件,那么您可以使用 statsd-exporter-convert
将其更新为新的基于 YAML 的语法。下面是转换旧的示例语法:
导入 Whisper 数据
这是一个实验性质的功能。
从 Graphite 导入数据可以使用自带的 getool 工具,使用 getool create-blocks --help
查看如何使用。
为了以合理的资源数量导入长期数据,可以增加每个生成的 TSDB 块的持续时间。 --block-duration
参数的值必须是 2 个小时的整数倍,比如 ,4h,8h 等等。
要将数据合并到现有的 Prometheus 存储目录中,请使用 --storage.tsdb.allow-overlapping-blocks
参数启动 Prometheus
不兼容 Graphite bridge
这个 Exporter 不能与 Java 客户端或 Python 客户端 Graphite bridge 结合使用。在向 Graphite 数据模型的转换和返回过程中,信息会丢失。此外,客户端库和 Exporter 之间的默认度量存在冲突。
相反,将 Prometheus 配置为直接抓取您的应用程序,而不将 Exporter 放在中间。对于批处理或临时作业,使用 Pushgateway 来解决。
TLS 和 basic authentication
Graphite Exporte 支持 TLS 和 basic authentication ,这使得可以更好地控制各种 HTTP 接口。使用 TLS 和 basic authentication 需要通过 --web.config.file
参数来指定文件,这个文件的格式也是老朋友了,很多 Exporter 都使用这个格式,这个格式的描述就是 Exporter-Toolkit
版权声明: 本文为 InfoQ 作者【耳东@Erdong】的原创文章。
原文链接:【http://xie.infoq.cn/article/8185db2a25a88c9917b706754】。未经作者许可,禁止转载。
评论