zabbix监控业务容器状态

在使用docker运行业务时,我们难免也想用zabbix来监控容器是否是启动状态。自动化运维始终是作为运维的终极目标,同时告警也是必不可少好帮手。

我们以docker方式运行的zabbix-agent2 容器和其他业务容器该怎么去监控容器状态是否是UP


目前版本:zabbix6.0


方法一、

Zabbix 提供了一个 Docker 监控模板,它可以直接帮助您监控容器的状态。

这里边有一大堆的数据哦,写的满满当当。感兴趣的小伙伴可以研究下

方法二、

自己编写一个监控项,更推荐使用这种方式,监控项取值可以更精准更符合业务需求,也不会产生很多冗余数据。

1、配置 Zabbix Agent 在 Zabbix Agent 配置文件 /etc/zabbix/zabbix_agentd.conf 中添加一个 UserParameter,该参数将执行 Docker 命令来检查容器状态。

bash 复制代码
UserParameter=docker.container.up[*],docker inspect --format '{{.State.Running}}' $1 > /dev/null 2>&1 && echo 1 || echo 0


# docker inspect --format '{{.State.Running}}' $1:获取容器是否运行的状态
# > /dev/null 2>&1:将所有输出重定向到 /dev/null,避免输出干扰
# && echo 1 || echo 0:如果命令执行成功(即容器在运行),返回 1;如果命令失败(容器停止或不存在),返回 0
# $1 是一个占位符,它表示您将传递给这个监控项的参数(即容器的名称或 ID)。您只需要一个 UserParameter 配置,就可以监控任意容器的状态。

这个命令会检查指定容器是否在运行,运行返回 1 或 未运行返回 0。这样的作法是即使监控容器也挂掉了,还会有数据返回,配合触发器可以使我们尽早解决问题。

2、创建监控项

3、构建监控容器,或手动更改它

因为运行 Zabbix Agent 的容器默认可能无法直接访问宿主机的 Docker 引擎,我们必须做一些其他的更改,才可以让它正确的反馈监控值。

修改/var/run/docker.sock的权限

bash 复制代码
ls -l /var/run/docker.sock

srw-rw---- 1 root docker ...

更改挂载的权限(为什么要这么做:容器内的用户并不属于docker组,即使挂载了 /var/run/docker.sock,容器内的用户可能也没有权限访问它)

bash 复制代码
chmod 666 /var/run/docker.sock

运行zabbix-agent 容器

bash 复制代码
docker run -d \
    --name zabbix-agent2 \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /etc/zabbix/zabbix_agent2.conf:/etc/zabbix/zabbix_agent2.conf \
    -e ZBX_DEBUGLEVEL=4 \
    --network="host" \
    --restart=always \
    registry.cn-hangzhou.aliyuncs.com/xxxx/xxxxx:zabbix-arm

以root用户进入容器内部并安装docker.io

bash 复制代码
docker exec -it -u root zabbix-agent2 /bin/bash

apt update

apt -y install docker.io

挂载和权限修改后,在容器内手动测试 docker inspect:

测试成功后可以将当前容器生成新的容器保存,方便下次直接可以使用

相关推荐
阿里云云原生18 小时前
终结前端“黑盒”难题:通过 Session Replay 与三维热力图实现像素级用户行为洞察
云原生·监控
极客先躯19 小时前
高级java每日一道面试题-2026年04月05日-实战篇[Docker]-如何排查容器 OOM 的问题?
java·运维·docker·容器·内存溢出·高级面试
带娃的IT创业者19 小时前
监控并非安全:当隐私成为技术的祭品
java·开发语言·安全·数据安全·监控·隐私保护·加密技术
镜像车间1 天前
我用飞牛NAS在本地建了一个rhex论坛
docker
极客先躯1 天前
高级java每日一道面试题-2026年04月04日-实战篇[Docker]-如何排查容器存储挂载失败的问题?
java·运维·docker·容器·高级面试
宇晨T1 天前
从零搭建企业级Web服务:Shell脚本 + LNMP + Docker 实战指南
前端·docker·容器
努力进修1 天前
Docker+cpolar 实战:打造灵活可控的远程办公系统
运维·docker·容器
jieyucx2 天前
Docker 入门第一阶段:建立正确认知与初体验
运维·docker·容器
jieyucx2 天前
Docker 入门第二阶段:掌握日常命令
运维·docker·容器
鱼听禅2 天前
Ubuntu学习笔记-安装docker容器
学习·ubuntu·docker