记一次部署系列:prometheus通过pushgateway配置自定义监控项

1、部署pushgateway并配置prometheus能够拿到pushgateway的数据,类似下图。部署过程参考:https://www.cnblogs.com/sunnytomorrow/p/16068405.html

2、创建脚本生成监控项数据并写入文件,然后将数据put或post到pushgateway中。注意:数据必须为数字格式。

我这里创建“存活容器数量”和“停止容器数量”的监控项

]# cat query.sh
#!/bin/bash Up_container=`docker ps -a |grep Up|wc -l` Exit_container=`docker ps -a |grep Exit|wc -l` echo -e "Up_container $Up_container\nExit_container $Exit_container" > result.txt
]# ./query.sh
]# cat result.txt
Up_container 1   # Up_container类似于为变量名
Exit_container 0
]# curl -X PUT --data-binary @result.txt http://192.168.4.67:9091/metrics/job/test_job/instance/test_instance

3、访问prometheus界面,查看pushgateway中的数据

 

  

 这里,我们便能看到我们put上来的数据已经进入到prometheus中了。然后我们配置grafana展示我们自定义的监控项。

访问grafana,创建dashboard,并根据变量名获取到数据,并以图形或数字展示,过程如下

 

可以看到,我们在输入监控项的名字后,点击一下空白区域,指标相关的值就以图形展示了,这里我们还可以配置alert,以实现该监控项的告警

 我这里配置的为一分钟内平均容器数低于1就告警,等同于当这个容器挂掉的时候就告警。然后点击save进行保存。然后就可以看到我们自定义的监控项已经在dashboard里面了,并且还有告警机制。

邮件告警配置参考:https://www.cnblogs.com/sunnytomorrow/p/16071011.html

 待解决问题:

  1、pushgateway里的数据持久化问题,可以通过启动时添加参数进行持久化,如果不持久化,数据将一直存储在内存中。还有需不需要持久化问题

  2、put和post数据问题,put会覆盖掉之前提交的同instance,同job里的所有数据,而post只会覆盖掉同instance,同job里的同名的数据

End !

posted @ 2022-03-29 15:12  NorthFeng  阅读(816)  评论(0编辑  收藏  举报