- 前言:通常,通过 Docker 部署可以有效节省资源并提高服务器利用率。然而,当多个系统部署在同一台服务器上时,会导致连接多个监控模板的复杂情况。为了简化监控,可以直接利用自定义监控项来监控容器状态,从而简化监控流程,提高效率。
- 修改配置agent配置
bash
vim /etc/zabbix/zabbix_agentd.conf
Timeout=30
#这个参数控制了 Zabbix 代理程序等待来自 Zabbix 服务器的响应的超时时间。您可以增加这个值以延长超时时间 因为脚本执行需要时间比较长 所以需要修改这个配置
AllowRoot=1
#放开此注释,当 AllowRoot设置为1时,表示允许 Zabbix 代理程序以 root 用户身份运行;而设置为 0 时,表示不允许 Zabbix 代理程序以 root 用户身份运行。
- 编写监控脚本
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个,根据自己容器数量修改
- 编写监控项配置
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
- 重启zabbix
bash
systemctl status zabbix-agent
- 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权限
这个报错是没有权限执行命令导致的,按说第一步骤改了配置应该不会出现这种问题、网上查到资料是修改启动命令里面的用户
- 修改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
- 重新测试
bash
[root@sdgs-server01 ~]# zabbix_get -s IP -k container.status
1
#此时返回1代表监控项已经正常
- 创建zabbix监控面板
- templates
- Applications
- Items
Key 是在前面定义的:UserParameter
- Triggers
- 主机连接模板
- 测试监控是否生效
- 停止容器
bash
root@test-server02:~# docker stop name
- zabbix web查看