一、监控配置和原理
1. 从一条报错说起
Server 起来之后先看日志。我碰到的是这个:
# zabbix-server日志报错/etc/zabbix/zabbix_server.conf
# 说明DBPassword没有配置成功
1544614:20260926:201809.648 [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: NO)
# 修改配置文件即可
mysql -uzabbix -p'<你的密码>' -h localhost zabbix -e "select 1;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+---+
| 1 |
+---+
| 1 |
+---+
root@VM-0-12-ubuntu:~# systemctl restart zabbix-server
root@VM-0-12-ubuntu:~# tail -n 20 /var/log/zabbix/zabbix_server.log
3221082:20260926:202104.046 enabling Zabbix agent checks on host "Zabbix server": interface became available
using password: NO 就是在告诉你配置文件里的 DBPassword 没生效。手动用 zabbix 用户连一下确认密码对,改完 zabbix_server.conf 重启,日志里出现 enabling Zabbix agent checks on host "Zabbix server" 就说明通了。
2. 主动模式和被动模式
这里我卡过一次,所以单独拿出来说:Web 界面添加主机时填的端口,和 agent 配置文件里 ServerActive 的端口,是两个不同的端口。

两个端口的分工:
Agent(被监控端) Server(监控端)
监听 10050 监听 10051
↑ ↑
│ │
Server 主动来问我 Agent 主动来报
(被动模式) (主动模式)
- 10050:Agent 监听的端口。Web 界面添加主机时填的是"怎么去连这台被监控机上的 Agent",所以必须填 10050
- 10051:Server 接收 Agent 主动上报数据的端口。agent 配置文件里
ServerActive=10.1.0.12:10051用的就是这个
就算用的是主动模式模板(Linux by Zabbix agent active),Server 也会定期去连 Agent 的 10050 做可用性检查——就是那个 ZBX 图标变绿的逻辑。
所以被动模式这边也要放行:
ufw allow from 10.1.0.0/16 to any port 10050 proto tcp
ufw status
两边到底往哪儿填,一张表说清:

这两个都要配,两种配置是兼容的。同一个端口可以建立多个 TCP 连接,10050 和 10051 是 Zabbix 默认的主/被动监听端口,全都配上就对了。一个 TCP 连接是由四元组决定的:源IP, 源端口, 目的IP, 目的端口。
3. 把主机接进 Zabbix
接下来到 Web 界面里加主机,Monitoring → Hosts → Create host:

等几分钟,主机列表里 ZBX 那一列变绿就成了:

二、触发器和动作配置
具体配置项的意思要参照官方文档:
https://www.zabbix.com/documentation/current/zh/manual/config/triggers/expression
模板里已经自带了默认的触发器,比如 Linux by Zabbix agent active 这个模板就有 15 个:

自带的够用就用,不够就自己加。配一个自定义触发器加动作,分两步。
1. 配触发条件
一个完整的触发器要串起四样东西:监控主机、监控项、触发条件、触发动作。
先想清楚要盯什么,比如"CPU 持续 5 分钟负载超过 80%",那就用 avg() 这个函数,取 5 分钟的平均值,结果大于 80:

点 Insert 之后回到 New trigger 页面,触发器名称和严重等级也在这里定:

触发器的配置项看着很多,实际往往只需要填关键的那几项,其余保持默认。
2. 配触发动作
触发条件有了,还得有动作,不然触发了也没人知道。这里是按触发器名称来配动作的,也可以按严重程度配(比如任何 High 级别的都走这个动作):

然后切到 Operations 页,配"触发之后干什么":

点进 Details 把发给谁、用什么媒介定下来:

配好之后随时可以回来改(Update)。
总结一下,关键的配置就四样:主机、监控项、触发条件、动作。既然动作里配了发邮件,那就必须有发件人——下一节说。
三、配置 Zabbix 的邮件发件人
Zabbix 发邮件要靠邮箱服务商提供的 SMTP / POP3 / IMAP 服务,再去生成一个授权码。
这三个是电子邮件系统的核心协议,区别记一下:

发信这块核心是 SMTP。
QQ 邮箱的授权码在"账号与安全 → 安全设置"里,下拉就能看到:

⚠️ 授权码等同于邮箱密码,谁拿到都能用你的邮箱发信。
所以这里不要把真实的授权码写进笔记(我截图和文字里都打了码),
而且笔记一旦外发,记得先去 QQ 邮箱把旧的授权码作废、重新生成一个。
拿到授权码之后,第一步是在 Zabbix 里把 Email 这个媒介类型启用:

第二步点进 email 配置具体项,认证方式就是邮箱名 + 授权码:

填完的样子:

左下角有个 Test,可以直接发一封试试:

四、给用户配收件地址并测试
发件人是开了 SMTP 的那个邮箱,而触发动作里配的是"给指定用户发邮件",所以还得告诉 Zabbix 这个用户收件的地址。在 Users 里点开对应用户的 Media 标签页:

收件人填自己就行,SMTP 可以给自己发:

五、模板的配置
假设自己辛辛苦苦配好了一套东西,直接存成模板,就能整体迁移到其他主机上,省掉重复劳动。
Templates → Create template:

建好之后以主动模式的模板作参考,自己往里面二次配置监控项等内容:

自定义监控项就是 item:

模板配好之后直接应用到主机上:

和上面那张对比一下,就是挂模板前后的差别:

说到底关键的配置只有两个:
- 触发器被触发时执行动作(在触发器里配监控项的条件,在动作里配具体做什么)
- 在主机上配监控项,作为监控指标
最后说一句,我自己没真触发过邮件,这个告警长什么样是照着视频大概看一下:

邮件里带了触发时间、触发器名称、触发的主机名称、严重等级这些信息,够定位问题了。