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查看
相关推荐
杀死那个蝈坦38 分钟前
Docker
java·docker·eclipse·tomcat·hibernate
wadesir1 小时前
Debian容器存储管理(Docker中实现数据持久化的完整指南)
运维·docker·debian
忍冬行者1 小时前
基于docker安装jenkins+gitlab+harbor
docker·gitlab·jenkins
百万彩票中奖候选人2 小时前
迁移 Docker 存储目录
java·docker·eureka
0wioiw02 小时前
Docker(基础指令)
运维·docker·容器
vortex52 小时前
Docker 逃逸常见利用方式
运维·docker·容器
0wioiw02 小时前
Docker(Portainer)
运维·docker·容器
能不能别报错3 小时前
k8s的CICD流水线环境搭建实验(containerd版)
云原生·容器·kubernetes
༺๑Tobias๑༻3 小时前
国内可用的DOCKER 镜像源
运维·docker·容器
杰克逊的日记3 小时前
k8s是怎么管理GPU集群的
java·容器·kubernetes·gpu