Zabbix监控系统部署指南(手把手教学)

张开发
2026/4/17 9:13:56 15 分钟阅读

分享文章

Zabbix监控系统部署指南(手把手教学)
1. 为什么选择Zabbix监控系统第一次接触Zabbix是在五年前的一个运维项目中当时我们需要监控200多台服务器和网络设备。试过几款商业监控软件后发现要么太贵要么功能不够灵活。直到同事推荐了Zabbix这个开源监控神器彻底改变了我们的工作方式。Zabbix最吸引我的地方在于它的全栈监控能力。从服务器CPU温度到数据库查询性能从网络流量到网站响应时间它都能完美覆盖。记得有次凌晨三点Zabbix的告警邮件把我叫醒提示某台数据库服务器的磁盘空间即将耗尽。及时处理避免了数据丢失事故这种救命体验让我对它好感倍增。相比其他监控工具Zabbix有几个杀手级特性自动发现功能新服务器上线后能自动纳入监控范围灵活的告警规则可以设置多级阈值和告警升级机制强大的可视化支持自定义仪表盘和拓扑图低资源占用在老旧服务器上也能流畅运行2. 部署前的环境准备2.1 硬件配置建议根据我这些年部署的经验Zabbix对硬件要求其实很亲民。对于监控100台以下设备的环境CPU4核以上建议Xeon E3级别内存8GB起步监控项越多需要越大存储100GB SSD历史数据保留30天曾经在一个客户那里见过把Zabbix装在2核4G的云主机上监控500设备也没问题。关键是要做好数据归档策略定期清理过期监控数据。2.2 操作系统选择Zabbix官方支持多种Linux发行版我个人最推荐CentOS/RHEL 7/8。它们的长期支持周期和稳定内核特别适合生产环境。Ubuntu也可以但要注意某些依赖库的版本差异。重要提示千万别用Windows跑Zabbix Server早年我图方便试过一次性能问题和各种兼容性坑让人崩溃。后来老老实实迁移到CentOS系统负载直接降了60%。2.3 基础环境配置先处理几个关键配置点这些都是血泪教训总结出来的# 关闭SELinux避免权限问题 setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config # 关闭防火墙或放行端口 systemctl stop firewalld systemctl disable firewalld # 时间同步必须配置 yum install -y ntpdate ntpdate ntp.aliyun.com建议把这些操作写成脚本我在不同环境部署时都会先跑一遍这个准备体操。特别是时间同步有次因为时间不同步导致告警时间戳错乱排查了整整一天。3. 组件安装与配置3.1 数据库部署Zabbix支持MySQL/MariaDB、PostgreSQL等数据库。小规模环境用MariaDB就够了配置更简单yum install -y mariadb-server mariadb systemctl start mariadb systemctl enable mariadb # 安全初始化 mysql_secure_installation创建Zabbix专用数据库时有个细节很多人会忽略CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin; GRANT ALL ON zabbix.* TO zabbixlocalhost IDENTIFIED BY StrongPassword123; FLUSH PRIVILEGES;注意这里要用utf8_bin排序规则否则后期可能出现监控项名称大小写问题。密码建议包含大小写字母、数字和特殊字符我见过太多因为弱密码导致的安全事件。3.2 Web服务环境推荐用NginxPHP的组合比Apache更节省资源。安装PHP 7.2时要特别注意扩展包yum install -y php72w php72w-fpm php72w-mysqlnd php72w-gd php72w-bcmath php72w-mbstring php72w-xml检查安装结果时我习惯用这个命令php -m | grep -E gd|mysql|bcmath|mbstring|xml曾经因为漏装bcmath扩展导致Web安装向导卡住两小时。现在每次部署都会先确认这五个关键扩展是否就位。3.3 Zabbix服务端安装配置清华大学的镜像源能大幅提升下载速度rpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm sed -i s#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#g /etc/yum.repos.d/zabbix.repo安装核心组件yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent2导入初始数据库结构这个步骤很关键zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix4. 服务配置与优化4.1 数据库连接配置编辑/etc/zabbix/zabbix_server.conf时重点关注这些参数DBHostlocalhost DBNamezabbix DBUserzabbix DBPasswordStrongPassword123 StartPollers20 StartPollersUnreachable5 StartTrappers10根据监控设备数量调整工作进程数100台以下StartPollers20100-500台StartPollers50500台以上考虑分布式部署4.2 PHP参数调优/etc/php.ini需要调整这些关键值max_execution_time 300 memory_limit 256M post_max_size 32M upload_max_filesize 16M date.timezone Asia/Shanghai时区设置经常被忽略导致图表显示时间错乱。建议用php -i | grep timezone确认是否生效。4.3 Nginx虚拟主机配置这是我的常用配置模板存为/etc/nginx/conf.d/zabbix.confserver { listen 80; server_name zabbix.yourdomain.com; root /usr/share/zabbix; index index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }配置完成后一定要测试nginx -t systemctl reload nginx5. 前端安装与初始化5.1 Web安装向导访问http://服务器IP/zabbix会进入安装向导。遇到最多的问题就是权限配置chown -R nginx:nginx /usr/share/zabbix/ find /usr/share/zabbix/ -type d -exec chmod 755 {} \; find /usr/share/zabbix/ -type f -exec chmod 644 {} \;5.2 初始登录配置默认账号用户名Admin密码zabbix重要安全提示首次登录后立即修改Admin密码我见过太多使用默认密码被黑的案例。建议在管理-用户中创建个人账号禁用或重命名Admin账户。5.3 中文界面设置在User settings-Language选择中文后可能会发现部分翻译缺失。这是因为没有安装中文语言包yum install -y zabbix-web-chinese systemctl restart zabbix-server6. 监控实践技巧6.1 第一个主机监控添加Linux主机监控时推荐使用Zabbix Agent 2yum install -y zabbix-agent2 systemctl enable --now zabbix-agent2在Zabbix前端配置主机时注意这些关键项主机名称建议用FQDN格式可见名称显示用的别名群组按业务或部门分类模板选择Linux by Zabbix agent 26.2 告警配置心得邮件告警配置要注意测试在管理-报警媒介类型配置SMTP配置-动作创建触发条件用测试功能验证推荐添加微信/钉钉告警配置方法# 安装告警脚本 wget https://raw.githubusercontent.com/X-Mars/Zabbix-Alert-WeChat/master/wechat_alert.py -P /usr/lib/zabbix/alertscripts/ chmod x /usr/lib/zabbix/alertscripts/wechat_alert.py6.3 仪表盘定制我最常用的几个可视化组件问题汇总列表主机状态地图自定义图形集最新数据表格拖拽式编辑虽然方便但复杂布局建议先用铅笔在纸上画草图。有次我给客户做了个九宫格仪表盘各种组件错位调整了整整一下午。7. 常见问题排查7.1 服务启动失败查看日志是最快定位问题的方法journalctl -u zabbix-server -f tail -f /var/log/zabbix/zabbix_server.log常见错误及解决方法cannot connect to database检查DBPassword和防火墙too many connections增加MySQL的max_connectionsnot enough memory调整StartPollers参数7.2 监控数据不更新按这个顺序排查检查zabbix_agent2服务状态测试telnet agent端口10050查看/var/log/zabbix_agent2.log在前端检查监控项配置7.3 性能优化技巧数据库优化是重点# 定期清理历史数据 ALTER TABLE history_uint ENGINEInnoDB; OPTIMIZE TABLE history_str;配置housekeeper自动维护历史数据保留30天趋势数据保留365天事件数据保留180天在大型环境中这些优化可能带来10倍以上的性能提升。有次优化后客户服务器的负载从5.0降到了0.3。

更多文章