Zabbix 是一款可监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康状况和完整性。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的警报。这允许对服务器问题做出快速反应。Zabbix 基于存储的数据提供报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。

Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。

二、zabbix的特性

zabbix主要由以下5个组件构成:

1、Server

zabbix server是zabbix的核心组件,server内部存储了所有的配置信息、统计信息和操作信息。zabbix agent会向zabbix server报告可用性、完整性及其他统计信息。

2、web页面

web页面也是zabbix的一部分,通常和zabbix server位于一台物理设备上,但是在特殊情况下也可以分开配置。web页面主要提供了直观的监控信息,以方便运维人员监控管理。

3、数据库

zabbix数据库内存储了配置信息、统计信息等zabbix的相关内容。

4、proxy

zabbix proxy可以根据具体生产环境进行采用或者放弃。如果使用了zabbix proxy,则其会替代zabbix server采集数据信息,可以很好的分担zabbix server的负载。zabbix proxy通常运用与架构过大、zabbix server负载过重,或者是企业设备跨机房、跨网段、zabbix server无法与zabbix agent直接通信的场景。

5、Agent

zabbix agent通常部署在被监控目标上,用于主动监控本地资源和应用程序,并将监控的数据发送给zabbix server。

三、zabbix的监控对象

zabbix支持监控各种系统平台,包括Linux和Windows等主流操作系统,也可以借助SNMP或者是SSH协议监控路由交换设备。

zabbix如果部署在服务器上,可以监控其CPU、内存、网络性能等硬件参数,也可以监控具体的服务或者应用程序、服务运行情况及性能。

硬件监控:Zabbix IPMI Interface ,通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压、温度、风扇状态、电源状态等。

系统监控:Zabbix Agent Interface ,通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的agent,推荐首选这种方式。

Java监控:Zabbix JMX Interface ,通过JMX进行监控,JMX(java management extensions,即java管理扩展),监控JVM虚拟机时,使用这种方法是非常不错的选择。

网络设备监控:Zabbix SNMP Interface ,通过SNMP协议与被监控对象进行通信,SNMP协议的全称为simple network management protocol,被译为简单网络管理协议,通常来说,我们无法在路由器、交换机这种硬件上安装agent,但是这些硬件都支持SNMP协议。

应用服务监控:Zabbix Agent UserParameter

MySQL数据库监控:percona-monitoring-plulgins

URL监控:Zabbix Web 监控

四、zabbix的常用术语

zabbix的学习需要掌握一些zabbix的常用术语,zabbix常用术语列举如下:

1、主机(host)

要监控的设备,可以由IP或者是主机名(必须可解析)指定。

2、主机组(host group)

主机的逻辑容器,包含主机和模板,主机组通常在给用户或者是用户组指派监控权限时使用。

3、监控项(item)

一个特定监控指标的相关数据,比如内存的大小、CPU的使用率,甚至是服务的运行状态等等。监控项数据来源于被监控对象,并且每个监控项都由一个key来标识。

4、触发器(trigger)

一个表达式,用于评估监控项的值是否在合理的范围内。当接收的值超出触发器的规定时,就被认为是故障,如果超出后再次符合,就被认为是正常。

5、事件(event)

触发器触发的一个特定事件,或者是zabbix定义的一个自动上线注册主机的事件。

6、动作(action)

指根据配置,zabbix对于触发器触发的特定事件进行处理的具体措施,如执行某个脚本,或者是向管理员邮箱发送邮件等等。

7、报警升级(escalation)

发送警报或者是执行远程命令的自定义方案。

8、媒介(media)

发送通知(告警)的手段,如微信、邮件、钉钉等等。

9、通知(notification)

通过指定的媒介,向用户发送的有关事件的信息。

10、远程命令(remote command)

指运维人员提前写好的命令,可以让被监控主机在触发事件后执行。

11、模板(template)

用于快速定义被监控主机的预设条目集合,通常包括了监控项、触发器、应用等,模板可以直接链接至某个主机。

12、应用(application)

一组监控项的集合。

13、web场景(web scennario)

用于检测web站点可用性的一个或多个HTTP请求。

14、前端(frontend)

zabbix的web接口。

这些术语,我们都会在后文中直接使用而不过多赘述,在企业技术交流中也会经常使用。

五、zabbix的工作流程

Zabbix在进行监控时,zabbix客户端要安装在被监控设备上,负责定期收集数据,并将其发送给zabbix服务端;zabbix服务端要安装在监控设备上,其将zabbix客户端发送的数据存储的数据库中,zabbix web根据数据在前端进行展示和绘图。

