千家信息网

怎么使用Docker安装Zabbix并配置自定义监控项

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇"怎么使用Docker安装Zabbix并配置自定义监控项"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下
千家信息网最后更新 2026年11月01日怎么使用Docker安装Zabbix并配置自定义监控项

这篇"怎么使用Docker安装Zabbix并配置自定义监控项"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"怎么使用Docker安装Zabbix并配置自定义监控项"文章吧。

一、Zabbix 简介

Zabbix 可以用来监控各种网络参数,来保证服务器和系统的安全运行。并且 Zabbix 还提供了灵活的通知机制,以此来让系统管理员快速定位/解决存在的各种问题。是一个基于 Web 界面提供的分布式系统监控以及网络监控功能的企业级开源解决方案。

1.监控功能

  • 主机性能监控、网络设备性能监控、数据库性能监控、多种告警方式、详细的报表图。

  • 监控主机,我们可以使用 Zabbix 提供的 Agent 软件,来监控 Linux、Windows、FreeBSD 等系统。

  • 监控网络设备,我们可以通过 Zabbix 支持的 SNMP 协议来进行监控(SSH 协议不常用)

1)监控对象

  • 设备:服务器,路由器,交换机。

  • 软件:OS,网络,应用程序。

2)主机性能指标监控

  • 故障监控:宕机,服务不可用,主机不可达。

2.Zabbix 工作原理

首先,我们需要在被监控的主机上安装 Agent 软件,用来收集当前服务器的各项数据信息,并发送给监控端,当监控端接收到 Agent 发送过来的信息后,会将数据存储到数据库中,接着通过 Web 界面来将数据在前端页面上进行展示和绘图。

这里 Agent 收集数据分为 主动和被动 两种模式:

  • 主动: 客户端通过连接监控端的 10051 端口,来主动的将收集到的信息推送给监控端。

  • 被动: 监控端定时的通过连接客户端的 10050 端口进行通信,来收集客户端的各项数据信息。

Zabbix 默认使用的模式为被动模式,也就是说当我们需要监控的主机数量较多时,可能会影响到监控端的性能。因为监控端会定时的通过连接客户端的端口进行数据收集,所以我们可以 选择性的配置部分主机为主动模式,来减少监控端的性能压力。

3.Zabbix 组件

组件作用
Zabbix Server用于接收 Agent 发送过来的信息,所有的配置、数据统计、数据操作都是由它组织进行
Database Storage用于存储所有的配置信息以及收集的数据信息
Web InterfaceZabbix 的 GUI 接口,可以用于界面展示(一般和 Server 运行在用一台主机上)
Agent用于采集本地的数据信息,也就是所谓的被监控端
Proxy可选组件,通常用于分布式监控架构;相当于是一个代理的 Server,用来收集 Agent 部分数据,并转发给监控端

4.Zabbix 进程

  • Sender:用于发送数据给 Server 或者 Proxy,通常用于耗时比较长的检查;

  • Get:Zabbix 命令,主要用于排查使用,可以在监控端上执行,来获取被监控端的信息;

  • Agent:客户端守护进程,用于收集当前主机的数据信息,如:CPU 负载、内存的使用情况等;

  • Proxy:代理守护进程,相当于是一个中转站,可以将收集到的数据信息 主动/被动 的提交到监控端上;

  • Server:监控端守护进程,用于接收 Agent Get Sender Proxy Java_Gateway 提供的数据。

因为 Zabbix 并不能直接监控Java 应用,所以在 Zabbix 2.0 后推出 Java_Gateway 代理进程,使我们可以监控 Java 应用。

二、使用 Zabbix 配置自定义监控项

  • 我们下面采用的是 docker-compose 方式安装,物理安装可以看我前面写的这篇文章:传送门

1.安装 Zabbix

1)安装 Docker

[root@Zabbix ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo[root@Zabbix ~]# yum -y install epel-release[root@Zabbix ~]# yum -y install yum-utils device-mapper-persistent-data lvm2[root@Zabbix ~]# yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo[root@Zabbix ~]# yum -y install docker-ce-19.03.12 docker-ce-cli-19.03.12[root@Zabbix ~]# systemctl enable docker --now

2)安装 Docker-Compose

[root@Zabbix ~]# wget "https://github.com/docker/compose/releases/download/v2.3.2/docker-compose-$(uname -s)-$(uname -m)" -O /usr/local/bin/docker-compose [root@Zabbix ~]# chmod +x /usr/local/bin/docker-compose[root@Zabbix ~]# docker-compose --version

3)安装 Agent

[root@Zabbix ~]# rpm -ivh http://repo.zabbix.com/zabbix/5.4/rhel/7/x86_64/zabbix-agent-5.4.8-1.el7.x86_64.rpm[root@Zabbix ~]# egrep -v '^$|#' zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pidLogFile=/var/log/zabbix/zabbix_agentd.logLogFileSize=0Server=127.0.0.1ServerActive=127.0.0.1Hostname=Zabbix serverInclude=/etc/zabbix/zabbix_agentd.d/*.conf[root@Zabbix ~]# systemctl enable zabbix-agent --now

4)安装 Zabbix

