Prometheus官网维护了大量的Exporter, 很多都是开箱即用,非常方便,但有时业务要接入Prometheus时, 还需要业务端开发Exporter,好在Prometheus定制了一套流程的Client开发流程,非常容易接入.
实现方式
编写 Exporter 的两种方式,分别是:
- 自己的代码定时刷新值
- 在 Prometheus 抓取的时候实时获取值
这两种方式本质上没有差别,但是在采集时有一些差别:
- 方式一可以以几乎忽略的延迟返回监控数据, 但无法保证数据是最新值.
- 方式二可能会因为一些难以获取的值而超时或者很久才会返回值
一般情况下都是使用第二种方式,只需要我们在业务代码中实现Collect接口即可
Prometheus的官网写明了实现自己的exporter需要的流程, 看writing_exporters
Example
1 | package main |
这是个最简单的例子,Prometheus官网推荐我们参考haproxy_exporter实现,大家可参考这里
Node_exporter算是比较复杂的实现,有兴趣也可以看看.