zabbix的数据收集分为两种模式:

1、主动模式

zabbix客户端主动向zabbix server请求监控项列表,并主动将监控项内需要的数据提交给zabbix server。

2、被动模式

zabbix server向 agent 请求获取监控项的数据,zabbix agent返回数据。

由此可以看出zabbix的主动和被动模式是以zabbxi客户端为基准的。

六、zabbix进程详解

在默认的情况下,zabbix有6个工作进程;分别是 zabbix_agentd,zabbix_get,zabbix_proxy,zabbix_sender,zabbix_server 和 zabbix_gateway。

其中,zabbix_java_gateway是可选进程。这6个进程的作用如下:

1、zabbix_agentd

zabbix-agentd为zabbix客户端守护进程 ,主要负责收集客户端监控项数据。

2、zabbix_server

zabbix_server为zabbix服务端守护进程,主要负责收集zabbix客户端数据。(端口为10051)

3、zabbix_proxy

zabbix_proxy是zabbix的代理程序,其功能类似于server,作用上类似于一个中转站,最终会把收集的数据再次提交给zabbix_server。

4、zabbix_get

zabbix_get作为zabbix工具,通常运行在zabbix_server或者zabbix_proxy上,用于远程获取客户端信息,通常用于排错。

5、zabbix_sender

zabbix_sender也是zabbix的一个工具,通常运行在zabbix的客户端,用于耗时比较长的检查,其作用是主动发送数据。

6、zabbix_java_gateway

zabbix_java_gateway是zabbix2.0以后引入的新功能,可以用于JAVA方面的设备;但是只能主动获取数据,而不能被动获取数据。

七、zabbix的监控框架

在实际的工作环境中,根据网络环境和监控的规模不同,zabbix一共有三种框架,分别是server_client架构、master_node_client架构和server_proxy_client架构。

1、server_client架构

zabbix最简单的架构,监控设备和被监控设备之间直接相连,zabbix_server 和 zabbix_client 之间直接进行数据交互。

2、zabbix_proxy_client架构

proxy是连接 server 和 client 之间的桥梁,其本身不存放数据,只是将zabbix_agent端发来的数据暂存,然后再提交给server。这种架构一般用于跨机房、跨网络的中型网络架构。

在server_proxy_client架构中,server设备的宕机会导致整个系统瘫痪而无法正常工作。

3、master_node_client架构

master_node_client架构是zabbix最复杂的架构。一般用于跨机房、跨网络、监控设备较多的大型网络架构。与server_proxy_client架构相比,master_node_client架构的主要区别在于node与proxy上.

在master_node_client架构中,每个node可以理解为一个小的server端,在自己的配置文件和数据库,node下游可以直接连接client,也可以再次经过proxy代理后连接client。

在master_node_client架构中,master设备宕机不会影响node节点的正常工作。

7.2 每个模块的工作职责:

1、Zabbix_Server:zabbix_server作为核心组件,用来获取agent存活情况和监控数据。所有的配置、统计、操作数据均通过server进行存取到database;

2、Zabbix_Database:用户存储所有的zabbix的配置信息、监控数据的数据库;

3、Zabbix_Web:zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,通常与zabbix_server运行在同一台主机上,也可以单独部署在独立的服务器上;

4、Zabbix_Proxy:通常用于分布式监控,代理zabbix_server收集部分被监控的数据并统一发送给server端;(通常大于500台主机需要使用)

5、Zabbix_Agent:部署在被监控主机上,负责收集被监控主机的数据,并发送给servre端或者proxy端;

Zabbix Server、Proxy、Agent都有自己的配置文件以及log文件,重要的参数需要在这里配置,后面会详细说明。

八、使用docker部署:

需要使用docker提前的部署好数据库这个特别简单做好备份和持久化保存。

先部署zabbix-server-mysql

