zabbix自定义监控docker容器
zabbix 自定义监控docker容器
需求
1、线上环境docker已经运行起来了,有时候容器挂掉之后没有第一时间通知,之前已经搭建好zabbix并配置好了微信告警
2、使用zabbix来监控容器,并发送告警
3、首先创建一个自定义监控脚本,来获取监控的值
服务器端配置
一、服务器上配置脚本
路径
1 | cd /etc/zabbix/scripts |
内容
1 |
|
脚本说明:通过docker inspect检查容器状态是否为runing,如果是则脚本反馈1,如果不是则返回0
二、修改zabbix_agentd.conf配置文件
1 | vim /etc/zabbix/zabbix_agentd.conf |
添加下面两个参数
1 | UnsafeUserParameters=1 |
UnsafeUserParameters=0 ,默认是0,修改为1,是否允许自定义脚本传递特殊字符作为参数,通常不用开
自定义监控项,格式为:UserParameter=<键值>,<命令>
UserParameter=docker_monitor,bash /etc/zabbix/scripts/docker_monitor.sh xxxx
自定义键值为:docker_monitor 要执行的命令为执行docker_monitor.sh这个脚本 ,加上参数xxxx(这个是需要监控的容器名称)
添加完成以后,重启zabbix_agentd生效
1 | systemctl restart zabbix-agent.service |
三、在zabbix服务端上检查一下能不能获取到监控的指标
zabbix 是服务器上编译安装
1 | zabbix_get -s 192.168.0.220 -p 10050 -k "docker_monitor" |
zabbix 是docker安装
1 | docker exec -t zabbix-agent zabbix_get -s 192.168.0.220 -p 10050 -k "docker_monitor" |
结果是1,说明OK了,否则报错的话就要排查错误,直到输出结果是我们要的那个
其中
-s 客户端的IP
-p 客户端端口,默认10050
-k 监控项的key
报错1
1 | $ docker exec -t zabbix-agent zabbix_get -s 117.50.93.138 -p 10050 -k "docker_monitor" |
解决
1 | touch /var/log/docker_monitor.log |
报错2
1 | $ docker exec -t zabbix-agent zabbix_get -s 117.50.93.138 -p 10050 -k "docker_monitor" |
解决查看文档
1 | sudo usermod -aG docker zabbix |
zabbix控制台配置
web面板创建监控项
填好之后,保存
创建一个触发器来发送告警
检查一下状态
再创建一个图形
过一段时间之后发现就有数据显示了
测试一下告警有没有生效,把这个容器stop
大约10s就触发了告警
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 云运维!