欢迎各位关注下我的微信公众号:全干程序员demo
回复 “java面试” 获取[java精品面试题]
回复 “idea” 获取[idea2023最新版破解至2099年]
回复"自媒体" 获取个人自媒体笔记:玩转字节跳动平台(可以联系我催更,有时可能因为工作或者发布文章没空更新,因为笔记都是我自己做的)
所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter.而Exporter的一个实例称为target,如图下所示,
Prometheus通过轮询的方式定期从这些target中获取样本数据:
这里Prometheus是通过pull(拉取的方式)从Target中获取样本数据
安装好Exporter后会暴露一个/metrics的HTTP服务,通过Prometheus添加配置Prometheus就可以采集到这个/metrics里面的所有监控样本数据
- targets: ['node_exporter:9100'] 会自动带上/metrics
从exporter的来源上来讲,一共分俩类:
社区提供 (https://prometheus.io/docs/instrumenting/exporters/)
3)
Prometheus社区提供了丰富的Exporter实现,涵盖了从基础设施,中间件一级网络等各个方面的监控功能.这些Exporter可以实现大部分通用的监控需求.下表列举一些社区中常用的Exporter:
使用范围 | 常用的Exporter |
---|---|
数据库 | MySQL Exporter,RedisExporter,MongDB Exporter,MSSQL Exporter等 |
硬件 | Apcupsd Exporter,IoT Edison Exporter,IPMI Exporter等 |
消息队列 | Kafka Exporter,RabbitMQ Exporter,NSQ Exporter等 |
存储 | Ceph Exporter,Gluster Exporter,HDFS Exporter,等 |
HTTP服务 | Apache Exporter,HAProxy Exporter,Nginx Exporter等 |
API服务 | AWS Exporter,Docker Cloud Exporter,Docker Hub Exporter,GitHub Exporter等 |
日志 | Flue Exporter,Grok Exporter等 |
监控系统 | Collectd Exporter,Graphite Exporter,InfluxDB Exporter,Nagios Exporter等 |
其他 | Blockbox Exporter,JIRA Exporter,Jenkins Exporter,Confluence Exporter等 |
除了直接使用社区提供的Exporter程序意外,用户还可以基于Prometheus提供的Client Library创建自己的Exporter程序,目前Prometheus社区官方提供了对以下编程语言的支持:Go,java,Python,Ruby.同事还有第三方实现的如:Bash,C++,Common Lisp,Erlang,Haskeel,Lua,Node.js,PHP,Rust等.
通常来说可以将Exporter分为俩类
所有的Exporter程序都需要按照Prometheus的规范,返回监控的样本数据.以Node Exporter为例,当访问/metrics结尾地址时会返回一下内容:
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 4.029e-05
go_gc_duration_seconds{quantile="0.25"} 5.2092e-05
go_gc_duration_seconds{quantile="0.5"} 6.3091e-05
go_gc_duration_seconds{quantile="0.75"} 8.9905e-05
go_gc_duration_seconds{quantile="1"} 0.000300032
go_gc_duration_seconds_sum 2.6172319120000003
go_gc_duration_seconds_count 36170
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 9
# HELP go_info Information about the Go environment.
# TYPE go_info gauge
go_info{version="go1.19.3"} 1
# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
# TYPE go_memstats_alloc_bytes gauge
go_memstats_alloc_bytes 2.19788e+06
以#开头的行通常都是注释内容,这些样本数据集合说明如下:
//这种方式进行展示
go_memstats_alloc_bytes 2.19788e+06
//这种方式进行存储
go_memstats_alloc_bytes{instance="localhost:9090", job="prometheus"} timestamp(时间戳) value(样本值)