#创建对的数据保存目录
mkdir -p /data/zabbix-server/logs /data/zabbix-server/scripts
#设置对应的用户id和权限
chown -R 999:999 /data/zabbix-server
chmod -R 755 /data/zabbix-server
#开始部署zabbix的服务端                                        #填写数据的地址注意不需要提前创建数据库和用户名,zabbix会自动的创建。
ocker run --name zabbix-server -e MYSQL_DATABASE=zabbix -e DB_SERVER_HOST=172.126.9.42 -e DB_SERVER_PORT=3306 -e MYSQL_USER=root -e MYSQL_PASSWORD=Root.000 -e ZBX_DBTIMEOUT=300 -e ZBX_STARTDBPOLLERS=64 -e ZBX_DBMAXIDLETIME=3600 -p 10051:10051 -v /data/zabbix-server/logs:/var/log/zabbix -v /data/zabbix-server/scripts:/usr/lib/zabbix/externalscripts --restart=always -d zabbix/zabbix-server-mysql:latest
#查看一下docker ps -a
[root@Mydb ~]# docker ps -a
CONTAINER ID   IMAGE                               COMMAND                  CREATED       STATUS       PORTS                                                    NAMES
1981b55b656f   zabbix/zabbix-server-mysql:latest   "/usr/bin/docker-ent…"   2 hours ago   Up 2 hours   0.0.0.0:10051->10051/tcp, [::]:10051->10051/tcp          zabbix-server
9bbee3c38d86   mysql:8.0                           "docker-entrypoint.s…"   9 days ago    Up 2 hours   0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp   mysql
[root@Mydb ~]#
#查看一下看看MySQL数据库有没有同步过来
[root@Mydb ~]# docker exec -it 9bbee3c38d86 bash
bash-5.1# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4793
Server version: 8.0.46 MySQL Community Server - GPL
Copyright (c) 2000, 2026, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Blogs              |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| zabbix             |
+--------------------+
6 rows in set (0.00 sec)
mysql> USE zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> SHOW TABLES;
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
| actions                    |
| alerts                     |
| auditlog                   |
| autoreg_host               |
| changelog                  |
| conditions                 |
| config_autoreg_tls         |
| connector                  |
| connector_tag              |
| corr_condition             |
| corr_condition_group       |
| corr_condition_tag         |
| corr_condition_tagpair     |
| corr_condition_tagvalue    |
| corr_operation             |
| correlation                |
| dashboard                  |

配置阿里云的镜像源这里是redhat系列9本版,所以一定配置阿里云的源一定要设置好。

[root@Mydb ~]# cat /etc/yum.repos.d/zabbix.repo
[zabbix0]
name=ali zabbix
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/7.4/release/rocky/9/noarch
gpgcheck=0
enabled=1
​
​
[zabbix1]
name=ali zabbix frontend
baseurl=https://mirrors.aliyun.com/zabbix/zabbix-agent2-plugins/1/rhel/9/x86_64/
gpgcheck=0
enabled=1
[root@Mydb ~]#

先重新清空一下yum缓存然后在重新生成一下yum缓存

[root@Mydb ~]# yum clean all
56 files removed
[root@Mydb ~]# yum makecache
AlmaLinux 9 - AppStream                                                                           10 MB/s |  22 MB     00:02
AlmaLinux 9 - BaseOS                                                                              11 MB/s |  28 MB     00:02
AlmaLinux 9 - Extras                                                                              46 kB/s |  23 kB     00:00
Docker CE Stable - x86_64                                                                        180 kB/s |  76 kB     00:00
Extra Packages for Enterprise Linux 9 - x86_64                                                    15 MB/s |  21 MB     00:01
Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64                             612  B/s | 2.5 kB     00:04
ali zabbix                                                                                       2.6 kB/s | 1.4 kB     00:00
ali zabbix frontend                                                                              2.8 kB/s | 1.6 kB     00:00
Metadata cache created.
[root@Mydb ~]#

要在监控的主机上安装zabbix-agent,可以使用docker,或者二进制包,这里推荐yum安装

[root@Mydb ~]# yum install -y zabbix-agent
Last metadata expiration check: 0:03:58 ago on Tue May 12 23:41:53 2026.
Package zabbix-agent-1:6.0.45-1.el9.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@Mydb ~]#
#设置开机自启立刻马上,站用的端口是10050
[root@Mydb ~]# systemctl enable --now zabbix-agent
[root@Mydb ~]# systemctl is-active zabbix-agent.service
active
[root@Mydb ~]# ss -tnl
State            Recv-Q           Send-Q                     Local Address:Port                      Peer Address:Port
LISTEN           0                4096                             0.0.0.0:10050                          0.0.0.0:*
LISTEN           0                4096                             0.0.0.0:10051                          0.0.0.0:*
LISTEN           0                128                              0.0.0.0:22                             0.0.0.0:*
LISTEN           0                4096                             0.0.0.0:3306                           0.0.0.0:*
LISTEN           0                4096                                [::]:10050                             [::]:*
LISTEN           0                4096                                [::]:10051                             [::]:*
LISTEN           0                128                                 [::]:22                                [::]:*
LISTEN           0                4096                                [::]:3306                              [::]:*
[root@Mydb ~]#

