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 后查看恢复邮件。

相关推荐
半夏知半秋7 小时前
docker常用指令整理
运维·笔记·后端·学习·docker·容器
逆风水手8 小时前
Ansible自动化运维入门指南
linux·运维·自动化·ansible
tianyuanwo8 小时前
SSH会话管理实战:识别与清理非法连接的完整指南
运维·ssh
小豆子范德萨8 小时前
两台window配置SSH免密登录
运维·ssh
小北方城市网9 小时前
第 6 课:Vue 3 工程化与项目部署实战 —— 从本地开发到线上发布
大数据·运维·前端·ai
记得记得就15110 小时前
docker作业
运维·docker·容器
运维行者_11 小时前
OPM 与传统管理工具的区别,在网络修复与自动化运维方面的优势在哪里?
运维·服务器·开发语言·网络·自动化·php·ssl
HaSaKing_72111 小时前
EMQX 多机集群部署完整实践(Docker + 社区版 5.8.8)
运维·docker·容器·emqx
南山nash12 小时前
企业级docker镜像仓库harbor安装与使用
运维·docker·容器·镜像仓库