关于Prometheus Exporter

Published on with 0 views and 0 comments

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 结束,最后一篇简单的参考教程


标题:关于Prometheus Exporter
作者:fe
地址:https://blog.eiyouhe.com/articles/2020/12/31/1609418089449.html