关于 Prometheus Exporter

本贴最后更新于 1201 天前,其中的信息可能已经时移世改

Prometheus

time series metrics collect toolkit

提供了 UI 服务,默认端口 30313

image.png

主要作用就是监控一下我们服务的各项指标,也有许多包已经集成了这个功能,基本上查找一下配置一下就可以快速的展示出各项指标了

业务指标

但例如 java_gc,go_gc,node_request_total 这种指标对我们来说没有特别大的用处,我们的着力点应该在于提取业务指标,各个业务系统数据源不同逻辑不同导致无法使用通用型第三方包来构建我们的指标。

这个时候就出现了 prometheus-exporter 用来放出自定义的业务指标,等待 prometheus 来此处收集。

prometheus exporter

其实很简单,就是攒一些 prometheus 数据格式的数据放入 /metrics 路由中等待 scrape 就好

下面使用 Go 来举例子

image.png

这里使用了 godror 驱动 oracle,prometheus/client_golang 客户端,logrus 日志模块

image.png

一些命令行参数

image.png

main 函数主要就是构造 exporter 对象然后启动 http 服务

image.png

exporter 结构体中加入了同步锁,封装好的 oracle 客户端比较重要的是 metricDescriptionsmetricMap 这几个指标 map

作为 prometheus 的 exporter 需要实现两个接口,一个是输入描述的 Describe 一个是收集数据的 Collect

image.pngimage.png

Collect,循环 map 然后将数据和字符串传入 ch 管道中

image.png

Describe 相同都是向 ch 放入构建好的 指针类型对象

接下来看 map 中到底是什么

image.png

map 为 string 对应的匿名函数,函数类型为 MetricHandler

很好理解,将管道传入匿名函数,结构体传入匿名函数,然后利用结构体的 oracleClient 执行 sql 构建 Metric 结构体传入 ch 中即可

Over

整个流程非常简单,由于公司的 exporter 不可能开源,所以这里提供 redis-exporter 地址以供参考

https://github.com/oliver006/redis_exporter

2020 结束,最后一篇简单的参考教程

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...