入职了新公司,需要我去了解prometheus,记录一下prometheus 的心得,不定期更新
比较重要的点:
- 创建prometheus 服务及配置
- remote read & remote write
- remote read (write) 思考 以及一些小坑
- 如何获取remote write 消息,并把它转成可以使用的数据
- remote write 持久化指标数据至influx db
- PushGateway & push clint (这里贴java client)
- exporter 相关:snmp,node,StatsD等…
- alertmanager 配置
- k8s 部署prometheus 集群
1. 创建prometheus服务
网上有现成的,不想写…
2. remote_read & remote_write
prometheus 提供了两个功能,用于监控指标的数据拉取以及存储
a.remote read (write) 思考
- 注意:
remote_read
必须置于顶层,且read_recent
应当为true
remote_read
可以配置prometheus server
,也可以配置 influxdb (1.7+)
remote_write
可以配置 自己的prometheus remote adapter
,也可以配置 1.7版本以上的influxdb
如何配置 remote_read
1 | remote_read: |
思考 :
根据remote_read
进行读写分离,即A prometheus服务进行读,不负责写,B prometheus 负责写,不负责读。
且读prometheus 会产生本地数据,可以手动设置清除频率高一点
b.如何获取remote write 消息,并把它转成可以使用的数据
首先,prometheus自身的remote_write 数据格式其实并不通用————
application/x-protobuf
,而且官方并没有给出基于java的适配器(adapter)————大多数是用go语言写的,所以假如是想二次开发什么的就多了一些成本…
- 首先你可以滚去学go语言…
- 或者自己实现一套java版本的adapter ———— 记获取prometheus remote_write 踩坑记
influxdb
记一个influxdb 坑
pushgate way
push gate way 推送到固定地址 ,最后由prometheus 收集
该操作需要有自己的PushGateWay 节点,PushGateway 相当于一个prometheus 的缓存buffer
java client
1 | CollectorRegistry registry = new CollectorRegistry(); |
SNMP Exporter
1.如何使用
- 找到官方github地址
- clone到服务器本地
- 下载snmp exporter 官方提供的release包,如
tar.gz
格式 - 解压下载好的包放到已经clone好的本地目录中
- 执行docker build命令
- 成功创建镜像
- 对带监控机器开启snmp协议
2.snmp
http://host:9116/snmp?target=1.2.3.4&module=if_mib
疑似修改配置文件
Alert Manager
Alertmanager can reload its configuration at runtime. If the new configuration is not well-formed, the changes will not be applied and an error is logged.
- alertmanager 在运行时可以加载配置 ,若新的配置不正确,则仍运行上一个版本的配置,且报告错误
保存历史指标数据
--storage.tsdb.path
, Defaults todata/
--storage.tsdb.retention.time
,保存几天的历史数据, Defaults to15d
--storage.tsdb.retention.size
max 存量,实验性质的配置--storage.tsdb.retention
本文采用CC-BY-SA-3.0协议,转载请注明出处
Author: dadonggua
Author: dadonggua