linux cpu占用率如何看
364
2022-10-09
#yyds干货盘点# Prometheus Exporter(十八) Graphite Exporter
本文已经收录在 Prometheus 合集 Prometheus 都可以采集那些指标?-- 常用 Exporter 合集 中。
Graphite 是一个开源实时的、显示时间序列度量数据的图形系统。Graphite 并不收集度量数据本身,而是像一个数据库,通过其后端接收度量数据,然后以实时方式查询、转换、组合这些度量数据。Graphite 支持内建的Web 界面,它允许用户浏览度量数据和图。Graphite 通常用于监控基础设施级别的度量,比如CPU、内存、I/O利用率、网络吞吐量和延迟,当然Graphite在应用程序级的度量和业务级的度量方面也很不错。
针对 Graphite Prometheus 开发了 Graphite Exporter 来导出 Graphite 的监控指标,官方仓库是 ,最新版本是 0.12.0 ,发布于 2021 年 12 月 1 日。
Graphite Exporter 是一个在 Graphite plaintext 协议中导出监控数据的 Exporter,它通过 TCP 和 UDP 接受数据,并对它们进行转换和公开以供 Prometheus 使用。
Graphite Exporter 对于从现有的 Graphite 设置导出监控指标非常有用,对于核心 Prometheus 出品的 Node Exporter 不包含的指标也很有用。
安装运行
下载 Graphite Exporter 的二进制包,直接执行即可
./graphite_exporter
如果需要配置映射关系,那么可以使用如下参数指定映射关系文件
./graphite_exporter --graphite.mapping-config=graphite_exporter_mapping
配置现有的监控,将 Graphite plaintext 数据以 UDP 或 TCP 发送到9109 端口。举个简单的例子:
echo "test_tcp 1234 $(date +%s)" | nc localhost 9109 echo "test_udp 1234 $(date +%s)" | nc -u -w1 localhost 9109
接下来就可以在 看到可以使用的 Metric 。
为了避免使用无限制的内存,指标将在最后一次推送出去的5分钟内被垃圾收集。这个可以通过 --graphite.sample-expiry 参数来配置。
也可以使用容器来启动。
docker pull prom/graphite-exporter:v0.12.0 docker run -d -p 9108:9108 -p 9109:9109 -p 9109:9109/udp \ -v ${PWD}/graphite_mapping.conf:/tmp/graphite_mapping.conf \ prom/graphite-exporter:v0.12.0 \ --graphite.mapping-config=/tmp/graphite_mapping.conf
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 参数强制这种行为,这样就可以存储真正需要的指标。
一个简单的配置映射示例如下:
mappings: - match: test.dispatcher.*.*.* name: dispatcher_events_total labels: action: $2 job: test_dispatcher outcome: $3 processor: $1 - match: '*.signup.*.*' name: signup_events_total labels: job: ${1}_server outcome: $3 provider: $2 - match: 'servers\.(.*)\.networking\.subnetworks\.transmissions\.([a-z0-9-]+)\.(.*)' match_type: regex name: 'servers_networking_transmissions_${3}' labels: hostname: ${1} device: ${2}
把这些 Graphite 指标转换为 Prometheus 指标如下:
test.dispatcher.FooProcessor.send.success => dispatcher_events_total{processor="FooProcessor", action="send", outcome="success", job="test_dispatcher"} foo_product.signup.facebook.failure => signup_events_total{provider="facebook", outcome="failure", job="foo_product_server"} test.web-server.foo.bar => test_web__server_foo_bar{} servers.rack-003-server-c4de.networking.subnetworks.transmissions.eth0.failure.mean_rate => servers_networking_transmissions_failure_mean_rate{device="eth0",hostname="rack-003-server-c4de"}
转换 Legacy 配置
如果您有一个使用遗留映射语法的现有配置文件,那么您可以使用 statsd-exporter-convert 将其更新为新的基于YAML的语法。下面是转换旧的示例语法:
$ go get -u github.com/bakins/statsd-exporter-convert $ cat example.conf test.dispatcher.*.*.* name="dispatcher_events_total" processor="$1" action="$2" outcome="$3" job="test_dispatcher" *.signup.*.* name="signup_events_total" provider="$2" outcome="$3" job="${1}_server" $ statsd-exporter-convert example.conf mappings: - match: test.dispatcher.*.*.* name: dispatcher_events_total labels: action: $2 job: test_dispatcher outcome: $3 processor: $1 - match: '*.signup.*.*' name: signup_events_total labels: job: ${1}_server outcome: $3 provider: $2
导入 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
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~