一文学会zabbix
Zabbix是一款企业级开源监控系统,支持对服务器、网络设备和应用的全面监控。其核心功能包括实时状态采集、自动告警通知和数据可视化分析。系统由服务端(Zabbix Server/Proxy)、客户端(Agent)、数据存储(关系型数据库)和可视化组件(WebUI)构成。部署流程包括环境准备、组件安装、数据库初始化、Web配置和告警设置。Zabbix支持分布式部署,适用于不同规模企业的IT基础设施监
概要
Zabbix 是一款开源的企业级监控解决方案,支持对服务器、网络设备、应用程序等 IT 基础设施的全面监控。
核心作用
- 实时监控状态采集 CPU、内存、磁盘、网络带宽等硬件指标,以及服务(如 MySQL、Nginx)、应用的运行状态,直观展示 IT 资源的健康情况。
- 自动告警通知当监控指标超过预设阈值(如服务器 CPU 利用率过高、服务宕机),会通过邮件、短信、钉钉等渠道自动发送告警,帮助运维人员及时排查问题。
- 数据可视化与分析通过图表、仪表盘展示监控数据的历史趋势,支持分析资源瓶颈、预测系统负载变化,为容量规划提供依据。
- 支持分布式部署可监控跨地域的大规模 IT 架构,适配中小企业到大型企业的不同监控需求
核心组件
一、 服务端核心组件
-
Zabbix Server
- 核心作用:整个监控系统的核心,负责收集客户端上报的数据、处理监控项逻辑、触发告警、执行动作。
- 关键功能:接收 Agent/Proxy 的数据、计算触发器阈值、关联告警媒介、管理监控配置。
- 实践要点:部署时需关注 CPU 和内存资源,高并发场景建议集群化部署。
-
Zabbix Proxy
- 核心作用:代理 Server 的功能,用于分布式监控场景,减轻 Server 的负载。
- 关键功能:收集被监控节点数据并缓存,定期同步给 Server;可独立处理本地监控逻辑。
- 适用场景:跨机房、跨网段的大规模监控(如分公司机房、边缘节点)。
二、 客户端核心组件
-
Zabbix Agent
- 核心作用:轻量级客户端程序,采集被监控主机的系统级指标(CPU、内存、磁盘、网络)。
- 两种模式
- 主动模式(Active):Agent 主动向 Server/Proxy 上报数据,适合大规模监控,减少 Server 压力。
- 被动模式(Passive):Server/Proxy 主动向 Agent 发起请求获取数据,适合小型环境。
-
特殊监控客户端(无 Agent )
- SNMP:用于监控网络设备(路由器、交换机),无需安装 Agent,通过 SNMP 协议采集数据。
- IPMI:用于监控服务器硬件状态(温度、风扇、电源),直接通过硬件接口采集。
- JMX:通过 Java Gateway 监控 Java 应用,无需在应用服务器安装额外 Agent。
三、 数据存储组件
负责存储监控配置数据和采集到的历史数据。
- 关系型数据库
- 核心作用:存储监控配置信息(主机、监控项、触发器)、历史数据(指标快照、告警日志)。
- 支持类型:MySQL/MariaDB(推荐)、PostgreSQL、Oracle
- 实践要点:历史数据量较大时,需配置数据分区和清理策略,避免数据库性能下降。
四、 可视化与交互组件
-
Zabbix Web UI
- 核心作用:基于 PHP 的 Web 管理界面,是用户与 Zabbix 系统交互的入口。
- 关键功能:配置主机和监控项、查看监控图表、配置告警媒介、管理用户权限。
- 实践要点:需与 Web 服务器(Apache/Nginx)和 PHP 环境配合部署。
-
Zabbix AlertScript(告警脚本)
- 核心作用:实现告警信息的推送,是 Web UI 配置的告警媒介的底层支撑。
- 支持类型:可通过 Shell/Python 脚本对接邮件、短信、钉钉、企业微信等平台。
整体架构流程


