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查看
相关推荐
南暮思鸢28 分钟前
kali安装及使用docker和docker-compose
web安全·网络安全·docker·容器·kali linux
码农易小航36 分钟前
Dockerfile打包部署
java·运维·docker
杨浦老苏1 小时前
开源用户体验调查管理平台Formbricks
docker·群晖·问卷
天一生水water2 小时前
一个vue项目如何运行在docker
vue.js·docker·软件工程
狗贤3 小时前
harbor和docker配置https访问
docker·容器·https
csdn_金手指6 小时前
docker-compose文件的简介及使用
运维·docker·容器
踏雪Vernon7 小时前
[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker pull线上镜像方式构建编译环境
docker·容器·鸿蒙系统
0110编程之路7 小时前
ubuntu20.04安装docker compose
运维·docker·容器
秃头菜狗7 小时前
ubuntu 安装docker
linux·运维·服务器·ubuntu·docker·云原生