1. 虚拟机与宿主机网络互通配置
在开始安装Zabbix之前,确保虚拟机与宿主机之间的网络连通性是首要任务。我选择使用NAT模式进行网络配置,这是最稳定且易于管理的方案。以下是详细配置过程:
1.1 网络环境准备
我的实验环境采用以下IP规划:
- 宿主机Windows IP:192.168.1.200
- 虚拟机CentOS7 IP:192.168.1.100
- 网关:192.168.1.1
这种IP分配方案确保了同一网段内的设备可以直接通信,同时避免了IP冲突的风险。在实际部署时,建议先通过ipconfig(Windows)或ifconfig(Linux)确认宿主机的实际网络配置。
1.2 虚拟机网卡配置
CentOS 7默认使用NetworkManager管理网络,但为了保持配置的稳定性和一致性,我选择直接修改网卡配置文件:
bash复制vi /etc/sysconfig/network-scripts/ifcfg-ens33
关键配置参数说明:
BOOTPROTO=static:设置为静态IP,避免DHCP分配的IP变动导致服务中断ONBOOT=yes:确保网卡随系统启动IPADDR=192.168.1.100:设置虚拟机固定IPGATEWAY=192.168.1.1:指定网关地址DNS1=223.5.5.5:使用阿里云公共DNS,比默认DNS解析更稳定
注意:ens33是常见的网卡名称,但某些环境下可能是ens160或其他名称。可以通过
ip addr命令查看实际网卡名称。
1.3 虚拟机网络模式设置
在VMware Workstation中,我选择NAT模式而非桥接模式,主要基于以下考虑:
- 隔离性:NAT模式将虚拟机置于独立子网,避免影响物理网络
- 安全性:外部网络无法直接访问虚拟机,默认具备一定防护能力
- 便捷性:无需依赖物理网络环境,适合移动办公场景
具体设置路径:VMware > 虚拟机设置 > 网络适配器 > NAT模式
1.4 虚拟网络编辑器配置
在VMware的"编辑 > 虚拟网络编辑器"中,我进行了以下关键配置:
- 选择VMnet8(NAT模式)对应的虚拟网络
- 取消勾选"使用本地DHCP服务"
- 设置子网IP为192.168.1.0,子网掩码255.255.255.0
- NAT设置中确认网关IP为192.168.1.1
这些配置确保了虚拟机的网络参数与之前设置的静态IP相匹配。
1.5 网络服务重启与验证
应用所有配置后,执行以下命令重启网络服务:
bash复制systemctl restart network
验证网络连通性的几个关键命令:
bash复制ping 192.168.1.1 # 测试网关连通性
ping 223.5.5.5 # 测试DNS服务器连通性
ping www.aliyun.com # 测试域名解析
curl -I http://www.aliyun.com # 测试HTTP访问
如果出现任何不通的情况,建议按以下顺序排查:
- 检查虚拟机网络适配器是否已连接
- 确认防火墙临时关闭(
systemctl stop firewalld) - 验证IP配置是否正确(
ip addr show ens33) - 检查VMware虚拟网络编辑器配置
2. 系统环境准备与优化
2.1 安全策略调整
Zabbix的正常运行需要特定的网络访问权限,因此需要调整系统安全策略:
bash复制# 临时关闭防火墙
systemctl stop firewalld
# 禁止防火墙开机启动
systemctl disable firewalld
# 临时关闭SELinux
setenforce 0
# 永久关闭SELinux
sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config
# 重启使配置生效
reboot
生产环境建议:如果是在生产环境部署,不建议完全关闭防火墙和SELinux,而应该通过以下方式精细控制:
bash复制# 开放Zabbix Server端口 firewall-cmd --permanent --add-port=10050/tcp firewall-cmd --permanent --add-port=10051/tcp firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload # 设置SELinux策略 setsebool -P httpd_can_network_connect_db on setsebool -P httpd_can_connect_zabbix on
2.2 配置阿里云镜像源
使用国内镜像源可以显著提高软件下载速度。我配置了完整的阿里云源集合:
- 备份原有repo文件:
bash复制mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
- 创建CentOS基础源:
bash复制cat > /etc/yum.repos.d/CentOS-Base.repo <<'EOF'
[base]
name=CentOS-$releasever - Base
baseurl=https://mirrors.aliyun.com/centos/7/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates
baseurl=https://mirrors.aliyun.com/centos/7/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras
baseurl=https://mirrors.aliyun.com/centos/7/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
EOF
- 配置EPEL源(提供额外软件包):
bash复制cat > /etc/yum.repos.d/epel.repo <<'EOF'
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=https://mirrors.aliyun.com/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7
EOF
- 配置SCL源(提供软件集合):
bash复制cat > /etc/yum.repos.d/CentOS-SCL.repo <<'EOF'
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=https://mirrors.aliyun.com/centos/7/sclo/$basearch/sclo/
gpgcheck=0
enabled=1
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=https://mirrors.aliyun.com/centos/7/sclo/$basearch/rh/
gpgcheck=0
enabled=1
EOF
- 清理并重建缓存:
bash复制yum clean all
yum makecache
2.3 系统时间同步
监控系统对时间准确性要求极高,建议配置NTP时间同步:
bash复制yum install -y ntpdate
ntpdate ntp.aliyun.com
# 写入定时任务
echo "0 1 * * * /usr/sbin/ntpdate ntp.aliyun.com > /dev/null 2>&1" >> /etc/crontab
systemctl restart crond
3. Zabbix 5.0安装与配置
3.1 配置Zabbix官方源
为了获取最新的Zabbix 5.0版本,我们需要添加官方仓库:
bash复制cat > /etc/yum.repos.d/zabbix.repo <<'EOF'
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/
enabled=1
gpgcheck=0
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgcheck=0
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/
enabled=1
gpgcheck=0
EOF
3.2 安装Zabbix组件
- 安装Server和Agent:
bash复制yum install zabbix-server-mysql zabbix-agent -y
- 安装前端依赖环境:
bash复制# 启用前端仓库
sed -i 's/enabled=0/enabled=1/' /etc/yum.repos.d/zabbix.repo
# 安装软件集合仓库
yum install centos-release-scl -y
# 安装前端组件
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y
- 安装MariaDB数据库:
bash复制yum install mariadb-server -y
systemctl enable --now mariadb
3.3 数据库配置
- 安全初始化MariaDB:
bash复制mysql_secure_installation
按照提示设置root密码,并选择以下安全选项:
- 移除匿名用户:Y
- 禁止root远程登录:Y
- 移除测试数据库:Y
- 重新加载权限表:Y
- 创建Zabbix数据库和用户:
bash复制mysql -u root -p
执行以下SQL语句(将'Zabbix@123'替换为你自己的强密码):
sql复制CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Zabbix@123';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
EXIT;
- 导入Zabbix初始数据:
bash复制zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pZabbix@123 zabbix
注意:导入过程可能需要几分钟时间,取决于服务器性能。大型监控环境建议在业务低峰期执行此操作。
3.4 Zabbix Server配置
编辑主配置文件:
bash复制vi /etc/zabbix/zabbix_server.conf
修改以下关键参数:
ini复制DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix@123
# 根据服务器内存调整缓存大小(建议:内存的10%-20%)
StartPollers=20
StartPollersUnreachable=10
StartTrappers=15
StartPingers=15
CacheSize=256M
HistoryCacheSize=128M
HistoryIndexCacheSize=64M
参数配置建议:
StartPollers:根据监控主机数量调整,每50-100台主机增加5个pollersCacheSize:监控项越多需要越大,一般每1000个监控项需要8MB缓存- 生产环境建议启用
LogSlowQueries=1000记录慢查询
3.5 PHP环境配置
Zabbix前端需要PHP支持,配置时区和其他参数:
bash复制vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
修改以下参数:
ini复制php_value[date.timezone] = Asia/Shanghai
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
提示:如果监控项包含大文件传输(如日志文件收集),需要适当增大
upload_max_filesize和post_max_size值。
4. 服务启动与访问
4.1 启动相关服务
bash复制# 停止系统默认PHP-FPM
systemctl stop php-fpm
systemctl disable php-fpm
# 启动Zabbix相关服务
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
验证服务状态:
bash复制systemctl status zabbix-server
netstat -tulnp | grep zabbix
正常情况应该看到:
- 10051端口(Server)监听
- 10050端口(Agent)监听
- 80端口(Apache)监听
4.2 访问Zabbix Web界面
-
在宿主机浏览器访问:
http://192.168.1.100/zabbix -
按照安装向导完成以下步骤:
- 检查前置条件(全部应为OK状态)
- 配置数据库连接:
- Database type: MySQL
- Database host: localhost
- Database port: 3306
- Database name: zabbix
- User: zabbix
- Password: Zabbix@123
- 设置Zabbix服务器详细信息(名称可自定义)
- 确认安装配置
- 完成安装
-
使用默认凭据登录:
- 用户名:Admin
- 密码:zabbix
安全建议:首次登录后立即修改Admin密码,并创建具有适当权限的普通管理员账户。
4.3 初始配置优化
-
添加本地主机监控:
- 进入"Configuration > Hosts"
- 确认"Zabbix server"主机已存在且监控正常
- 检查最新数据是否开始收集
-
调整管理员邮箱:
- 进入"User settings > Profile > Media"
- 添加邮箱地址用于告警通知
-
配置中文界面(可选):
- 进入"User settings > Profile > Language"
- 选择"Chinese (zh_CN)"
5. 常见问题与解决方案
5.1 网络连接问题
问题现象:宿主机无法访问Zabbix Web界面
排查步骤:
- 检查虚拟机网络连接状态
bash复制
ping 192.168.1.100 - 验证Apache服务是否运行
bash复制
systemctl status httpd - 检查防火墙规则
bash复制
iptables -L -n - 查看Apache访问日志
bash复制tail -f /var/log/httpd/access_log
解决方案:
- 如果ping不通,检查VMware网络配置
- 如果服务未运行,启动httpd服务
- 如果有防火墙拦截,临时关闭防火墙测试
- 如果80端口被占用,修改Apache监听端口
5.2 数据库连接问题
问题现象:Zabbix Server无法连接数据库
排查步骤:
- 检查数据库服务状态
bash复制
systemctl status mariadb - 测试数据库连接
bash复制
mysql -uzabbix -pZabbix@123 zabbix - 查看Zabbix Server日志
bash复制tail -f /var/log/zabbix/zabbix_server.log
解决方案:
- 确保mariadb服务正常运行
- 验证数据库用户权限
- 检查
/etc/zabbix/zabbix_server.conf中的数据库配置 - 确认数据库是否已正确初始化
5.3 前端显示问题
问题现象:Web界面显示异常或部分功能不可用
排查步骤:
- 检查PHP错误日志
bash复制tail -f /var/log/php-fpm/error.log - 验证PHP扩展是否加载
bash复制php -m | grep -E 'mbstring|gd|xml|json' - 检查文件权限
bash复制ls -ld /etc/zabbix/web/*
解决方案:
- 安装缺失的PHP扩展
- 调整文件权限(通常应为apache:apache)
- 清除浏览器缓存或尝试其他浏览器
- 检查
/etc/php.ini中的错误报告级别
5.4 性能优化建议
-
数据库优化:
bash复制
vi /etc/my.cnf.d/mariadb-server.cnf添加以下参数:
ini复制[mysqld] innodb_buffer_pool_size = 512M innodb_log_file_size = 128M max_connections = 200 query_cache_size = 64M -
Zabbix Server优化:
- 根据监控项数量调整
StartPollers等参数 - 启用Housekeeper定期清理历史数据
- 考虑使用分区表管理历史数据
- 根据监控项数量调整
-
前端优化:
- 减少仪表盘上的小部件数量
- 避免使用过于复杂的触发器表达式
- 定期清理无用的事件和告警
6. 后续扩展建议
-
监控更多主机:
- 在"Configuration > Hosts"中添加新主机
- 使用Agent自动注册功能
- 配置网络发现规则
-
配置告警通知:
- 设置邮件、短信或Webhook通知
- 配置告警媒介类型
- 定义告警触发条件和升级规则
-
使用模板:
- 导入社区提供的模板
- 创建自定义模板
- 使用LLD(低级别发现)自动发现监控项
-
数据可视化:
- 创建自定义仪表盘
- 设置图形和聚合图形
- 配置幻灯片展示重要监控数据
-
备份策略:
bash复制# 数据库备份 mysqldump -uzabbix -pZabbix@123 zabbix > zabbix_backup.sql # 配置文件备份 tar czvf /backup/zabbix_config_$(date +%Y%m%d).tar.gz /etc/zabbix
在实际使用过程中,我发现Zabbix的触发器配置尤为关键。合理的触发器阈值可以显著减少误报,建议:
- 避免使用绝对值阈值,改用百分比变化
- 考虑使用时间函数(如avg、max)平滑数据波动
- 为关键业务指标设置多级告警(警告→严重→灾难)