Skip to main content
Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Zabbix 基础教程

1. Zabbix 是什么?

Zabbix 是一个 开源企业级监控平台,支持对服务器、网络设备、应用、容器、数据库等进行监控,支持主动与被动收集、自动发现、告警、可视化、联动动作。

适用范围:

  • 企业监控系统
  • 主机、应用、网络设备监控
  • 业务可用性监控
  • 复杂场景自动发现(自动创建主机/监控项)

2. Zabbix 核心架构

+----------+       +---------------+
| Agent    | <---> | Zabbix Server |
+----------+       +-------+-------+
                          |
                   +------+------+
                   |  Database   |
                   +-------------+
                          |
                   +------+------+
                   |   Frontend  |
                   +-------------+

组件说明:

  • Zabbix Server:核心,收集、分析、存储数据。
  • Zabbix Agent / Agent2:安装在被监控主机上。
  • Zabbix Proxy:中间节点,用于分布式、多机房环境。
  • Zabbix Frontend:前端 Web UI。
  • Database:MySQL / PostgreSQL(推荐),存储所有指标数据。

3. 监控类型

3.1 主机监控

  • CPU、内存、磁盘、网络
  • 磁盘IO
  • 进程数
  • 系统负载
  • 系统日志

3.2 应用监控

  • Nginx / Apache / MySQL / Redis / PostgreSQL / Kafka 等
  • 支持 ODBC、HTTP、SNMP、JMX

3.3 网络监控

  • SNMP(交换机、路由器)
  • ICMP Ping
  • TCP 端口可用性

3.4 主动轮询

  • HTTP、TCP、UDP 通信检查

3.5 自动发现

  • LLD(Low Level Discovery)
  • 自动发现磁盘、网卡、数据库表、容器等
  • 自动添加主机、监控项

4. 核心概念:Host、Item、Trigger、Action、Media

名称 作用
Host 被监控主机(Linux/Windows/设备)
Item 监控项(CPU load、free memory、net.if.in)
Trigger 告警阈值(内存 <20%、磁盘 >80%)
Action 告警动作(发邮件、微信、钉钉)
Event 存在异常就生成事件
Media 告警方式,如邮件、WebHook、企业微信

5. 模板体系

模板包括:

  • 监控项(Item)
  • 触发器(Trigger)
  • 图形(Graph)
  • 自动发现规则(LLD)
  • 预处理规则(Preprocessing)

官方模板(推荐):

  • Template OS Linux
  • Template App MySQL
  • Template App Zabbix Agent
  • Template Net Cisco SNMP

模板绑定到主机后自动创建监控项。

6. 安装部署(快速版)

6.1 推荐:PostgreSQL + Nginx + PHP + Zabbix Server

示例(Ubuntu):

apt install postgresql nginx php php-fpm php-pgsql

apt install zabbix-server-pgsql zabbix-frontend-php \
            zabbix-agent2 zabbix-sql-scripts

zcat /usr/share/zabbix-sql-scripts/postgresql/create.sql.gz \
  | sudo -u postgres psql zabbix

systemctl start zabbix-server zabbix-agent2 nginx php-fpm
systemctl enable zabbix-server zabbix-agent2

7. Zabbix Agent vs Agent2(推荐使用 Agent2)

比较项 Agent Agent2(推荐)
性能 普通 更高(Go 实现)
插件 不支持 支持多插件(MySQL、Redis)
指标 普通 更强
扩展性

8. 高级监控功能

8.1 媒体通知(邮件/微信/钉钉/飞书)

  • 企业微信 WebHook
  • 钉钉机器人
  • 飞书机器人
  • Telegram
  • 邮件 SMTP

8.2 Web 监控

  • 模拟登录
  • HTTP 状态码检查
  • 页面内容检查

8.3 主动+被动混合监控

  • 被动监控:Server 轮询 Agent
  • 主动监控:Agent 主动发送数据

8.4 Zabbix Script(SSH、Telnet、跳板机)

可通过:

  • SSH
  • Telnet

执行远程命令并解析结果。

9. Proxy 分布式架构

适用于:

  • 多机房 / 多区域
  • 网络隔离
  • 集中管理

Proxy 会:

  • 收集数据
  • 缓存
  • 批量上传到 Server
  • 降低 Server 压力

非常适合 VM 数量大的环境。

10. Zabbix 性能优化

10.1 Database 性能至关重要

  • 挂载 SSD
  • 调大 PostgreSQL shared_buffers(推荐 25% 内存)
  • 调整 autovacuum 参数
  • 分区表(如果历史数据量大)

10.2 Housekeeper 自动清理

建议关闭自动清理:

HousekeepingFrequency=0

改为手动分区表维护。

10.3 使用 Proxy 分担负载

避免所有 Agent 都打到 Server。

10.4 压缩历史数据

  • PostgreSQL:使用 TimescaleDB
  • MySQL:使用 InnoDB COMPRESS

🟦 11. 故障排查(最常见)

11.1 Agent 未上线

排查:

zabbix_agent2 -t system.cpu.load
telnet host 10050

11.2 无法连接数据库

检查:

psql -U zabbix

查看 Zabbix server 日志 /var/log/zabbix/zabbix_server.log

11.3 触发器频繁波动

原因:

  • 阈值设置过低
  • 数据变化太快
  • 没有使用 hysteresis(迟滞)

解决:

  • 设置 hysteresis
  • 使用移动平均

12. Zabbix 最佳实践(生产级)

12.1 强烈建议使用官方模板

避免自己写复杂 Item。

12.2 数据库存储策略

  • 保留 30 天历史
  • 使用分区表或 TimescaleDB

12.3 使用 Proxy

  • 大规模环境必须用 Proxy

12.4 自定义监控用 UserParameter 或 Agent2 Plugin

不建议用外部脚本太多。

12.5 告警使用 WebHook

比邮件可靠得多。

12.6 主机使用自动发现(LLD)

例如:

  • 自动发现网卡
  • 自动发现挂载盘
  • 自动发现容器

13. 企业级部署架构推荐(万级监控)

+------------------------+
|        Frontend        |
+-----------+------------+
            |
+-----------v------------+
|   Zabbix Server 集群    |
|  (Active-Passive HA)   |
+-----------+------------+
            |
    +-------+--------+
    |                |
+---v---+        +---v---+
|Proxy1 |        |Proxy2 |
+---+---+        +---+---+
    |                |
+---v---+        +---v---+
| Agents|        | Agents|
+-------+        +-------+