记一次部署系列: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 !