核心组件工作流程(应试必背)
- Agent 采集被监控主机指标,主动上报或被动响应 Server/Proxy 的请求;
- Proxy 汇总区域内数据,同步给 Server;
- Server 将数据写入数据库,并根据触发器阈值判断是否触发告警;
- 告警信息通过 AlertScript 推送给用户,用户可通过 Web UI 查看监控图表和处理告警。
部署流程
1.两台集群linux主机
zabbix-server 192.168.118.99
zabbix-agent 192.168.118.100
2.关闭防火墙、selinux
[root@zabbix-server ~]# systemctl stop firewalld
[root@zabbix-server ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@zabbix-server ~]# setenforce 0
[root@zabbix-server ~]# getenforce
Permissive
[root@zabbix-server ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
3.安装mariadb数据库
[root@zabbix-server ~]#dnf install -y mariadb-server mariadb
[root@zabbix-server ~]#systemctl enable --now mariadb
4.创建zabbix数据库以及用户
[root@zabbix-server ~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.29-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> EXIT;
Bye
5.下载zabbix官方仓库
[root@zabbix-server ~]# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-7.0-1.el9.noarch.rpm
[root@zabbix-server ~]# dnf clean all
6.安装zabbix-server,zabbix-agent,webui
[root@zabbix-server ~]# dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-agent
7.导入zabbix初始数据库
[root@zabbix-server ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u zabbix -p123456 zabbix
8.配置zabbix server配置文件参数
[root@zabbix-server ~]# vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
9.重新加载zabbix
[root@zabbix-server ~]# systemctl enable --now zabbix-server zabbix-agent httpd php-fpm
[root@zabbix-server ~]# systemctl restart zabbix-server zabbix-agent httpd php-fpm
10.访问前端网页http://192.168.118.99/zabbix



- 默认账号:Admin
- 默认密码:zabbix
11.zabbix-agent需要做的操作
[root@zabbix-agent ~]# systemctl stop firewalld
[root@zabbix-agent ~]# systemctl disable firewalld
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".
[root@zabbix-agent ~]# setenforce 0
[root@zabbix-agent ~]# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-7.0-1.el9.noarch.rpm
[root@zabbix-agent ~]# dnf install zabbix-agent -y
[root@zabbix-agent ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.118.99 # 允许谁来拉取数据(被动模式)
ServerActive=192.168.118.99 # 主动模式上报地址
Hostname=zabbix-agent-1 # 必须与 Web UI 中创建的主机名完全一致!
[root@zabbix-agent ~]# sudo systemctl restart zabbix-agent
[root@zabbix-agent ~]# sudo systemctl enable --now zabbix-agent
12.在Zabbix Web UI 中添加该主机


13.设置监控cpu相关配置
更改监控cpu率到达50%触发告警


更改cpu过载时间为1分钟,方便观察


进行压力测试
[root@zabbix-agent ~]# tar -cJvf 6.tar.xz /
14.邮箱配置
下载s-nail
[root@zabbix-server ~]# dnf install s-nail -y
获取邮箱授权码

邮箱配置文件并测试
[root@zabbix-server ~]# vim /etc/s-nail.rc
set from="pan_lin_feng@163.com"
set mta=smtps://pan_lin_feng%40163.com:QTkyL34AMN5Jd7cY@smtp.163.com:465
set mime-encoding=base64
set charset=utf-8
set v15-compat
[root@zabbix-server ~]# echo "111111111111"|mail -s "邮件主题" 269721235@qq.com
邮件测试成功
15.告警邮箱
告警设置

告警测试

设置动作,添加目标主机

设置当出现故障后,触发邮件

设置当故障恢复后,触发邮件

去用户设置邮件地址



继续压力测试 tar -cJvf 6.tar.xz /
测试成功

恢复成功

小结
环境准备:部署 CentOS 系统,安装 MySQL/MariaDB(建库授权)、Apache+PHP(Web 环境);
安装组件:通过 DNF 安装 Zabbix Server(MySQL 版)、Web 前端、Agent、数据库脚本包;
初始化配置:执行 SQL 脚本初始化 Zabbix 数据库,配置 Server 的数据库连接,启动 Server、Agent、Apache 服务;
Web 配置 + 监控:通过浏览器访问 Zabbix Web 完成初始化,关联主机与系统模板,配置告警(如邮件通知)。
更多推荐


所有评论(0)