Zabbix

文章目录

    • [一、Zabbix 核心基础信息](#一、Zabbix 核心基础信息)
      • [1. 关键资源](#1. 关键资源)
      • [2. 主流版本支持周期(LTS 更稳定)](#2. 主流版本支持周期(LTS 更稳定))
      • [3. 核心优势](#3. 核心优势)
    • [二、Zabbix 架构核心组件](#二、Zabbix 架构核心组件)
    • [三、环境准备与 LNMP 搭建](#三、环境准备与 LNMP 搭建)
      • [1. 服务器规划](#1. 服务器规划)
      • [2. 安装 Nginx](#2. 安装 Nginx)
      • [3. 安装 MariaDB 10.6](#3. 安装 MariaDB 10.6)
      • [4. 安装 PHP 7.2(Zabbix 6.0 兼容版本)](#4. 安装 PHP 7.2(Zabbix 6.0 兼容版本))
      • [5. 配置 Nginx 支持 PHP](#5. 配置 Nginx 支持 PHP)
    • [四、Zabbix Server 安装与配置](#四、Zabbix Server 安装与配置)
      • [1. 创建 Zabbix 数据库](#1. 创建 Zabbix 数据库)
      • [2. 导入 Zabbix 数据库脚本](#2. 导入 Zabbix 数据库脚本)
      • [3. 编译安装 Zabbix Server](#3. 编译安装 Zabbix Server)
      • [4. 配置 Zabbix Server](#4. 配置 Zabbix Server)
      • [5. 配置 Systemd 服务](#5. 配置 Systemd 服务)
      • [6. 部署 Zabbix 前端页面](#6. 部署 Zabbix 前端页面)
      • [7. Web 界面初始化配置](#7. Web 界面初始化配置)
    • [五、被监控端 Agent2 安装配置](#五、被监控端 Agent2 安装配置)
    • [六、Zabbix 监控配置(Web 界面)](#六、Zabbix 监控配置(Web 界面))
      • [1. 添加监控主机](#1. 添加监控主机)
    • [七、邮件告警配置(QQ 邮箱为例)](#七、邮件告警配置(QQ 邮箱为例))
      • [1. 获取 QQ 邮箱授权码](#1. 获取 QQ 邮箱授权码)
      • [2. 配置 Zabbix Server 邮件服务](#2. 配置 Zabbix Server 邮件服务)
      • [3. 编写 Zabbix 告警脚本](#3. 编写 Zabbix 告警脚本)
      • [4. Zabbix 前端配置告警](#4. Zabbix 前端配置告警)
      • [5. 测试告警](#5. 测试告警)

一、Zabbix 核心基础信息

1. 关键资源

2. 主流版本支持周期(LTS 更稳定)

版本 发布日期 全面支持截止 有限支持截止
Zabbix 7.0 LTS 2024-06-04 2027-06-30 2029-06-30
Zabbix 6.0 LTS 2022-02-08 2025-02-28 2027-02-28

3. 核心优势

  • 监控范围广:覆盖服务器、数据库、云平台、网站等
  • 告警灵活:支持邮件、短信等多渠道告警
  • 可视化强:自带报表和图表,支持容量规划
  • 架构分布式:支持 Proxy 分担负载,适合大规模部署

二、Zabbix 架构核心组件

组件 核心作用
Zabbix Server 核心中枢,接收 Agent 数据、存储配置和统计信息
数据库存储 存储监控数据和配置信息(本文用 MariaDB 10.6)
Web 界面 基于浏览器的操作入口,管理监控配置和查看数据
Zabbix Agent2 部署在被监控端,采集本地资源数据(Go 语言编写,支持插件扩展)
Zabbix Proxy 可选组件,分担 Server 负载(大规模监控场景用)

数据流逻辑

创建主机 → 配置监控项 → 设置触发器(阈值)→ 配置动作(告警),模板功能可大幅简化重复配置。

三、环境准备与 LNMP 搭建

1. 服务器规划

主机名 IP 地址 角色 系统
zabbix-server 192.168.108.50 监控服务端(LNMP + Zabbix Server) CentOS 7
mysql001 192.168.108.51 被监控端(Agent2 + MySQL) CentOS 7

2. 安装 Nginx

bash 复制代码
# 配置 yum 源
cat > /etc/yum.repos.d/nginx.repo << EOF
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/\$basearch/
enabled=1
gpgcheck=0
EOF

# 安装并启动
yum install nginx -y
systemctl start nginx && systemctl enable nginx
# 开放防火墙 HTTP 端口
firewall-cmd --add-service=http --permanent && firewall-cmd --reload

测试:访问 http://192.168.108.50,出现 Nginx 欢迎页即为成功。

3. 安装 MariaDB 10.6

bash 复制代码
# 配置 yum 源
cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name=MariaDB
baseurl=https://mirrors.aliyun.com/mariadb/yum/10.6/centos7-amd64/
enabled=1
gpgcheck=0
EOF

# 安装并启动
yum install mariadb-server mariadb -y
systemctl start mariadb && systemctl enable mariadb
# 初始化数据库(设置 root 密码 root123)
mysql -e "DELETE FROM mysql.user WHERE User=''; ALTER USER root@localhost IDENTIFIED BY 'root123';"

4. 安装 PHP 7.2(Zabbix 6.0 兼容版本)

bash 复制代码
# 配置 EPEL 和 Webtatic 源
yum install epel-release -y
sed -i "s/#baseurl/baseurl/g; s/metalink/#metalink/g; s@download.*pub@repo.huaweicloud.com@g" /etc/yum.repos.d/epel.repo
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

# 安装 PHP 及依赖
yum install php72w php72w-cli php72w-fpm php72w-mysqlnd php72w-gd php72w-mbstring php72w-ldap -y

# 关键配置(/etc/php.ini)
sed -i "s/short_open_tag = Off/short_open_tag = On/" /etc/php.ini
sed -i "s/max_execution_time = 30/max_execution_time = 300/" /etc/php.ini
sed -i "s/max_input_time = 60/max_input_time = 300/" /etc/php.ini
sed -i "s/memory_limit = 128M/memory_limit = 128M/" /etc/php.ini
sed -i "s/;date.timezone =/date.timezone = Asia\/Shanghai/" /etc/php.ini
echo "always_populate_raw_post_data = -1" >> /etc/php.ini

# 配置 PHP-FPM 运行用户为 nginx
sed -i "s/user = apache/user = nginx/" /etc/php-fpm.d/www.conf
sed -i "s/group = apache/group = nginx/" /etc/php-fpm.d/www.conf

# 启动 PHP-FPM
systemctl start php-fpm && systemctl enable php-fpm

5. 配置 Nginx 支持 PHP

修改 /etc/nginx/conf.d/default.conf

nginx 复制代码
index index.php index.html index.htm;  # 添加 index.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;
    include        fastcgi_params;
}

重启 Nginx:systemctl restart nginx

测试 PHP:创建 /usr/share/nginx/html/info.php,写入 <?php phpinfo(); ?>,访问 http://192.168.108.50/info.php 能看到 PHP 信息即可。

四、Zabbix Server 安装与配置

1. 创建 Zabbix 数据库

bash 复制代码
mysql -uroot -proot123 << EOF
CREATE DATABASE zabbix character set utf8 collate utf8_bin;
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix123';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix123';
FLUSH PRIVILEGES;
EOF

2. 导入 Zabbix 数据库脚本

bash 复制代码
# 下载并解压 Zabbix 安装包(官网下载 zabbix-6.0.6.tar.gz)
tar zxvf zabbix-6.0.6.tar.gz
cd 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

3. 编译安装 Zabbix Server

bash 复制代码
# 安装依赖
yum install -y mysql-devel pcre-devel openssl-devel net-snmp-devel libcurl-devel gcc gcc-c++ make
# 创建 Zabbix 系统用户
useradd -s /sbin/nologin -M zabbix
# 编译配置
cd ../../
export CFLAGS="-std=gnu99"
./configure --sysconfdir=/etc/zabbix/ --enable-server --with-mysql --with-net-snmp --with-libcurl
# 编译安装
make install

4. 配置 Zabbix Server

修改 /etc/zabbix/zabbix_server.conf

conf 复制代码
LogFile=/var/log/zabbix_server.log
DBPassword=zabbix123  # 数据库密码

创建日志文件并授权:

bash 复制代码
touch /var/log/zabbix_server.log
chown zabbix:zabbix /var/log/zabbix_server.log

5. 配置 Systemd 服务

bash 复制代码
cat > /usr/lib/systemd/system/zabbix-server.service << EOF
[Unit]
Description=Zabbix Server
After=syslog.target network.target mariadb.service

[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server
User=zabbix

[Install]
WantedBy=multi-user.target
EOF

# 启动 Zabbix Server
systemctl start zabbix-server && systemctl enable zabbix-server
# 验证端口(默认 10051)
netstat -ntap | grep 10051

6. 部署 Zabbix 前端页面

bash 复制代码
# 复制前端文件到 Nginx 根目录
cp -r zabbix-6.0.6/ui/* /usr/share/nginx/html/
chown -R nginx:nginx /usr/share/nginx/html/

7. Web 界面初始化配置

访问 http://192.168.108.50,按引导完成配置:

  1. 语言选择中文,检查依赖(全部 OK 下一步)
  2. 数据库配置:类型 MySQL,库名 zabbix,用户名 zabbix,密码 zabbix123
  3. 确认配置,完成安装
  4. 初始登录:用户名 Admin,密码 zabbix

五、被监控端 Agent2 安装配置

以 mysql001 为例:

bash 复制代码
# 配置 Zabbix yum 源
rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
# 安装 Agent2
yum install zabbix-agent2 -y

# 修改配置文件 /etc/zabbix/zabbix_agent2.conf
sed -i "s/Server=127.0.0.1/Server=192.168.108.50/" /etc/zabbix/zabbix_agent2.conf
sed -i "s/ServerActive=127.0.0.1/ServerActive=192.168.108.50/" /etc/zabbix/zabbix_agent2.conf
sed -i "s/Hostname=Zabbix server/Hostname=mysql001/" /etc/zabbix/zabbix_agent2.conf

# 启动 Agent2
systemctl start zabbix-agent2 && systemctl enable zabbix-agent2
# 关闭防火墙(或开放 10050 端口)
systemctl stop firewalld && setenforce 0

六、Zabbix 监控配置(Web 界面)

1. 添加监控主机

  1. 登录 Zabbix 前端 → 配置 → 主机 → 创建主机
  2. 主机名称:mysql001(与 Agent2 配置一致)
  3. 群组:选择 Linux 服务器(或自定义)
  4. 接口:添加 → 客户端 → 端口 10050
  5. 模板:搜索并添加 Template OS Linux(系统默认模板)
  6. 点击更新,等待 1-2 分钟,主机可用性显示绿色即为正常

七、邮件告警配置(QQ 邮箱为例)

1. 获取 QQ 邮箱授权码

  1. 登录 QQ 邮箱 → 设置 → 账号 → 开启 POP3/SMTP 服务
  2. 生成授权码(如:lmsbtquhuzhqcage,保存备用)

2. 配置 Zabbix Server 邮件服务

bash 复制代码
# 安装 mailx
yum install mailx -y

# 配置 /etc/mail.rc
cat >> /etc/mail.rc << EOF
set from=6946630@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=6946630@qq.com
set smtp-auth-password=lmsbtquhuzhqcage  # 替换为你的授权码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
EOF

# 测试邮件发送
echo "Zabbix 测试邮件" | mailx -s "测试" 6946630@qq.com

收到邮件说明配置成功。

3. 编写 Zabbix 告警脚本

bash 复制代码
# 创建脚本目录(与 zabbix_server.conf 一致)
mkdir -p /usr/lib/zabbix/alertscripts
chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts

# 编写脚本 mailx.sh
cat > /usr/lib/zabbix/alertscripts/mailx.sh << EOF
#!/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
EOF

# 授权
chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
touch /tmp/mailx.log && chown zabbix:zabbix /tmp/mailx.log

4. Zabbix 前端配置告警

  1. 创建报警媒介类型:管理 → 报警媒介类型 → 创建媒体类型

    • 名称:mail-test
    • 类型:脚本
    • 脚本名称:mailx.sh
    • 脚本参数:{ALERT.SENDTO}{ALERT.SUBJECT}{ALERT.MESSAGE}
  2. 配置用户告警媒介:管理 → 用户 → Admin → 报警媒介 → 添加

    • 类型:mail-test
    • 收件人:你的 QQ 邮箱
  3. 创建触发器动作:配置 → 动作 → 创建动作

    • 触发条件:主机 = mysql001

    • 操作主题:{TRIGGER.STATUS}:{TRIGGER.NAME}

    • 操作消息:

      plaintext

      plaintext 复制代码
      告警主机:{HOST.NAME}
      告警IP:{HOST.IP}
      告警时间:{EVENT.DATE}-{EVENT.TIME}
      告警等级:{TRIGGER.SEVERITY}
      告警信息:{TRIGGER.NAME}:{ITEM.VALUE}
    • 恢复操作:同理配置恢复通知

5. 测试告警

在被监控端执行 systemctl stop mysqld,等待 1-2 分钟,查看 QQ 邮箱是否收到告警邮件;重启 mysqld 后查看恢复邮件。

相关推荐
七夜zippoe20 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy64821 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满21 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠21 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey9031 天前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技1 天前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀1 天前
Linux环境变量
linux·运维·服务器
zzzsde1 天前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º1 天前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~1 天前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化