Zabbix 5.0 单机部署与邮件、企业微信告警配置

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
zabbix1

前端依赖 php,yum 自带的 5.4 跑不起来,所以先装 SCL,再启用 zabbix-frontend 子源:

[root@localhost ~]# yum install centos-release-scl
[root@localhost ~]# vim  /etc/yum.repos.d/zabbix.repo
#最后通过 wq 保存
zabbix2
[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]]

zabbix4

二、前端:PHP 与 Nginx 的三处配置

第一处是 PHP-FPM 的监听权限和时区,在 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf:

[[CODE:0087:13]]

zabbix5
zabbix6

listen.acl_users 必须加上 nginx,否则 Nginx 连不上这个 socket,页面直接 502。

第二处是 zabbix 的站点文件,取消 listen 端口和 server_name 的注释:

[[CODE:0087:14]]

zabbix7

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

[[CODE:0087:15]]

zabbix8

四个进程一起拉起并设开机启动:

[[CODE:0087:16]]

端口放行:10051 是 server,10050 是 agent,80 是页面。

[[CODE:0087:17]]

三、初始化向导与首次登录

浏览器访问 http://server_ip,环境检查全绿、填数据库连接、确认、写入。检查报红基本都是时区没设或 php 参数不满足,改完重来即可。

zabbix9
zabbix10
zabbix11
zabbix12
zabbix13
zabbix14

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

zabbix15
zabbix16

四、用户、告警媒介与两条告警链路

先建群组再建用户,权限挂在群组上,人往组里塞,后面接手的人不用逐个账号翻权限。

zabbix17
zabbix18
zabbix19

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

zabbix20
zabbix21
zabbix22
zabbix23
zabbix24
zabbix25
zabbix26

邮件告警

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

zabbix27
zabbix28
zabbix29
zabbix30
zabbix31
zabbix32
zabbix33

动作分「告警操作」和「恢复操作」两种,主题和消息体用宏拼:

告警主题:

[[CODE:0087:18]]

告警消息:

[[CODE:0087:19]]

zabbix34

恢复主题:

[[CODE:0087:20]]

恢复消息比告警消息多恢复时间和持续时间两行:

[[CODE:0087:21]]

zabbix35

企业微信告警

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

zabbix36
zabbix37

脚本必须放在 server 配置的 AlertScriptPath(默认 /usr/lib/zabbix/alertscripts/)下并加可执行权限。群机器人先在企微群里建好,webhook 地址填进 api_url:

[[CODE:0087:22]]

注意这是 Python 2 写法(print 不带括号),节点上只有 Python 3 的话要改首行解释器路径并把 print 换成函数调用,否则脚本执行报错、页面上只看到「无返回」。

命令行和页面各测一次,群里收到消息说明通道通了,再挂媒介、建动作和操作。

zabbix38
zabbix39
zabbix40
zabbix41
zabbix42
zabbix43
zabbix44
zabbix45
zabbix46

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

zabbix47
zabbix48
zabbix49
zabbix50
zabbix51

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

zabbix52
zabbix53
zabbix54
zabbix55
zabbix56
zabbix57
zabbix58
zabbix59
zabbix60

五、踩坑清单

  • 页面 502:先看 listen.acl_users 有没有加 nginx,再看 socket 属主。
  • server 起不来:跟 /var/log/zabbix/zabbix_server.log,密码错、库不存在、时区没配都会卡在这。
  • 主机全是 unavailable:agent 的 Server 指向写错,或 10050/10051 被防火墙挡了。
  • 告警不发:先翻「报警 → 动作」的执行历史,八成是动作没指定接收人,或主机组没挂媒介。
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容