1、线上环境docker已经运行起来了,有时候容器挂掉之后没有第一时间通知,之前已经搭建好zabbix并配置好了微信告警
2、使用zabbix来监控容器,并发送告警
3、首先创建一个自定义监控脚本,来获取监控的值
#!/bin/bash
#监控容器的运行状态
#容器名称 传入参数
containerName=$1
#当前时间
now=`date +"%Y-%m-%d %H:%M:%S"`
# 查看进程是否存在
exist=`docker inspect --format '{{.State.Status}}' ${containerName}`
if [ "${exist}" != "running" ]; then
#记录日志
echo "${now} docker容器异常, 容器名称:${containerName}" 请检查 >> /home/work/monitor/docker_monitor.log
echo 0
else
echo 1
fi
脚本说明:通过docker inspect检查容器状态是否为runing,如果是则脚本反馈1,如果不是则返回0
4、修改zabbix_agentd.conf配置文件
vim /etc/zabbix/zabbix_agentd.conf
找到 UnsafeUserParameters=0 ,默认是0,修改为1,
然后,为我们自定义监控项,格式为:UserParameter=<键值>,<命令>
UserParameter=janus_monitor,bash /home/work/monitor/docker_monitor.sh titan_janus_1
自定义键值为:janus_monitor 要执行的命令为执行docker_monitor.sh这个脚本 ,加上参数titan_janus_1(这个是需要监控的容器名称)

image.png
添加完成以后,重启zabbix_agentd生效
5、在zabbix服务端检查一下能不能获取到监控的指标
zabbix_get -s 192.168.0.220 -p 10050 -k "janus_monitor"
结果是1,说明OK了,否则报错的话就要排查错误,直到输出结果是我们要的那个
其中
-s 客户端的IP
-p 客户端端口,默认10050
-k 监控项的key
6、zabbix面板创建监控项

image.png
填好之后,保存
再为这个监控项创建一个触发器来发送告警

image.png
点击添加

image.png
点击插入,保存退出
检查一下状态

image.png
再创建一个图形

image.png

image.png
过一段时间之后发现就有数据显示了

image.png
7、测试一下告警有没有生效,把这个容器stop
大约10s就触发了告警

image.png