首页  /  监控  /  正文

Zabbix 监控项、触发器与邮件告警

监控 2026-10-02📖 12 分钟👁 —
📊 监控 · Zabbix + Grafana第 2 / 3 页123📖 完整导航 →

一、监控配置和原理

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 的端口,是两个不同的端口。

为什么 Web 界面填 10050 而不是 10051,以及各项配置的确认

两个端口的分工:

Agent(被监控端)                    Server(监控端)

   监听 10050                          监听 10051

      ↑                                   ↑

      │                                   │

   Server 主动来问我                 Agent 主动来报

   (被动模式)                      (主动模式)

就算用的是主动模式模板(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

两边到底往哪儿填,一张表说清:

Agent 配置文件里 ServerActive 填 10051,Web 界面添加主机的 Port 填 10050

这两个都要配,两种配置是兼容的。同一个端口可以建立多个 TCP 连接,10050 和 10051 是 Zabbix 默认的主/被动监听端口,全都配上就对了。一个 TCP 连接是由四元组决定的:源IP, 源端口, 目的IP, 目的端口。

3. 把主机接进 Zabbix

接下来到 Web 界面里加主机,Monitoring → Hosts → Create host:

New host 对话框:Name 和 Host name 都填 agent-02,模板选 Linux by Zabbix agent active,接口类型 Agent、IP 10.1.4.16、端口 10050

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

Host added,agent-02 的 Availability 显示 ZBX 绿色,说明 Server 已经能连上 Agent 了

二、触发器和动作配置

具体配置项的意思要参照官方文档:

https://www.zabbix.com/documentation/current/zh/manual/config/triggers/expression

模板里已经自带了默认的触发器,比如 Linux by Zabbix agent active 这个模板就有 15 个:

模板行里的 Triggers 列,可以看到自带 15 个触发器

自带的够用就用,不够就自己加。配一个自定义触发器加动作,分两步。

1. 配触发条件

一个完整的触发器要串起四样东西:监控主机、监控项、触发条件、触发动作。

先想清楚要盯什么,比如"CPU 持续 5 分钟负载超过 80%",那就用 avg() 这个函数,取 5 分钟的平均值,结果大于 80:

Condition 对话框:Item 选 agent-02 的 CPU utilization,Function 用 avg(),Last of (T) 填 5m,Result 大于 80

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

New trigger:Name 填 cpu-5min平均负载,Severity 选 Average,Expression 是 avg(/agent-02/system.cpu.util,5m)>80

触发器的配置项看着很多,实际往往只需要填关键的那几项,其余保持默认。

2. 配触发动作

触发条件有了,还得有动作,不然触发了也没人知道。这里是按触发器名称来配动作的,也可以按严重程度配(比如任何 High 级别的都走这个动作):

New action + New condition:Type 选 Trigger,Operator 选 equals,Triggers 选 agent-02: cpu-5min平均负载

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

New action 的 Operations 页:动作是 Send message to users 和 user groups,立即执行

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

Operation details:Send to user groups 选 Zabbix administrators,Send to users 选 Admin,Send to media type 选 Email

配好之后随时可以回来改(Update)。

总结一下,关键的配置就四样:主机、监控项、触发条件、动作。既然动作里配了发邮件,那就必须有发件人——下一节说。


三、配置 Zabbix 的邮件发件人

Zabbix 发邮件要靠邮箱服务商提供的 SMTP / POP3 / IMAP 服务,再去生成一个授权码。

这三个是电子邮件系统的核心协议,区别记一下:

SMTP 负责发邮件,POP3 收完就把服务器上的删掉,IMAP 收完在服务器上保留同步

发信这块核心是 SMTP。

QQ 邮箱的授权码在"账号与安全 → 安全设置"里,下拉就能看到:

QQ 邮箱的 POP3/IMAP/SMTP 服务已开启,可以生成授权码,下面还有收取选项
⚠️ 授权码等同于邮箱密码,谁拿到都能用你的邮箱发信。
所以这里不要把真实的授权码写进笔记(我截图和文字里都打了码),
而且笔记一旦外发,记得先去 QQ 邮箱把旧的授权码作废、重新生成一个。

拿到授权码之后,第一步是在 Zabbix 里把 Email 这个媒介类型启用:

Alerts → Media types 列表,Email 那一行 Enabled

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

Media type 表单:SMTP server 填 smtp.qq.com,Email 填发件邮箱,Authentication 选 Username and password

填完的样子:

填好之后的 email 媒介类型:用户名为 QQ 邮箱地址,Password 是授权码,Message format 选 Plain text

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

Test media type

四、给用户配收件地址并测试

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

Users → 某个用户的 Media 标签页,在这里给他的告警媒介加一条 email

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

Media 表单:Type 选 email,Send to 填收件邮箱,When active 填 1-7,00:00-24:00,严重等级六个全勾上

五、模板的配置

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

Templates → Create template:

New template:填模板名,Template groups 选 Templates(不能和已有的重名)

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

模板列表里 Linux by Zabbix agent active,Items 43、Triggers 15,是自建模板的好底子

自定义监控项就是 item:

New item:Type 选 Zabbix agent,填 Key、Update interval 1m,History 存 31d、Trends 存 365d

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

主机列表里挂上模板之后的样子,每台主机的 Items、Triggers、Graphs 都跟着模板走

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

agent-02 这一行的汇总:Items 43、Triggers 16、Graphs 8、Availability 是 ZBX 绿色

说到底关键的配置只有两个:

  1. 触发器被触发时执行动作(在触发器里配监控项的条件,在动作里配具体做什么)
  2. 在主机上配监控项,作为监控指标

最后说一句,我自己没真触发过邮件,这个告警长什么样是照着视频大概看一下:

QQ 邮箱里收到的 Zabbix 告警邮件:Problem started、Problem name、Host、Severity、Operational data

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