如何构建一个Prometheus导出器?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1402个文字,预计阅读时间需要6分钟。
Prometheus官方和社区提供了丰富的exporter,涵盖数据库、中间件、操作系统、存储、硬件设备等,整体可满足80%的监控需求。主要可通过exporters和exporterhub.io查看,这些exporter基本可覆盖大部分监控需求。
Prometheus 官方和社区提供了非常多的exporter,涵盖数据库、中间件、OS、存储、硬件设备等,具体可查看exporters、exporterhub.io,通过这些 exporter 基本可以覆盖80%的监控需求,依然有小部分需要通过自定义脚本或者定制、修改社区exporter实现。本文我们将学习如何通过go编写一个简单的expoter用于暴露OS的负载。
要实现的三个load指标如下:
exporter的核心是http服务,对外暴露exporter本身运行时指标和监控信息。我们可以直接通过net/http暴力实现,更好的方式是使用Prometheus 官方提供的client library 来简化一部分工作。
client library官方支持语言:
- Go
- Java or Scala
- Python
- Ruby
- Rust
也有社区支持的其他语言库如C、C++、PHP等
获取数据源在使用client library暴露数据之前,我们得先找到数据源,以linux为例要获取系统负载我们可以读取/proc目录下的loadavg文件。涉及到各类操作系统指标的获取可以参考官方的node-exporter,这里我们给他写成load包,等会直接调用GetLoad()就能拿到数据了。
本文共计1402个文字,预计阅读时间需要6分钟。
Prometheus官方和社区提供了丰富的exporter,涵盖数据库、中间件、操作系统、存储、硬件设备等,整体可满足80%的监控需求。主要可通过exporters和exporterhub.io查看,这些exporter基本可覆盖大部分监控需求。
Prometheus 官方和社区提供了非常多的exporter,涵盖数据库、中间件、OS、存储、硬件设备等,具体可查看exporters、exporterhub.io,通过这些 exporter 基本可以覆盖80%的监控需求,依然有小部分需要通过自定义脚本或者定制、修改社区exporter实现。本文我们将学习如何通过go编写一个简单的expoter用于暴露OS的负载。
要实现的三个load指标如下:
exporter的核心是http服务,对外暴露exporter本身运行时指标和监控信息。我们可以直接通过net/http暴力实现,更好的方式是使用Prometheus 官方提供的client library 来简化一部分工作。
client library官方支持语言:
- Go
- Java or Scala
- Python
- Ruby
- Rust
也有社区支持的其他语言库如C、C++、PHP等
获取数据源在使用client library暴露数据之前,我们得先找到数据源,以linux为例要获取系统负载我们可以读取/proc目录下的loadavg文件。涉及到各类操作系统指标的获取可以参考官方的node-exporter,这里我们给他写成load包,等会直接调用GetLoad()就能拿到数据了。

