Prometheus
time series metrics collect toolkit
提供了 UI 服务,默认端口 30313
主要作用就是监控一下我们服务的各项指标,也有许多包已经集成了这个功能,基本上查找一下配置一下就可以快速的展示出各项指标了
业务指标
但例如 java_gc,go_gc,node_request_total 这种指标对我们来说没有特别大的用处,我们的着力点应该在于提取业务指标,各个业务系统数据源不同逻辑不同导致无法使用通用型第三方包来构建我们的指标。
这个时候就出现了 prometheus-exporter
用来放出自定义的业务指标,等待 prometheus 来此处收集。
prometheus exporter
其实很简单,就是攒一些 prometheus 数据格式的数据放入 /metrics
路由中等待 scrape 就好
下面使用 Go 来举例子
这里使用了 godror 驱动 oracle,prometheus/client_golang 客户端,logrus 日志模块
一些命令行参数
main 函数主要就是构造 exporter 对象然后启动 http 服务
exporter 结构体中加入了同步锁,封装好的 oracle 客户端比较重要的是 metricDescriptions
和 metricMap
这几个指标 map
作为 prometheus 的 exporter 需要实现两个接口,一个是输入描述的 Describe
一个是收集数据的 Collect
Collect,循环 map 然后将数据和字符串传入 ch 管道中
Describe 相同都是向 ch 放入构建好的 指针类型对象
接下来看 map 中到底是什么
map 为 string 对应的匿名函数,函数类型为 MetricHandler
很好理解,将管道传入匿名函数,结构体传入匿名函数,然后利用结构体的 oracleClient 执行 sql 构建 Metric 结构体传入 ch 中即可
Over
整个流程非常简单,由于公司的 exporter 不可能开源,所以这里提供 redis-exporter 地址以供参考
https://github.com/oliver006/redis_exporter
2020 结束,最后一篇简单的参考教程
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于