zabbix自定义监控项监控docker容器

  • 前言:通常,通过 Docker 部署可以有效节省资源并提高服务器利用率。然而,当多个系统部署在同一台服务器上时,会导致连接多个监控模板的复杂情况。为了简化监控,可以直接利用自定义监控项来监控容器状态,从而简化监控流程,提高效率。
  1. 修改配置agent配置
bash 复制代码
vim /etc/zabbix/zabbix_agentd.conf
Timeout=30
#这个参数控制了 Zabbix 代理程序等待来自 Zabbix 服务器的响应的超时时间。您可以增加这个值以延长超时时间 因为脚本执行需要时间比较长 所以需要修改这个配置
AllowRoot=1
#放开此注释,当 AllowRoot设置为1时,表示允许 Zabbix 代理程序以 root 用户身份运行;而设置为 0 时,表示不允许 Zabbix 代理程序以 root 用户身份运行。
  1. 编写监控脚本
bash 复制代码
root@test-server02:~# cd /etc/zabbix/scripts/
root@test-server02:/etc/zabbix/scripts# cat container_monitor.sh
#!/bin/bash

check_command=$(docker ps | awk '{print $NF}' |grep -v NAMES |wc -l)

# 判断输出是否为16
if [ "$check_command" -eq 16 ]; then
    echo 1
else
    echo 0
fi
#我得容器总数是16个,根据自己容器数量修改
  1. 编写监控项配置
bash 复制代码
root@test-server02:/etc/zabbix/scripts# cd ../zabbix_agentd.conf.d/
root@test-server02:/etc/zabbix/zabbix_agentd.conf.d# cat container_monitor.conf
UserParameter=container.status,/etc/zabbix/scripts/container_monitor.sh
  1. 重启zabbix
bash 复制代码
systemctl status zabbix-agent
  1. zabbix-server机器测试监控项
bash 复制代码
[root@test-server01 ~]# zabbix_get -s IP -k container.status
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
0

zabbix_get 命令报错 没有root权限
这个报错是没有权限执行命令导致的,按说第一步骤改了配置应该不会出现这种问题、网上查到资料是修改启动命令里面的用户

  1. 修改zabbix-agent启动用户
bash 复制代码
root@test-server02:~# systemctl status zabbix-agent
● zabbix-agent.service - Zabbix Agent
   Loaded: loaded (/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2024-11-27 10:08:53 CST; 49min ago
     Docs: man:zabbix_agentd
 Main PID: 19302 (zabbix_agentd)
    Tasks: 6 (limit: 4915)
   CGroup: /system.slice/zabbix-agent.service
           ├─19302 /usr/sbin/zabbix_agentd --foreground
           ├─19320 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
           ├─19321 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
           ├─19323 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
           ├─19326 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
           └─19327 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
Nov 27 10:08:53 test-server02 systemd[1]: Started Zabbix Agent.
Nov 27 10:08:53 test-server02 zabbix_agentd[19302]: Starting Zabbix Agent [sdgs-server02]. Zabbix 3.0.12 (revision 73586).
Nov 27 10:08:53 test-server02 zabbix_agentd[19302]: Press Ctrl+C to exit.
#修改用户
root@test-server02:~# vim /lib/systemd/system/zabbix-agent.service
User=root
Group=root

#重启zabbix-agent
systemctl daemon-reload
systemctl status zabbix-agent
  1. 重新测试
bash 复制代码
[root@sdgs-server01 ~]# zabbix_get -s IP -k container.status
1
#此时返回1代表监控项已经正常
  1. 创建zabbix监控面板
  • templates



  • Applications
  • Items
    Key 是在前面定义的:UserParameter
  • Triggers
  1. 主机连接模板
  1. 测试监控是否生效
  • 停止容器
bash 复制代码
root@test-server02:~# docker stop name
  • zabbix web查看
相关推荐
什么都想学的阿超33 分钟前
【大语言模型 57】容器化训练环境:Docker + Kubernetes + Slurm
docker·语言模型·kubernetes
敲上瘾1 小时前
Docker网络实战:容器通信与隔离之道
linux·网络·docker·微服务·容器
a栋栋栋10 小时前
wsl 环境下用Docker 安装多版本MySQL
mysql·docker·容器
潮落拾贝10 小时前
k8s部署kafka三节点集群
容器·kafka·kubernetes
饱饱要坚持可持续发展观11 小时前
docker 拉取本地镜像
docker
我就要用Cx33011 小时前
配置docker常见问题
运维·docker·容器
疯子@12314 小时前
nacos1.3.2 ARM 版容器镜像制作
java·linux·docker·容器
yuxb7316 小时前
Docker 学习笔记(七):Docker Swarm 服务管理与 Containerd 实践
笔记·学习·docker
沐雨风栉17 小时前
自建云音乐服务器:Navidrome+cpolar让无损音乐随身听
运维·服务器·redis·缓存·docker·容器
油条不卖19 小时前
搞坏了docker 双系统下重装ubuntu22.04
运维·docker·容器