Zabbix 企业级监控系统总结(含完整实施过程)

Zabbix 企业级监控系统总结(含完整实施过程)

一、Zabbix 核心概述

1. 核心定位

Zabbix 是一款企业级开源分布式监控解决方案,由 Alexei Vladishev 创建并由 Zabbix SIA 维护,支持监控网络参数、服务器 / 虚拟机 / 应用程序 / 数据库 / 网站等 IT 基础设施的健康状态与完整性,提供灵活告警机制、报表生成和数据可视化功能,适用于从小型组织到大型企业的各类 IT 环境。

2. 核心特性

  • 开源免费:基于 GNU GPL v2 许可证,源代码开放可自由分发
  • 监控范围广:覆盖硬件、系统、应用、服务、数据库、云平台等全栈资源
  • 告警灵活:支持邮件等多种告警方式,可针对几乎任何事件配置快速响应
  • 数据可视化:提供丰富报表和仪表盘,支持容量规划
  • 部署灵活:支持轮询和捕获两种数据收集方式,支持 Proxy 分布式部署分担负载
  • 跨平台支持:兼容多种操作系统和架构

3. 版本生命周期

版本类型 开发周期 全面支持期 有限支持期 代表版本
LTS(长期支持) 1.5 年 3 年(功能更新 + 安全修复) 2 年(仅限高危修复) 7.0 LTS、6.0 LTS
标准版 6 个月 6 个月 至少 6 个月(至下一个标准版发布) 7.4、7.2

二、Zabbix 架构与核心组件

1. 核心组件

组件 核心职责 关键说明
Zabbix Server 核心组件 接收 Agent 上报数据,存储配置 / 统计 / 运行数据,触发告警和动作
数据库存储 数据持久化 存储所有配置信息和收集的监控数据(支持 MariaDB 等)
Web 界面 可视化操作入口 基于 Web 的管理界面,支持配置、监控、报表查看,与 Server 通常部署在同一主机
Zabbix Proxy 负载分担(可选) 代理 Server 收集数据,减轻单 Server 负载,适用于大规模部署
Zabbix Agent 数据采集终端 部署在监控目标上,主动监控本地资源和应用,上报数据;分为 Agent(C 语言,轻量)和 Agent2(Go 语言,支持插件扩展)

2. 核心数据流与依赖关系

  • 数据流逻辑:创建主机 → 配置监控项 → 设置触发器 → 配置动作 → 接收告警
  • 依赖架构:基于 LNMP(Linux+Nginx+MariaDB+PHP)部署,需提前搭建基础运行环境

三、完整实施过程(CentOS7 环境)

1. 实验环境准备

主机名 IP 地址 操作系统 核心功能 关键软件
zabbix-server 192.168.108.50 CentOS7 监控服务器(核心节点) Nginx、MariaDB、PHP、Zabbix Server
mysql001 192.168.108.51 CentOS7 被监控节点 Zabbix Agent2、MariaDB

2. 分步实施过程(重点步骤 + 命令)

(1)基础环境搭建:LNMP 架构部署(zabbix-server 节点)
① 安装 Nginx
  1. 创建 YUM 源:

    bash 复制代码
    vim /etc/yum.repos.d/nginx.repo
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    enabled=1
    gpgcheck=0
  2. 安装并启动服务:

    bash 复制代码
    yum install nginx -y
    systemctl start nginx && systemctl enable nginx
  3. 防火墙配置:

    bash 复制代码
    firewall-cmd --add-service=http --zone=public --permanent
    firewall-cmd --reload
  4. 验证:浏览器访问http://192.168.108.50,显示 Nginx 欢迎页则成功

② 安装 MariaDB(数据库存储)
  1. 配置 YUM 源(Zabbix6.0 需 MariaDB10.5+):

    bash 复制代码
    vim /etc/yum.repos.d/mariadb.repo
    [mariadb]
    name = MariaDB
    baseurl = https://mirrors.aliyun.com/mariadb/yum/10.6/centos7-amd64/
    enabled = 1
    gpgcheck = 0
  2. 安装并启动:

    bash 复制代码
    yum -y install mariadb-server mariadb
    systemctl enable mariadb --now
  3. 初始化数据库(设置 root 密码):

    bash 复制代码
    mysql
    DELETE FROM mysql.user WHERE User='';  # 删除空用户
    ALTER USER root@localhost IDENTIFIED BY 'root123';  # 设置密码
    exit
  4. 验证连接:

    bash 复制代码
    mysql -uroot -proot123  # 成功登录则正常
