1. Zabbix概述与环境规划
Zabbix是一个开源的企业级监控系统,用于监控服务器、网络设备和应用程序的性能和可用性。Zabbix支持多种监控方式,包括Agent、SNMP、ICMP等。更多学习教程www.fgedu.net.cn
1.1 Zabbix版本说明
Zabbix目前主要版本为6.x系列,本教程以Zabbix 6.4.0为例进行详细讲解。Zabbix 6.x版本相比之前版本在性能、稳定性和功能方面都有显著提升,支持更多的监控特性。
$ zabbix_server –version
zabbix_server (Zabbix) 6.4.0
Revision 2435243c01 10 May 2023, compilation time: May 10 2023 12:34:56
# 查看系统版本
$ cat /etc/os-release
NAME=”Oracle Linux Server”
VERSION=”8.9″
ID=”ol”
PRETTY_NAME=”Oracle Linux Server 8.9″
# 查看内核版本
$ uname -r
5.4.17-2136.302.7.2.el8uek.x86_64
1.2 环境规划
本次安装环境规划如下:
zabbix01.fgedu.net.cn (192.168.1.91) – Zabbix主服务器
zabbix02.fgedu.net.cn (192.168.1.92) – Zabbix备用服务器
Zabbix版本:6.4.0
数据库:PostgreSQL 14.0
Web服务器:Nginx 1.20.0
安装方式:RPM包安装
数据存储:本地文件系统 + NFS共享存储
2. 硬件环境要求
Zabbix作为企业级监控系统,对硬件资源要求根据监控目标数量和数据保留时间而定。学习交流加群风哥微信: itpux-com
2.1 物理主机环境要求
– CPU:至少8核
– 内存:至少32GB
– 磁盘:系统盘120GB SSD + 数据盘1TB SSD
# 检查Zabbix服务器资源
# free -h
total used free shared buff/cache available
Mem: 32G 8.4G 22G 512M 3.6G 23G
Swap: 8G 0B 8G
# 检查磁盘空间
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 120G 20G 100G 17% /
/dev/sdb1 1TB 50G 950G 5% /data
2.2 vSphere虚拟主机环境要求
– Zabbix服务器:
– vCPU:8核
– 内存:32GB
– 磁盘:系统盘120GB SSD + 数据盘1TB SSD
– 网络:VMXNET3网卡,10Gbps网络
资源池配置:
– CPU预留:4GHz
– 内存预留:16GB
– 内存限制:32GB
– CPU份额:正常
– 内存份额:正常
2.3 云平台主机环境要求
– Zabbix服务器:
– 实例规格:ecs.g6.4xlarge或同等规格
– vCPU:16核
– 内存:64GB
– 系统盘:SSD云盘 120GB
– 数据盘:SSD云盘 1TB
– 网络带宽:10Gbps以上
存储配置:
– OSS对象存储:用于存储监控数据备份
– NAS文件存储:用于共享监控数据
– 云盘快照:定期备份监控数据
3. 操作系统环境准备
在安装Zabbix之前,需要对操作系统进行必要的配置和优化。
3.1 操作系统版本检查
# cat /etc/os-release
NAME=”Oracle Linux Server”
VERSION=”8.9″
ID=”ol”
PRETTY_NAME=”Oracle Linux Server 8.9″
# 检查内核版本
# uname -r
5.4.17-2136.302.7.2.el8uek.x86_64
# 检查SELinux状态
# getenforce
Enforcing
# 检查防火墙状态
# systemctl status firewalld
● firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running)
3.2 依赖服务安装
# dnf install -y wget curl tar gzip epel-release
# 关闭防火墙
# systemctl stop firewalld
# systemctl disable firewalld
# 关闭SELinux
# setenforce 0
# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config
# 安装PostgreSQL
# dnf install -y postgresql-server postgresql-contrib
# postgresql-setup –initdb
# systemctl start postgresql
# systemctl enable postgresql
# 安装Nginx
# dnf install -y nginx
# systemctl start nginx
# systemctl enable nginx
3.3 数据库配置
# su – postgres
$ psql
CREATE USER zabbix WITH PASSWORD ‘password’;
CREATE DATABASE zabbix OWNER zabbix;
zabbix
CREATE EXTENSION pg_trgm;
CREATE EXTENSION btree_gist;
\q
$ exit
# 验证数据库连接
# psql -U zabbix -d zabbix -h localhost
Password for user zabbix:
psql (14.0)
Type “help” for help.
zabbix=> \q
4. Zabbix安装配置
完成环境准备后,开始安装Zabbix。
4.1 安装Zabbix服务器
# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/8/x86_64/zabbix-release-6.4-1.el8.noarch.rpm
# dnf clean all
# 安装Zabbix服务器和前端
# dnf install -y zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
# 导入数据库模式
# zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | psql -U zabbix -d zabbix
# 配置Zabbix服务器
# vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password
# 配置Nginx
# vi /etc/nginx/conf.d/zabbix.conf
listen 80;
server_name zabbix.fgedu.net.cn;
# 配置PHP
# vi /etc/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai
# 启动服务
# systemctl restart zabbix-server zabbix-agent nginx php-fpm
# systemctl enable zabbix-server zabbix-agent nginx php-fpm
# 验证安装
# systemctl status zabbix-server
# curl http://localhost
4.2 访问Zabbix Web界面
# 打开浏览器访问 http://zabbix.fgedu.net.cn
# 初始登录
# 用户名:Admin
# 密码:zabbix
# 完成安装向导
# 1. 检查预安装条件
# 2. 配置数据库连接
# 3. 设置Zabbix服务器信息
# 4. 完成安装
5. Zabbix配置优化
为了提高Zabbix的性能和稳定性,需要进行一些配置优化。
5.1 服务器配置优化
# vi /etc/zabbix/zabbix_server.conf
# 基本配置
ServerName=zabbix.fgedu.net.cn
ListenPort=10051
# 数据库配置
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password
DBSocket=/var/run/postgresql/.s.PGSQL.5432
# 缓存配置
CacheSize=8G
CacheUpdateFrequency=60
StartPollers=20
StartPollersUnreachable=10
StartTrappers=10
StartPingers=10
StartDiscoverers=10
# 历史数据配置
HistoryCacheSize=4G
HistoryIndexCacheSize=2G
TrendCacheSize=2G
ValueCacheSize=4G
# 告警配置
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
# 重启Zabbix服务器
# systemctl restart zabbix-server
5.2 数据库优化
# vi /var/lib/pgsql/data/postgresql.conf
# 内存配置
shared_buffers = 8GB
work_mem = 64MB
maintenance_work_mem = 2GB
# 查询优化
effective_cache_size = 24GB
random_page_cost = 1.1
# 写入优化
temp_buffers = 512MB
max_wal_size = 4GB
min_wal_size = 1GB
# 并发配置
max_connections = 200
# 重启PostgreSQL
# systemctl restart postgresql
# 优化数据库表
# su – postgres
$ psql -d zabbix
VACUUM ANALYZE;
REINDEX DATABASE zabbix;
\q
$ exit
5.3 高可用配置
# 重复主服务器的安装步骤
# 配置主服务器Zabbix
# vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password
# 配置备用服务器Zabbix
# vi /etc/zabbix/zabbix_server.conf
DBHost=zabbix01.fgedu.net.cn
DBName=zabbix
DBUser=zabbix
DBPassword=password
# 配置数据库主从复制
# 在主服务器上
# vi /var/lib/pgsql/data/postgresql.conf
wal_level = replica
max_wal_senders = 10
max_replication_slots = 10
# 编辑pg_hba.conf
# vi /var/lib/pgsql/data/pg_hba.conf
host replication replica 192.168.1.92/32 md5
# 重启PostgreSQL
# systemctl restart postgresql
# 在备用服务器上
# su – postgres
$ pg_basebackup -h 192.168.1.91 -U replica -D /var/lib/pgsql/data -P -v
$ vi /var/lib/pgsql/data/recovery.conf
standby_mode = ‘on’
primary_conninfo = ‘host=192.168.1.91 port=5432 user=replica password=password’
# 重启PostgreSQL
# systemctl restart postgresql
6. Zabbix Agent配置
Zabbix Agent用于收集被监控主机的指标数据。
6.1 安装Zabbix Agent
# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/8/x86_64/zabbix-release-6.4-1.el8.noarch.rpm
# dnf clean all
# 安装Zabbix Agent
# dnf install -y zabbix-agent
# 配置Zabbix Agent
# vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.91,192.168.1.92
ServerActive=192.168.1.91,192.168.1.92
Hostname=web01.fgedu.net.cn
# 启动Zabbix Agent
# systemctl start zabbix-agent
# systemctl enable zabbix-agent
# 验证安装
# systemctl status zabbix-agent
# netstat -tuln | grep 10050
6.2 配置主动模式
# vi /etc/zabbix/zabbix_agentd.conf
# 主动模式配置
Server=192.168.1.91,192.168.1.92
ServerActive=192.168.1.91,192.168.1.92
Hostname=web01.fgedu.net.cn
StartAgents=0
# 重启Zabbix Agent
# systemctl restart zabbix-agent
7. Zabbix模板配置
Zabbix模板用于快速配置监控项和触发器。
7.1 导入模板
# 1. 点击左侧菜单的”Configuration” -> “Templates”
# 2. 点击”Import”
# 3. 选择模板文件(如Template OS Linux)
# 4. 点击”Import”
# 应用模板到主机
# 1. 点击左侧菜单的”Configuration” -> “Hosts”
# 2. 选择主机,点击”Templates”
# 3. 搜索并选择模板
# 4. 点击”Add”
# 5. 点击”Update”
7.2 创建自定义模板
# 1. 点击左侧菜单的”Configuration” -> “Templates”
# 2. 点击”Create template”
# 3. 填写模板名称和描述
# 4. 点击”Add”
# 添加监控项
# 1. 选择模板,点击”Items”
# 2. 点击”Create item”
# 3. 填写监控项名称、键值、单位等
# 4. 点击”Add”
# 添加触发器
# 1. 选择模板,点击”Triggers”
# 2. 点击”Create trigger”
# 3. 填写触发器名称、表达式等
# 4. 点击”Add”
8. Zabbix告警配置
Zabbix告警用于通知管理员系统异常。
8.1 配置告警媒介
# 1. 点击左侧菜单的”Administration” -> “Media types”
# 2. 点击”Create media type”
# 3. 选择媒介类型(如Email)
# 4. 填写SMTP服务器信息
# 5. 点击”Add”
# 配置用户媒介
# 1. 点击左侧菜单的”Administration” -> “Users”
# 2. 选择用户,点击”Media”
# 3. 点击”Add”
# 4. 选择媒介类型,填写联系方式
# 5. 点击”Add”
8.2 配置告警动作
# 1. 点击左侧菜单的”Configuration” -> “Actions”
# 2. 点击”Create action”
# 3. 填写动作名称和条件
# 4. 配置操作(如发送邮件)
# 5. 点击”Add”
# 测试告警
# 1. 手动触发一个告警
# 2. 检查邮件是否收到
9. Zabbix安全配置
Zabbix提供了多种安全功能,包括认证、授权、加密等。
9.1 认证配置
# 1. 点击左侧菜单的”Administration” -> “Users”
# 2. 点击”Create user”
# 3. 填写用户名、密码、权限等
# 4. 点击”Add”
# 配置用户组
# 1. 点击左侧菜单的”Administration” -> “User groups”
# 2. 点击”Create user group”
# 3. 填写组名称和权限
# 4. 点击”Add”
9.2 加密配置
# openssl req -newkey rsa:2048 -nodes -keyout /etc/zabbix/zabbix_server.key -x509 -days 365 -out /etc/zabbix/zabbix_server.crt
# 配置Zabbix服务器
# vi /etc/zabbix/zabbix_server.conf
TLSCAFile=/etc/zabbix/ca.crt
TLSCertFile=/etc/zabbix/zabbix_server.crt
TLSKeyFile=/etc/zabbix/zabbix_server.key
# 配置Zabbix Agent
# vi /etc/zabbix/zabbix_agentd.conf
TLSCAFile=/etc/zabbix/ca.crt
TLSCertFile=/etc/zabbix/zabbix_agent.crt
TLSKeyFile=/etc/zabbix/zabbix_agent.key
# 重启服务
# systemctl restart zabbix-server zabbix-agent
10. Zabbix性能优化
在生产环境中,需要对Zabbix进行性能优化以提高监控效率。from:www.itpux.com
10.1 服务器性能优化
# vi /etc/zabbix/zabbix_server.conf
# 缓存配置
CacheSize=16G
HistoryCacheSize=8G
HistoryIndexCacheSize=4G
TrendCacheSize=4G
ValueCacheSize=8G
# 进程配置
StartPollers=50
StartPollersUnreachable=20
StartTrappers=20
StartPingers=20
StartDiscoverers=20
# 超时配置
Timeout=30
# 重启Zabbix服务器
# systemctl restart zabbix-server
10.2 数据库性能优化
# vi /var/lib/pgsql/data/postgresql.conf
# 内存配置
shared_buffers = 16GB
work_mem = 128MB
maintenance_work_mem = 4GB
# 查询优化
effective_cache_size = 48GB
random_page_cost = 1.0
# 写入优化
temp_buffers = 1GB
max_wal_size = 8GB
min_wal_size = 2GB
# 并发配置
max_connections = 500
# 重启PostgreSQL
# systemctl restart postgresql
# 定期优化数据库
# crontab -e
0 0 * * * su – postgres -c “psql -d zabbix -c ‘VACUUM ANALYZE;'”
10.3 监控项优化
# 1. 访问Zabbix Web界面
# 2. 点击左侧菜单的”Configuration” -> “Templates”
# 3. 选择模板,点击”Items”
# 4. 调整监控项的Update interval
# 优化历史数据保留时间
# 1. 访问Zabbix Web界面
# 2. 点击左侧菜单的”Administration” -> “General”
# 3. 点击”Housekeeping”
# 4. 调整历史数据和趋势数据的保留时间
11. Zabbix升级迁移
本节介绍Zabbix的版本升级和数据迁移方法。
11.1 Zabbix版本升级
# su – postgres
$ pg_dump -U zabbix -d zabbix > /backup/zabbix-backup-$(date +%Y%m%d).sql
$ exit
# 停止Zabbix服务
# systemctl stop zabbix-server zabbix-agent
# 升级Zabbix
# dnf clean all
# dnf update zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
# 升级数据库模式
# zcat /usr/share/zabbix-sql-scripts/postgresql/upgrade.sql.gz | psql -U zabbix -d zabbix
# 启动Zabbix服务
# systemctl start zabbix-server zabbix-agent
# 验证升级
# zabbix_server –version
zabbix_server (Zabbix) 6.4.1
Revision 2435243c01 10 June 2023, compilation time: June 10 2023 12:34:56
# 访问Zabbix Web界面
# 打开浏览器访问 http://zabbix.fgedu.net.cn
11.2 Zabbix数据迁移
# su – postgres
$ pg_dump -U zabbix -d zabbix > /backup/zabbix-backup.sql
$ exit
# 在新服务器上恢复数据
# su – postgres
$ psql -U postgres -c “CREATE USER zabbix WITH PASSWORD ‘password’;”
$ psql -U postgres -c “CREATE DATABASE zabbix OWNER zabbix;”
$ psql -U zabbix -d zabbix -f /backup/zabbix-backup.sql
$ psql -U zabbix -d zabbix -c “CREATE EXTENSION pg_trgm;”
$ psql -U zabbix -d zabbix -c “CREATE EXTENSION btree_gist;”
$ exit
# 安装Zabbix
# 重复安装步骤
# 启动Zabbix服务
# systemctl start zabbix-server zabbix-agent
# 验证迁移
# 访问Zabbix Web界面,检查数据是否完整
12. Zabbix备份恢复
本节介绍Zabbix的备份和恢复方法。
12.1 Zabbix备份
# vi /data/zabbix/scripts/backup.sh
#!/bin/bash
BACKUP_DIR=”/backup/zabbix”
DATE=$(date +%Y%m%d)
# 创建备份目录
mkdir -p $BACKUP_DIR
# 备份数据库
su – postgres -c “pg_dump -U zabbix -d zabbix > $BACKUP_DIR/zabbix-backup-$DATE.sql”
# 备份配置文件
cp /etc/zabbix/zabbix_server.conf $BACKUP_DIR/zabbix_server-$DATE.conf
cp /etc/zabbix/zabbix_agentd.conf $BACKUP_DIR/zabbix_agentd-$DATE.conf
cp -r /etc/nginx/conf.d $BACKUP_DIR/nginx-conf-$DATE
# 清理旧备份(保留7天)
find $BACKUP_DIR -type f -mtime +7 -exec rm -f {} \;
# 添加执行权限
# chmod +x /data/zabbix/scripts/backup.sh
# 添加定时任务
# crontab -e
0 0 * * * /data/zabbix/scripts/backup.sh
12.2 Zabbix恢复
# systemctl stop zabbix-server zabbix-agent
# 恢复数据库
# su – postgres
$ psql -U postgres -c “DROP DATABASE zabbix;”
$ psql -U postgres -c “CREATE DATABASE zabbix OWNER zabbix;”
$ psql -U zabbix -d zabbix -f /backup/zabbix/zabbix-backup-20230405.sql
$ psql -U zabbix -d zabbix -c “CREATE EXTENSION pg_trgm;”
$ psql -U zabbix -d zabbix -c “CREATE EXTENSION btree_gist;”
$ exit
# 恢复配置文件
# cp /backup/zabbix/zabbix_server-20230405.conf /etc/zabbix/zabbix_server.conf
# cp /backup/zabbix/zabbix_agentd-20230405.conf /etc/zabbix/zabbix_agentd.conf
# cp -r /backup/zabbix/nginx-conf-20230405/* /etc/nginx/conf.d/
# 启动Zabbix服务
# systemctl start zabbix-server zabbix-agent
# 验证恢复
# systemctl status zabbix-server
# 访问Zabbix Web界面,检查数据是否完整
12.3 Zabbix监控脚本
# vi /data/zabbix/scripts/monitor.sh
#!/bin/bash
LOG_FILE=”/var/log/zabbix_monitor.log”
ALERT_EMAIL=”admin@fgedu.net.cn”
check_zabbix_status() {
echo “$(date): Checking zabbix server status…” >> $LOG_FILE
status=$(systemctl status zabbix-server | grep Active | awk ‘{print $2}’)
if [ “$status” != “active” ]; then
echo “$(date): Zabbix server is not running” >> $LOG_FILE
echo “Zabbix server is not running” | mail -s “Zabbix Alert” $ALERT_EMAIL
systemctl start zabbix-server
else
echo “$(date): Zabbix server is running” >> $LOG_FILE
fi
}
check_zabbix_web() {
echo “$(date): Checking zabbix web…” >> $LOG_FILE
status=$(curl -s -o /dev/null -w “%{http_code}” http://zabbix.fgedu.net.cn)
if [ “$status” = “200” ]; then
echo “$(date): Zabbix web: OK” >> $LOG_FILE
else
echo “$(date): Zabbix web: FAILED” >> $LOG_FILE
echo “Zabbix web failed” | mail -s “Zabbix Alert” $ALERT_EMAIL
fi
}
check_postgresql_status() {
echo “$(date): Checking postgresql status…” >> $LOG_FILE
status=$(systemctl status postgresql | grep Active | awk ‘{print $2}’)
if [ “$status” != “active” ]; then
echo “$(date): PostgreSQL is not running” >> $LOG_FILE
echo “PostgreSQL is not running” | mail -s “Zabbix Alert” $ALERT_EMAIL
systemctl start postgresql
else
echo “$(date): PostgreSQL is running” >> $LOG_FILE
fi
}
check_nginx_status() {
echo “$(date): Checking nginx status…” >> $LOG_FILE
status=$(systemctl status nginx | grep Active | awk ‘{print $2}’)
if [ “$status” != “active” ]; then
echo “$(date): Nginx is not running” >> $LOG_FILE
echo “Nginx is not running” | mail -s “Zabbix Alert” $ALERT_EMAIL
systemctl start nginx
else
echo “$(date): Nginx is running” >> $LOG_FILE
fi
}
main() {
check_zabbix_status
check_zabbix_web
check_postgresql_status
check_nginx_status
}
main
# 添加执行权限
# chmod +x /data/zabbix/scripts/monitor.sh
# 添加定时任务
# crontab -e
*/15 * * * * /data/zabbix/scripts/monitor.sh
通过以上步骤,Zabbix安装配置、性能优化、升级迁移、备份恢复等内容已全部完成。Zabbix作为企业级监控系统,能够高效地监控服务器、网络设备和应用程序,是企业IT运维的重要工具。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
