这样的文本格式也有不足之处:
1. 文本内容可能过于冗长;
2. Prometheus 在解析时不能校验 HELP 和 TYPE 字段是否缺失,如果缺失 HELP 字段,这条样本数据的来源
可能就难以判断;如果缺失 TYPE 字段,Prometheus 对这条样本数据的类型就无从得知;
3. 相比于 protobuf,Prometheus 使用的文本格式没有做任何压缩处理,解析成本较高。
MySQL Server Exporter
针对被广泛使用的关系型数据库 MySQL,Prometheus 官方提供了 MySQL Server Exporter,支持 MySQL
5.6 及以上版本,对于 5.6 以下的版本,部分监控指标可能不支持。
MySQL Server Exporter 监控的信息包括了常用的 global status/variables 信息、schema/table 的统计信
息、user 统计信息、innodb 的信息以及主从复制、组复制的信息,监控指标比较全面。但是由于它提供的监
控指标中缺少对 MySQL 实例的标识,所以当一台主机上存在多个 MySQL 实例,需要运行多个 MySQL Server
Exporter 进行监控时,就会难以区分实例信息。具体使用方式可参考:
https://github.com/prometheus/mysqld_exporter
Node Exporter
Prometheus 官方的 Node Exporter 提供对 *NIX 系统、硬件信息的监控,监控指标包括 CPU 使用率/配置、
系统平均负载、内存信息、网络状况、文件系统信息统计、磁盘使用情况统计等。对于不同的系统,监控指标
会有所差异,如 diskstats 支持 Darwin, Linux, OpenBSD 系统;loadavg 支持 Darwin, Dragonfly, FreeBSD,
Linux, NetBSD, OpenBSD, Solaris 系统。Node Exporter 的监控指标没有对主机身份的标识,可以通过
relabel 功能在 Prometheus Server 端增加一些标识标签。具体使用方式可参考:
https://github.com/prometheus/node_exporter
如何实现一个 Exporter
编写一个简单的 Exporter
使用 prometheus/client_golang 包,我们来编写一个简单的 Exporter,包括 Prometheus 支持的四种监控指
标类型
package mainimport
("log""net/http""github.com/prometheus/client_golang/prometheus""github.com/prometheus/client
_golang/prometheus/promhttp")var (//使用GaugeVec类型可以为监控指标设置标签,这里为监控指标增
加一个标签"device"speed = prometheus.NewGaugeVec(prometheus.GaugeOpts{Name:
"disk_available_bytes",Help: "Disk space available in bytes",}, []string{"device"})tasksTotal
= prometheus.NewCounter(prometheus.CounterOpts{Name: "test_tasks_total",Help: "Total number
of test tasks",})taskDuration = prometheus.NewSummary(prometheus.SummaryOpts{Name:
"task_duration_seconds",Help: "Duration of task in seconds",//Summary类型的监控指标需要提供分
位点Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001},})cpuTemperature =
prometheus.NewHistogram(prometheus.HistogramOpts{Name: "cpu_temperature",Help: "The
temperature of cpu",//Histogram类型的监控指标需要提供BucketBuckets: []float64{20, 50, 70,
80},}))func init() {//注册监控指标
prometheus.MustRegister(speed)prometheus.MustRegister(tasksTotal)prometheus.MustRegister(task
相关文档
评论