一、监控目标说明
我们监控的是 指定容器是否在运行:
运行中 → 返回 1
未运行 / 不存在 → 返回 0
Zabbix 根据返回值触发告警。
二、Agent 端:自定义监控脚本
1️⃣ 创建脚本目录(推荐)
mkdir -p /etc/zabbix/scripts2️⃣ 编写容器检测脚本
vi /etc/zabbix/scripts/docker_container_status.sh内容如下:
#!/bin/bash
container_name="$1"
if [ -z "$container_name" ]; then
echo 0
exit 0
fi
docker inspect -f '{{.State.Running}}' "$container_name" 2>/dev/null | grep -q true
if [ $? -eq 0 ]; then
echo 1
else
echo 0
fi3️⃣ 授权
chmod +x /etc/zabbix/scripts/docker_container_status.sh测试:
[root@dfh-redis-xc-0001 script]# vi docker_container_status.sh
[root@dfh-redis-xc-0001 script]# ./docker_container_status.sh redis-prod
1三、Zabbix Agent 配置
编辑 agent 配置文件:
vi /etc/zabbix/zabbix_agentd.conf追加:
UserParameter=docker.container.running[*],/etc/zabbix/scripts/docker_container_status.sh "$1"⚠️ 如果 agent 用 zabbix 用户运行,确保 zabbix 有 docker 权限:
usermod -aG docker zabbix
systemctl restart zabbix-agent四、Zabbix 前端配置
1️⃣ 新建监控项(Item)
类型:Zabbix agent
键值:
docker.container.running[容器名]👉 返回值示例:
1 = 正常
0 = 异常
2️⃣ 新建触发器(Trigger)
表达式(推荐写法,7.x 正确):
last(/dfh-redis-xc-0001.novalocal/docker.container.running[redis-prod])=01 次检测失败就告警
触发器名称示例:
Docker 容器 [容器名] 未运行
评论区