③ 安装并配置 PHP
bash 复制代码
yum -y install epel-release
sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/epel.repo
sed -i "s/metalink/#metalink/g" /etc/yum.repos.d/epel.repo
sed -i "s@https\?://download.[a-z]*\.\?[a-z]*/pub@https://repo.huaweicloud.com@g" /etc/yum.repos.d/epel.repo
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
  1. 安装 PHP 及依赖(Zabbix 要求版本):

    bash 复制代码
    yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-ldap php72w-bcmath
  2. 配置 PHP-FPM(适配 Nginx):

    bash 复制代码
    vim /etc/php-fpm.d/www.conf
    user = nginx  # 改为nginx用户
    group = nginx  # 改为nginx组
  3. 配置 Nginx 支持 PHP:

    bash 复制代码
    vim /etc/nginx/conf.d/default.conf
    index index.php index.html index.htm;  # 添加index.php
    # 解开php配置块并修改
    location ~ \.php$ {
      root /usr/share/nginx/html;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  # 修正/scripts为$document_root
      include fastcgi_params;
    }
  4. 优化 PHP 配置(满足 Zabbix 要求):

    bash 复制代码
    vim /etc/php.ini
    short_open_tag = On  # 支持短标签
    expose_php = Off  # 隐藏版本
    max_execution_time = 300  # 执行时间
    max_input_time = 300  # 接收数据等待时间
    memory_limit = 128M  # 脚本内存限制
    post_max_size = 16M  # POST数据大小
    upload_max_filesize = 2M  # 上传文件大小
    always_populate_raw_post_data = -1  # 新增配置
    date.timezone = Asia/Shanghai  # 时区
  5. 启动服务并验证:

    bash 复制代码
    systemctl enable php-fpm --now
    systemctl restart nginx
    # 测试PHP环境
    vim /usr/share/nginx/html/info.php
    <?php phpinfo(); ?>
    # 浏览器访问http://192.168.108.50/info.php,显示PHP信息则正常
    # 测试数据库连接
    vim /usr/share/nginx/html/info.php
    <?php
    $link=mysqli_connect('127.0.0.1','root','root123');
    if ($link) echo "success";
    else echo "fail";
    ?>
    # 访问页面显示success则连接正常
(2)Zabbix Server 部署与配置
① 创建 Zabbix 数据库及账号
bash 复制代码
mysql -uroot -proot123
CREATE DATABASE zabbix character set utf8 collate utf8_bin;  # 支持中文排序
GRANT all privileges ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix123';
GRANT all privileges ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix123';
flush privileges;
quit
  • 验证数据库连接:修改 info.php 测试 zabbix 账号连接,显示 "Zabbix 数据库连接成功" 则正常
② 导入 Zabbix 数据库脚本
bash 复制代码
# 解压Zabbix安装包(假设已上传zabbix-6.0.6.tar.gz到/root)
tar zxvf zabbix-6.0.6.tar.gz
cd /root/zabbix-6.0.6/database/mysql/
# 按顺序导入脚本
mysql -uroot -proot123 zabbix < schema.sql
mysql -uroot -proot123 zabbix < images.sql
mysql -uroot -proot123 zabbix < data.sql
mysql -uroot -proot123 zabbix < double.sql
mysql -uroot -proot123 zabbix < history_pk_prepare.sql
# 验证:进入数据库查看表数量(应显示178条)
mysql -uroot -proot123 zabbix -e "show tables;" | wc -l
③ 编译安装 Zabbix Server
  1. 安装依赖包:

    bash 复制代码
    yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel libcurl-devel fping gcc gcc-c++ make
  2. 创建 Zabbix 用户:

    bash 复制代码
    useradd -s /sbin/nologin -M zabbix
  3. 编译配置:

    bash 复制代码
    export CFLAGS="-std=gnu99"  # 指定C99标准
    cd /root/zabbix-6.0.6/
    ./configure --sysconfdir=/etc/zabbix/ --enable-server --with-mysql --with-net-snmp --with-libxml2 --with-ssh2 --with-openipmi --with-zlib --with-libpthread --with-libevent --with-openssl --with-ldap --with-libcurl --with-libpcre
    make install  # 编译安装
  4. 验证版本:

    bash 复制代码
    zabbix_server --version  # 显示版本信息则安装成功
