当前位置: 首页 > article >正文

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

  • 前言:通常,通过 Docker 部署可以有效节省资源并提高服务器利用率。然而,当多个系统部署在同一台服务器上时,会导致连接多个监控模板的复杂情况。为了简化监控,可以直接利用自定义监控项来监控容器状态,从而简化监控流程,提高效率。
  1. 修改配置agent配置
vim /etc/zabbix/zabbix_agentd.conf
Timeout=30
#这个参数控制了 Zabbix 代理程序等待来自 Zabbix 服务器的响应的超时时间。您可以增加这个值以延长超时时间 因为脚本执行需要时间比较长 所以需要修改这个配置
AllowRoot=1
#放开此注释,当 AllowRoot设置为1时,表示允许 Zabbix 代理程序以 root 用户身份运行;而设置为 0 时,表示不允许 Zabbix 代理程序以 root 用户身份运行。
  1. 编写监控脚本
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. 编写监控项配置
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
systemctl status zabbix-agent
  1. zabbix-server机器测试监控项
[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启动用户
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. 重新测试
[root@sdgs-server01 ~]# zabbix_get -s IP -k container.status
1
#此时返回1代表监控项已经正常
  1. 创建zabbix监控面板
  • templates

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • Applications

在这里插入图片描述

  • Items
    Key 是在前面定义的:UserParameter

在这里插入图片描述

  • Triggers

在这里插入图片描述

  1. 主机连接模板

在这里插入图片描述

  1. 测试监控是否生效
  • 停止容器
root@test-server02:~# docker stop name
  • zabbix web查看

在这里插入图片描述


http://www.kler.cn/a/414657.html

相关文章:

  • 迭代器模式 (Iterator Pattern)
  • Vue 开发中为什么要使用穿透符::deep()
  • macOS 版本对应的 Xcode 版本,以及 Xcode 历史版本下载
  • 20241128解决Ubuntu20.04安装libwxgtk3.0-dev异常的问题
  • 工业智能网关如何高效、安全地实现车间数据的采集?
  • 人工智能技术的工程伦理问题 --以美团外卖大数据杀熟为例
  • SpringBoot宠物领养平台:设计与实现
  • 封装类与封装函数
  • 《Python语言程序设计》(2018年版)第15遍刷第1章第1题和第2题
  • 基于JAVA的旅游网站系统设计
  • centos7 yum install 失败,mirrorlist.centos.org连接不上
  • NSSCTF web刷题
  • 通过 JNI 实现 Java 与 Rust 的 Channel 消息传递
  • ArrayList与LinkedList的区别是什么?
  • wxWidgets-ImageView
  • Leetcode 343. 整数拆分 java题解
  • C++中的Lambda表达式
  • 【Code First】.NET开源 ORM 框架 SqlSugar 系列
  • 林业推荐系统开发:Spring Boot高级技巧
  • Linux定时器机制实现循环确定时间