修改zabbix-agent的配置文件

[root@Mydb ~]# cat /etc/zabbix_agentd.conf | grep -vE "^#|^$"
PidFile=/run/zabbix/zabbix_agentd.pid #运行文件
LogFile=/var/log/zabbix/zabbix_agentd.log #agent的日志目录
LogFileSize=0 #zabbix的日志的大小
Server=172.126.9.42,0.0.0.0/0 #添加服务端地址
StartAgents=1 #启动zabbix
ServerActive=172.126.9.42 #被监控端都要写成一样,因为都是被动模式
Hostname=Mydb #设置主机名,一定要设置对不然有的监控不到 #直接使用hostname查看一下
[root@Mydb ~]#
image-20260513132933481.png
image-20260513133007927.png
image-20260513134343247.png

九、创建自定义监控key

key的默认写法都在UserParameters 先写一个key然后在写Linux命令

实例;UserParameter=login.user,who|wc -l

### Option: UnsafeUserParameters
#       Allow all characters to be passed in arguments to user-defined parameters.
#       The following characters are not allowed:
#       \ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
#       Additionally, newline characters are not allowed.
#       0 - do not allow
#       1 - allow
#
# Mandatory: no
# Range: 0-1
# Default:
# UnsafeUserParameters=0
​
### Option: UserParameter
#       User-defined parameter to monitor. There can be several user-defined parameters.
#       Format: UserParameter=<key>,<shell command>
#       See 'zabbix_agentd' directory for examples.
#
# Mandatory: no
# Default:
# UserParameter=
#这个一定要开启
# Include=/etc/zabbix_agentd.userparams.conf
Include=/etc/zabbix_agentd.conf.d/
# Include=/etc/zabbix_agentd.conf.d/*.conf
#配置自定义的配置文件在/etc/zabbix_agentd.conf.d/
#具体的写法
[root@Server zabbix]# cat login.conf
UserParameter=login.user,who|wc -l
[root@Server zabbix]#
#然后重启看看有没有报错
[root@Server zabbix]# systemctl restart zabbix-agent.service
[root@Server zabbix]# systemctl status  zabbix-agent.service
● zabbix-agent.service - Zabbix Monitor Agent
     Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; enabled; preset: disabled)
     Active: active (running) since Wed 2026-05-13 00:05:06 CST; 8s ago
   Main PID: 20570 (zabbix_agentd)
      Tasks: 6 (limit: 35760)
     Memory: 4.5M (peak: 5.8M)
        CPU: 58ms
     CGroup: /system.slice/zabbix-agent.service
             ├─20570 /usr/sbin/zabbix_agentd -f
             ├─20572 "/usr/sbin/zabbix_agentd: collector [idle 1 sec]"
             ├─20573 "/usr/sbin/zabbix_agentd: listener #1 [waiting for connection]"
             ├─20574 "/usr/sbin/zabbix_agentd: listener #2 [waiting for connection]"
             ├─20575 "/usr/sbin/zabbix_agentd: listener #3 [waiting for connection]"
             └─20576 "/usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]"
​
May 13 00:05:06 Server systemd[1]: Started Zabbix Monitor Agent.
May 13 00:05:06 Server zabbix_agentd[20570]: Starting Zabbix Agent [Server]. Zabbix 6.0.45 (revision d8c5768f7d0).
May 13 00:05:06 Server zabbix_agentd[20570]: Press Ctrl+C to exit.
#获取key的命令是 -s是要获取的IP地址 -p是端口号 -k是值
[root@Server zabbix_agentd.conf.d]# zabbix_get -s '172.126.9.41' -p 10050 -k 'login.user'
2
[root@Server zabbix_agentd.conf.d]#

在zabbix的web页面里面添加,添加自定义的key

创建的流程是:

  • 创建模板

  • 创建应用集 (比如日志的放在一个集里,安全的放在一个集里:有点像文件夹)

  • 创建监控项

  • 创建触发器

  • 创建图像

  • 将具体的主机连接到模板

image-20260513142744323.png
image-20260513143752829.png

大于三就报警

image-20260513144438093.png
image-20260513144745141.png

添加图像化展示

image-20260513160806819-HVzK.png

关联主机一个主机可以添加多个模板