Zabbix 5.0 在 CentOS 7 上走 yum + SCL 这套装法。坑不在安装本身,在三处:默认 php 太老必须用 Software Collections、Nginx 与 PHP-FPM 的监听用户要对上、告警脚本要放在 AlertScriptPath 指向的目录里。下面按安装、初始化、告警三段记。
一、装源、装包、建库
先加数据源:
[root@localhost ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
国内建议换阿里云镜像:
[root@localhost ~]# sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
[root@localhost ~]# yum clean all
数据库用 MySQL 5.7.30,rpm 方式装,涉及 mysql-community-server、client、common、libs、devel、libs-compat 几个包,历史版本在官方归档站 https://downloads.mysql.com/archives/community/:
[root@localhost ~]# yum install mysql-community-*
[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# systemctl enable mysqld
#查看默认密码
[root@localhost ~]# cat /var/log/mysqld.log |grep password
[root@localhost ~]# mysql -uroot -p
嫌密码复杂度策略麻烦可以先放开,再改 root 密码:
mysql> set global validate_password_policy=0;
mysql> set global validate_password_number_count=0;
mysql> set global validate_password_special_char_count=0;
# 修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Zabbix@123';
然后装服务端和 agent:
[root@localhost ~]# yum install zabbix-server-mysql zabbix-agent

前端依赖 php,yum 自带的 5.4 跑不起来,所以先装 SCL,再启用 zabbix-frontend 子源:
[root@localhost ~]# yum install centos-release-scl
[root@localhost ~]# vim /etc/yum.repos.d/zabbix.repo
#最后通过 wq 保存

[root@localhost ~]# yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl
用 PostgreSQL 的话前端包换成 zabbix-web-pgsql-scl。
建库、建账号、导初始 schema 三步不能漏,导表花十几秒很正常:
[[CODE:0087:10]]
[[CODE:0087:11]]
最后在 /etc/zabbix/zabbix_server.conf 里填上数据库密码,服务端起不来八成是这一步:
[[CODE:0087:12]]

二、前端:PHP 与 Nginx 的三处配置
第一处是 PHP-FPM 的监听权限和时区,在 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf:
[[CODE:0087:13]]


listen.acl_users 必须加上 nginx,否则 Nginx 连不上这个 socket,页面直接 502。
第二处是 zabbix 的站点文件,取消 listen 端口和 server_name 的注释:
[[CODE:0087:14]]

第三处是主配置,不改访问到的还是 SCL 的默认页:
[[CODE:0087:15]]

四个进程一起拉起并设开机启动:
[[CODE:0087:16]]
端口放行:10051 是 server,10050 是 agent,80 是页面。
[[CODE:0087:17]]
三、初始化向导与首次登录
浏览器访问 http://server_ip,环境检查全绿、填数据库连接、确认、写入。检查报红基本都是时区没设或 php 参数不满足,改完重来即可。






默认账号 Admin / zabbix 登录后第一件事是改密码、把语言切成中文。


四、用户、告警媒介与两条告警链路
先建群组再建用户,权限挂在群组上,人往组里塞,后面接手的人不用逐个账号翻权限。



添加用户填完基本信息,再挂报警媒介——媒介决定「这个人怎么收告警」,别到配动作时才想起来没配。







邮件告警
配发件邮箱(第三方邮箱要用授权码而不是登录密码),先在媒介那页发一封测试邮件确认通道通,再建动作和操作。







动作分「告警操作」和「恢复操作」两种,主题和消息体用宏拼:
告警主题:
[[CODE:0087:18]]
告警消息:
[[CODE:0087:19]]

恢复主题:
[[CODE:0087:20]]
恢复消息比告警消息多恢复时间和持续时间两行:
[[CODE:0087:21]]

企业微信告警
先加一个自定义媒介类型,脚本参数按顺序传消息内容。


脚本必须放在 server 配置的 AlertScriptPath(默认 /usr/lib/zabbix/alertscripts/)下并加可执行权限。群机器人先在企微群里建好,webhook 地址填进 api_url:
[[CODE:0087:22]]
注意这是 Python 2 写法(print 不带括号),节点上只有 Python 3 的话要改首行解释器路径并把 print 换成函数调用,否则脚本执行报错、页面上只看到「无返回」。
命令行和页面各测一次,群里收到消息说明通道通了,再挂媒介、建动作和操作。









企微的告警与恢复操作主题、消息体跟邮件那两套完全一样,直接复用。





邮件链路的动作和操作同理。两个渠道并行:企微做即时提醒,邮件留痕。









五、踩坑清单
- 页面 502:先看
listen.acl_users有没有加 nginx,再看 socket 属主。 - server 起不来:跟
/var/log/zabbix/zabbix_server.log,密码错、库不存在、时区没配都会卡在这。 - 主机全是 unavailable:agent 的
Server指向写错,或 10050/10051 被防火墙挡了。 - 告警不发:先翻「报警 → 动作」的执行历史,八成是动作没指定接收人,或主机组没挂媒介。
















暂无评论内容