1. 环境准备搭建Ubuntu 22.04基础系统在开始部署Zabbix之前我们需要确保Ubuntu 22.04系统处于最佳状态。我建议使用全新安装的LTS版本避免旧系统残留配置带来的兼容性问题。先运行sudo apt update sudo apt upgrade -y更新所有软件包这个步骤我每次部署新服务前都会执行实测能避免80%的依赖冲突。硬件配置方面Zabbix官方建议至少2核CPU和4GB内存。我在测试环境用1核2GB的机器跑过虽然能启动但监控10台以上主机就会出现明显卡顿。如果你要监控超过50台设备建议单独部署MySQL服务器数据库和Zabbix服务分开能显著提升性能。网络配置要特别注意防火墙规则。Ubuntu 22.04默认使用ufw记得提前开放端口sudo ufw allow 80/tcp # 如果后续改用80端口 sudo ufw allow 443/tcp # HTTPS访问 sudo ufw allow 10050/tcp # Zabbix agent默认端口 sudo ufw enable2. 安装Zabbix核心组件Zabbix官方提供了APT仓库比手动编译安装方便太多。这里有个小技巧先安装software-properties-common包这个工具集包含add-apt-repository命令后续管理第三方仓库会更方便sudo apt install -y software-properties-common wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4ubuntu22.04_all.deb sudo dpkg -i zabbix-release_6.0-4ubuntu22.04_all.deb sudo apt update安装主服务时有个常见坑点PHP版本兼容性。Ubuntu 22.04默认PHP是8.1版而Zabbix 6.0 LTS完美支持但如果你看到报错说找不到某些PHP扩展可能是没装全依赖sudo apt install -y zabbix-server-mysql zabbix-frontend-php \ zabbix-nginx-conf zabbix-sql-scripts zabbix-agent \ php8.1-fpm php8.1-mysql php8.1-gd php8.1-xml php8.1-mbstring3. 数据库配置与优化MySQL安装后第一件事是运行安全脚本这个很多教程会漏掉sudo mysql_secure_installation它会提示设置root密码、移除匿名用户等安全选项生产环境强烈建议全部启用。创建Zabbix数据库时要注意字符集选择。早期教程常用utf8但在Ubuntu 22.04上我推荐utf8mb4完全兼容且支持emoji等特殊字符mysql -uroot -p CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; CREATE USER zabbixlocalhost IDENTIFIED BY 你的密码; GRANT ALL PRIVILEGES ON zabbix.* TO zabbixlocalhost; SET GLOBAL log_bin_trust_function_creators 1; QUIT;导入初始数据时可能会遇到权限问题。我习惯先用zcat查看SQL文件内容确认无误再导入zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix导入完成后记得关闭函数创建权限mysql -uroot -p SET GLOBAL log_bin_trust_function_creators 0; QUIT;4. 服务配置与调优Zabbix服务端配置主要修改/etc/zabbix/zabbix_server.conf这几个参数需要特别关注DBHostlocalhost DBNamezabbix DBUserzabbix DBPassword你的密码 StartPollers4 # 根据CPU核心数调整 StartPollersUnreachable2 StartTrappers5 # 监控项较多时增加Nginx配置有个细节容易忽略PHP-FPM的socket路径。Ubuntu 22.04默认使用/run/php/php8.1-fpm.sock检查/etc/zabbix/nginx.conf中的配置是否一致fastcgi_pass unix:/run/php/php8.1-fpm.sock;时区设置是另一个常见问题。编辑/etc/php/8.1/fpm/php.ini和/etc/php/8.1/cli/php.ini确保时区正确date.timezone Asia/Shanghai5. 启动服务与故障排查启动顺序很重要我习惯按这个流程sudo systemctl restart php8.1-fpm sudo systemctl restart nginx sudo systemctl restart zabbix-server sudo systemctl restart zabbix-agent检查服务状态时别只看systemctl的输出我还会用这些命令确认ss -tulnp | grep -E 8080|10051 # 检查端口监听 tail -f /var/log/zabbix/zabbix_server.log # 实时日志 php -m | grep -E mysql|gd|xml # 验证PHP模块如果遇到403 Forbidden错误大概率是SELinux或文件权限问题。Ubuntu默认不启用SELinux所以重点检查sudo chown -R www-data:www-data /usr/share/zabbix/ sudo find /usr/share/zabbix/ -type d -exec chmod 755 {} \; sudo find /usr/share/zabbix/ -type f -exec chmod 644 {} \;6. 前端初始化与安全加固首次访问http://服务器IP:8080会进入安装向导。在Configure DB connection步骤有个隐藏技巧测试连接成功后点击Next前先复制页面上的预生成配置保存为/usr/share/zabbix/conf/zabbix.conf.php这样万一安装中断可以手动恢复。管理员密码不要用默认的admin/zabbix我在生产环境会这样生成复杂密码tr -dc A-Za-z0-9!#$%^* /dev/urandom | head -c 16安装完成后立即做两件事删除/usr/share/zabbix/install目录防止重装攻击修改Nginx配置改用HTTPS并隐藏版本信息server_tokens off; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem;7. 监控本机与常用配置Zabbix自带的本机监控模板Linux by Zabbix agent已经够用但我会额外添加这些监控项磁盘inode使用率预防100%导致的诡异问题僵尸进程数量SSH登录失败次数安全监控添加自定义监控项的例子名称Root分区inode使用率 键值vfs.fs.inode[/,pused] 更新间隔5m 应用集Filesystems对于需要频繁采集的数据比如MySQL查询次数可以启用Zabbix的主动模式减轻服务端压力ServerActive127.0.0.1 HostnameZabbix server RefreshActiveChecks1208. 邮件报警配置实战邮件报警是Zabbix最常用的通知方式。我推荐使用SMTP而不是sendmail配置更灵活。修改/etc/zabbix/zabbix_server.confAlertScriptsPath/usr/lib/zabbix/alertscripts创建邮件脚本/usr/lib/zabbix/alertscripts/send_email.sh#!/bin/bash echo $3 | mailx -s $2 -r zabbixyourdomain.com $1记得给执行权限chmod x /usr/lib/zabbix/alertscripts/send_email.sh在Web界面配置报警媒介管理 → 报警媒介类型 → 创建媒体类型名称Email via SMTP类型脚本脚本名称send_email.sh脚本参数{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}最后创建报警动作设置触发条件和操作名称所有严重性问题通知 条件触发器严重性 ≥ 一般 操作 发送给运维团队 仅送到Email via SMTP 消息内容自定义模板包含主机名、触发器等关键信息