④ 配置 Zabbix Server
  1. 修改主配置文件:

    bash 复制代码
    vim /etc/zabbix/zabbix_server.conf
    LogFile=/var/log/zabbix_server.log  # 日志文件路径
    DBPassword=zabbix123  # 数据库密码(与创建的一致)
  2. 创建日志文件并授权:

    bash 复制代码
    touch /var/log/zabbix_server.log
    chown zabbix.zabbix /var/log/zabbix_server.log
  3. 创建系统服务(支持 systemctl 管理):

    bash 复制代码
    vim /usr/lib/systemd/system/zabbix-server.service
    [Unit]
    Description=Zabbix Server with MySQL DB
    After=syslog.target network.target mysqld.service
    [Service]
    Type=simple
    ExecStart=/usr/local/sbin/zabbix_server
    User=zabbix
    [Install]
    WantedBy=multi-user.target
  4. 启动服务并验证:

    bash 复制代码
    systemctl daemon-reload
    systemctl start zabbix-server && systemctl enable zabbix-server
    netstat -ntap | grep 10051  # 监听10051端口则正常(Zabbix Server默认端口)
⑤ 部署 Zabbix Web 前端
  1. 复制前端文件到 Nginx 站点目录:

    bash 复制代码
    cp -r /root/zabbix-6.0.6/ui/* /usr/share/nginx/html/
    chown -R nginx:nginx /usr/share/nginx/html/  # 授权
  2. Web 界面配置(浏览器操作):

    • 访问http://192.168.108.50,进入 Zabbix 安装向导
    • 步骤 1:必要条件检测(全部通过则继续)
    • 步骤 2:配置数据库连接(类型 MySQL,数据库名 zabbix,用户 zabbix,密码 zabbix123)
    • 步骤 3:设置 Zabbix 服务器名称、时区等
    • 步骤 4:安装前汇总(确认配置无误)
    • 步骤 5:安装完成(默认用户名 Admin,密码 zabbix)
(3)被监控端配置:Zabbix Agent2 部署(mysql001 节点)
  1. 环境准备:

    bash 复制代码
    systemctl stop firewalld.service  # 关闭防火墙
    setenforce 0  # 关闭SELinux
    hostnamectl set-hostname mysql001  # 设置主机名
    yum update ca-certificates -y  # 更新CA证书
  2. 安装 Zabbix Agent2:

    bash 复制代码
    rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
    yum install zabbix-agent2 -y
  3. 配置 Agent2(指向 Zabbix Server):

    bash 复制代码
    vim /etc/zabbix/zabbix_agent2.conf
    PidFile=/var/run/zabbix/zabbix_agent2.pid  # PID文件路径
    LogFile=/var/log/zabbix/zabbix_agent2.log  # 日志路径
    LogFileSize=0  # 日志不限制大小
    Server=192.168.108.50  # Zabbix Server IP
    ServerActive=192.168.108.50  # 主动上报Server IP
    Hostname=mysql001  # 主机名(需与Server配置一致)
    Include=/etc/zabbix/zabbix_agent2.d/plugins.d/*.conf  # 插件配置目录
  4. 启动服务:

    bash 复制代码
    systemctl enable zabbix-agent2.service --now
    systemctl restart zabbix-agent2  # 重启生效
(4)Zabbix Server 管理配置(Web 界面操作)
① 添加被监控主机
  1. 登录 Zabbix Web 界面(Admin/zabbix)
  2. 配置 → 主机 → 创建主机:
    • 主机名称:mysql001(与 Agent2 配置一致)
    • 群组:选择合适群组(如 Linux servers)
    • 接口:添加客户端接口,IP 为 192.168.108.51,端口 10050(Agent 默认端口)
    • 模板:关联对应模板(如 MySQL 模板)
  3. 验证:主机列表中显示 "可用性" 为绿色则监控正常
② 配置邮件告警(QQ 邮箱示例)
  1. 服务器端安装并配置 mailx:

    bash 复制代码
    yum install mailx -y
    # 配置邮箱参数
    vim /etc/mail.rc  # 末尾添加
    set from=6946630@qq.com  # 发件人邮箱
    set smtp=smtps://smtp.qq.com:465  # SMTP服务器
    set smtp-auth-user=6946630@qq.com  # 邮箱账号
    set smtp-auth-password=lmsbtquhuzhqcage  # QQ邮箱授权码
    set smtp-auth=login
    set ssl-verify=ignore
    set nss-config-dir=/etc/pki/nssdb/
  2. 获取 QQ 邮箱 SSL 证书

    bash 复制代码
    mkdir -p /root/.certs/
    echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
    certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
    certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
    cd /root/.certs/
    certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
  3. 测试邮件发送:

    bash 复制代码
    mailx -s "Zabbix测试邮件" 6946630@qq.com
    测试邮件内容
    # 按Ctrl+D发送,查看邮箱是否收到
  4. 配置 Zabbix 告警脚本:

    bash 复制代码
    # 修改Zabbix Server配置,指定告警脚本目录
    vim /etc/zabbix/zabbix_server.conf
    AlertScriptsPath=/usr/lib/zabbix/alertscripts
    # 创建目录并授权
    mkdir -p /usr/lib/zabbix/alertscripts
    chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts
    # 编写邮件发送脚本
    vim /usr/lib/zabbix/alertscripts/mailx.sh
    #!/bin/bash
    messages=`echo $3 | tr '\r\n' '\n'`
    subject=`echo $2 | tr '\r\n' '\n'`
    echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1
    # 授权脚本
    chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
    touch /tmp/mailx.log && chown zabbix.zabbix /tmp/mailx.log
    # 重启Zabbix Server
    systemctl restart zabbix-server.service
  5. Web 界面配置告警:

    • 管理 → 报警媒介类型 → 创建媒体类型:选择 "脚本",脚本名称 mailx.sh,配置参数(收件人、主题、消息)
    • 管理 → 用户 → Admin → 报警媒介:添加刚才创建的媒体类型,填写收件人邮箱
    • 配置 → 动作 → Trigger actions:删除默认动作,创建新动作,设置触发条件(如服务宕机)、告警消息(包含主机 IP、时间、等级等)、恢复消息
  6. 测试告警:在被监控端停止 mysqld 服务,等待片刻查看 Zabbix 界面告警和邮箱通知

四、核心优势与注意事项

1. 核心优势

  • 全栈监控:覆盖从硬件到应用的全链路资源,满足企业级监控需求
  • 灵活扩展:支持 Proxy 分布式部署和 Agent2 插件扩展,适应大规模环境
  • 告警精准:可自定义触发条件和告警内容,支持多渠道通知
  • 数据可视化:仪表盘和报表功能强大,便于趋势分析和容量规划
  • 开源免费:降低企业监控成本,无商业授权限制

2. 注意事项

  • 环境依赖:严格遵循 LNMP 版本要求(如 Zabbix6.0 需 MariaDB10.5+、PHP7.2+)
  • 权限配置:Zabbix 相关目录和文件需正确授权(zabbix 用户 /nginx 用户)
  • 网络连通:确保 Server 与 Agent 之间 10050/10051 端口互通
  • 数据库优化:监控数据增长较快,需定期清理或归档历史数据
  • 告警配置:避免告警风暴,合理设置触发条件和恢复阈值
  • 证书信任:第三方邮箱告警需正确配置 SSL 证书,否则发送失败
相关推荐
G_H_S_3_1 天前
【网络运维】企业级监控平台Zabbix:部署与实践指南
linux·运维·网络·zabbix
野熊佩骑1 天前
一文读懂运维监控之 Ubuntu22.04安装部署Zabbix监控
linux·运维·服务器·网络·ubuntu·zabbix·database
木二_2 天前
附055.Kubernetes部署Zabbix实战
云原生·容器·kubernetes·zabbix·监控
随风语2 天前
zabbix
zabbix
阿方索3 天前
zabbix
zabbix
OpsEye3 天前
Zabbix Server内存泄漏排查及优化实践
zabbix
lvbinemail3 天前
添加zabbix-agentd.service
linux·运维·服务器·zabbix·监控
2301_800050993 天前
Zabbix和ELK
笔记·elk·zabbix
小波小波轩然大波3 天前
ELK 与 Zabbix
elk·zabbix