概要

Zabbix 是一款开源的企业级监控解决方案,支持对服务器、网络设备、应用程序等 IT 基础设施的全面监控。

核心作用

  1. 实时监控状态采集 CPU、内存、磁盘、网络带宽等硬件指标,以及服务(如 MySQL、Nginx)、应用的运行状态,直观展示 IT 资源的健康情况。
  2. 自动告警通知当监控指标超过预设阈值(如服务器 CPU 利用率过高、服务宕机),会通过邮件、短信、钉钉等渠道自动发送告警,帮助运维人员及时排查问题。
  3. 数据可视化与分析通过图表、仪表盘展示监控数据的历史趋势,支持分析资源瓶颈、预测系统负载变化,为容量规划提供依据。
  4. 支持分布式部署可监控跨地域的大规模 IT 架构,适配中小企业到大型企业的不同监控需求

核心组件

一、 服务端核心组件

  1. Zabbix Server

    • 核心作用:整个监控系统的核心,负责收集客户端上报的数据、处理监控项逻辑、触发告警、执行动作。
    • 关键功能:接收 Agent/Proxy 的数据、计算触发器阈值、关联告警媒介、管理监控配置。
    • 实践要点:部署时需关注 CPU 和内存资源,高并发场景建议集群化部署。
  2. Zabbix Proxy

    • 核心作用:代理 Server 的功能,用于分布式监控场景,减轻 Server 的负载。
    • 关键功能:收集被监控节点数据并缓存,定期同步给 Server;可独立处理本地监控逻辑。
    • 适用场景:跨机房、跨网段的大规模监控(如分公司机房、边缘节点)。

二、 客户端核心组件

  1. Zabbix Agent

    • 核心作用:轻量级客户端程序,采集被监控主机的系统级指标(CPU、内存、磁盘、网络)。
    • 两种模式
      • 主动模式(Active):Agent 主动向 Server/Proxy 上报数据,适合大规模监控,减少 Server 压力。
      • 被动模式(Passive):Server/Proxy 主动向 Agent 发起请求获取数据,适合小型环境。
  2. 特殊监控客户端(无 Agent )

    • SNMP:用于监控网络设备(路由器、交换机),无需安装 Agent,通过 SNMP 协议采集数据。
    • IPMI:用于监控服务器硬件状态(温度、风扇、电源),直接通过硬件接口采集。
    • JMX:通过 Java Gateway 监控 Java 应用,无需在应用服务器安装额外 Agent。

三、 数据存储组件

负责存储监控配置数据和采集到的历史数据。

  1. 关系型数据库
    • 核心作用:存储监控配置信息(主机、监控项、触发器)、历史数据(指标快照、告警日志)。
    • 支持类型:MySQL/MariaDB(推荐)、PostgreSQL、Oracle
    • 实践要点:历史数据量较大时,需配置数据分区和清理策略,避免数据库性能下降。

四、 可视化与交互组件

  1. Zabbix Web UI

    • 核心作用:基于 PHP 的 Web 管理界面,是用户与 Zabbix 系统交互的入口。
    • 关键功能:配置主机和监控项、查看监控图表、配置告警媒介、管理用户权限。
    • 实践要点:需与 Web 服务器(Apache/Nginx)和 PHP 环境配合部署。
  2. Zabbix AlertScript(告警脚本)

    • 核心作用:实现告警信息的推送,是 Web UI 配置的告警媒介的底层支撑。
    • 支持类型:可通过 Shell/Python 脚本对接邮件、短信、钉钉、企业微信等平台。

整体架构流程

核心组件工作流程(应试必背)

  1. Agent 采集被监控主机指标,主动上报或被动响应 Server/Proxy 的请求;
  2. Proxy 汇总区域内数据,同步给 Server;
  3. Server 将数据写入数据库,并根据触发器阈值判断是否触发告警;
  4. 告警信息通过 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 完成初始化,关联主机与系统模板,配置告警(如邮件通知)。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