[root@Zabbix ~]# mkdir -p /app/zabbix[root@Zabbix ~]# cd /app/zabbix/[root@Zabbix zabbix]# cat < docker-compose.ymlversion: "3"services:  mysql-server:    image: mysql:5.7    ports:      - "3306:3306"    volumes:      - "/app/mysql:/var/lib/mysql"                                # 配置数据卷 (防止监控数据丢失)    environment:      MYSQL_ROOT_PASSWORD: 123123      TZ: Asia/Shanghai    command: --character-set-server=utf8 --collation-server=utf8_bin    restart: always  zabbix-server:    image: zabbix/zabbix-server-mysql:5.4.8-centos    environment:      DB_SERVER_HOST: 127.0.0.1      DB_SERVER_PORT: 3306      MYSQL_DATABASE: zabbix      MYSQL_USER: root      MYSQL_PASSWORD: 123123      TZ: Asia/Shanghai    depends_on:      - mysql-server    restart: always    network_mode: "host"                                             # 使用主机网络  zabbix-web:    image: zabbix/zabbix-web-nginx-mysql:5.4.8-centos    ports:      - "8000:8080"                                                                # Zabbix WebUI 映射端口    volumes:                                                                        # 当在 Web 界面配置成中文后,监控界面会出现乱码      - "./simkai.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf"    environment:      DB_SERVER_HOST: mysql-server      DB_SERVER_PORT: 3306      MYSQL_DATABASE: zabbix      MYSQL_USER: root      MYSQL_PASSWORD: 123123      TZ: Asia/Shanghai      ZBX_SERVER_HOST: 192.168.1.1    depends_on:      - mysql-server      - zabbix-server    restart: alwaysEND[root@Zabbix zabbix]# docker-compose up -d[root@Zabbix zabbix]# docker-compose ps
  • simkai.ttf 字体,你们可以在自己电脑上的这个 C:\Windows\Fonts 路径找到。

5)验证:http://192.168.1.1:8000(账号:Admin/zabbix)

  • 界面上出现:zabbix server is not running: the information displayed may not be current 报错;

  • 原因可能是因为我们 docker-compose 文件中的 ZBX_SERVER_HOST 变量配置的值不是 Zabbix Server 的 IP 地址导致的。

我上面报错是为了让你们看下效果,如果你们出现如上配置,按照我的配置修改即可。

配置中文

2.开启自定义监控项

[root@Zabbix ~]# echo "UnsafeUserParameters=1" >> /etc/zabbix/zabbix_agentd.conf

3.编写 Nginx 自定义监控脚本

[root@Zabbix ~]# yum -y install nginx[root@Zabbix ~]# cat < /etc/nginx/conf.d/status.confserver {    listen 80;    server_name 127.0.0.1;    location /status {        stub_status on;        allow 127.0.0.1;        allow 192.168.1.0/24;        deny all;    }}END

1)编写自定义监控脚本

[root@Zabbix ~]# mkdir /etc/zabbix/scripts[root@Zabbix ~]# vim /etc/zabbix/scripts/nginx_status.sh#!/bin/bashHOST="127.0.0.1"PORT="80"# 监控 Nginx 进程是否存在function Ping {    /sbin/pidof nginx | wc -l}# 监控 Nginx 状态信息function Active {    /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | grep "Active" | awk '{print $NF}'}function Reading {    /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | grep "Reading" | awk '{print $2}'}function Writing {    /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | grep "Writing" | awk '{print $4}'}function Waiting {    /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | grep "Waiting" | awk '{print $6}'}function Server {    /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | awk NR==3 | awk '{print $1}'}function Accepts {    /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | awk NR==3 | awk '{print $2}'}function Requests {    /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | awk NR==3 | awk '{print $3}'}# 执行 function$1[root@Zabbix ~]# chmod +x /etc/zabbix/scripts/nginx_status.sh

2)定义监控脚本

[root@Zabbix ~]# cat <<"END" > /etc/zabbix/zabbix_agentd.d/nginx_status.confUserParameter=nginx.status[*],/etc/zabbix/scripts/nginx_status.sh $1END[root@Zabbix ~]# systemctl restart zabbix-agent

3)验证

[root@Zabbix ~]# docker exec -it zabbix-zabbix-server-1 /bin/bash

创建模板

创建应用集

创建监控项

因为在我们的监控脚本中,一共定义了 8 个监控项,所以我们上面也要创建 8 个监控项,重复上面操作,创建出对应的即可。

给我们的监控项创建图形

将 Nginx 模板加入到主机中

查看监控图

其实 Zabbix 的自定义监控项就是由 key/value 的形式组成。即,我们只需要把要监控的数据定义成一个 value,key 里面的值就是我们想要监控的数据,那么也就是说,当我们定时的查找这个 key 对应的值,便可以得到监控数据。

以上就是关于"怎么使用Docker安装Zabbix并配置自定义监控项"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

监控 数据 配置 信息 主机 端的 性能 界面 网络 进程 主动 内容 客户 模式 端口 系统 脚本 应用 服务 也就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 广州紫鲸互联网科技有限公司 鸠鸠互联网科技 重庆互联网络科技 喔噻互联网科技 万易互联网科技有限公司 深圳齐家互联网科技 郑州华宇互联网科技 国外互联网科技网站 互联网金融科技委员会 左右互联网络科技 华中科技有哪些互联网大佬 济南华为互联网科技产业总部基地 昭通云南众福互联网科技有限公司 洛阳共同富裕互联网科技有限公司 长沙互联网科技 互联网金融运营模式中的金融科技 易租星互联网科技有限公司 长沙易易互联网科技有限公司 中国主要互联网科技公司 互联网科技金融公司 互联网科技作文 互联网科技的英文 撒么互联网科技公司 厦门千工互联网科技有限公司 赶超互联网科技 微信多开 哈尔滨屹滨互联网科技有限公司 天津腾达互联网科技有限公司 工业互联网展湾科技股份有限公司 互联网科技的前景
0