Zabbix 监控系统
全面梳理Zabbix架构、安装、配置、监控项、触发器、报警、模板及自动发现
Zabbix 监控系统笔记
一、Zabbix 概述
Zabbix 是一款企业级开源分布式监控解决方案,支持网络设备、服务器、云资源等多种对象的实时监控。其核心特性包括:
- 数据采集:支持 Agent、SNMP、JMX、IPMI、HTTP 等多种方式。
- 告警与通知:灵活的条件触发机制,支持邮件、短信、微信等渠道。
- 可视化:提供丰富的图表、仪表盘和报表。
- 扩展性:模板化配置,自动发现简化维护。
二、核心架构与组件
2.1 逻辑架构
2.2 关键组件
- Zabbix Server:核心进程,负责数据收集、告警评估、事件处理。
- Zabbix Proxy:分布式场景下的中间层,降低 Server 负载。
- Zabbix Agent:部署在被监控主机上,负责采集本地数据。
- Zabbix Database:存储配置与历史数据(MySQL/PostgreSQL/Oracle)。
- Web UI:基于 PHP 的管理界面。
三、快速安装与配置
3.1 环境准备(Ubuntu 22.04 示例)
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装 MySQL
sudo apt install mysql-server -y
sudo mysql_secure_installation
# 创建 Zabbix 数据库
sudo mysql -uroot -p -e "CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;"
sudo mysql -uroot -p -e "GRANT ALL ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'password';"
3.2 安装 Zabbix Server 与 Agent
# 添加官方仓库
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu22.04_all.deb
sudo apt update
# 安装 Server、Agent、Web 前端
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent2 -y
3.3 初始数据库导入
# 解压并导入 schema
sudo zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | sudo mysql -uzabbix -p zabbix
3.4 配置并启动服务
编辑 /etc/zabbix/zabbix_server.conf:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password
启动服务:
sudo systemctl restart zabbix-server zabbix-agent2 apache2
sudo systemctl enable zabbix-server zabbix-agent2
访问 http://server_ip/zabbix 完成 Web 安装向导。
四、核心概念与实战
4.1 监控项(Items)
监控项是 Zabbix 中最基本的数据采集单元。每个监控项定义了一个具体的指标(如 CPU 使用率、磁盘 IO)及采集方式。
示例:通过 Agent 监控 CPU 空闲率
- 键值:
system.cpu.util[,idle] - 类型:Zabbix Agent
- 更新间隔:60s
4.2 触发器(Triggers)
触发器根据监控项表达式判断异常状态,例如 CPU 空闲率低于 10% 持续 5 分钟。
表达式示例:
{host:system.cpu.util[,idle].avg(5m)} < 10
触发器的严重性级别:未分类、信息、警告、一般严重、严重、灾难。
4.3 动作(Actions)与报警
当触发器产生事件时,动作定义后续操作:发送通知、远程命令等。
配置邮件报警的步骤:
- 创建媒介类型(Media Type)→ 选择 Email。
- 配置 SMTP 服务器参数。
- 为用户指定媒介(收件地址)。
- 创建动作:条件(例如触发器严重性≥警告),操作(发送邮件给用户群)。
4.4 模板(Templates)
模板是预定义的监控项、触发器、图表集合。官方提供大量现成模板(如 Linux、Windows、MySQL)。
自定义模板示例:
# 导入模板(XML 格式)
zabbix-cli -x template_import --xml your_template.xml
高效管理:将模板链接至主机组,批量使用。
4.5 自动发现(Discovery)
两种模式:
- 网络自动发现:扫描 IP 范围,自动添加设备。
- 主动式 Agent 自动注册:Agent 主动上报主机信息。
配置自动注册步骤:
- 在 Action 中创建“自动注册”动作。
- 设置条件(如主机名匹配正则)。
- 操作:链接指定模板,加入主机组。
五、性能优化与运维技巧
5.1 数据库优化
- 使用分区表:Zabbix 支持分区(Partitioning),提高历史数据清理效率。
- 调整缓存参数:
CacheSize、HistoryCacheSize等。
5.2 代理(Proxy)使用场景
当你需要监控跨越多个数据中心或防火墙隔离的设备时,部署 Proxy:
# 安装 Proxy
sudo apt install zabbix-proxy-mysql
# 配置指向 Server
ProxyMode=0
Server=<Server IP>
Hostname=proxy01
5.3 常见问题排查
- Server 日志:
/var/log/zabbix/zabbix_server.log - Agent 日志:
/var/log/zabbix/zabbix_agent2.log - 数据未更新:检查 Agent 运行状态、防火墙端口(10050/10051)、selinux。
六、API 与自动化
Zabbix 提供完整的 JSON-RPC API,可用于批量管理。
使用 curl 获取 token 示例:
curl -s -X POST http://localhost/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"username": "Admin",
"password": "zabbix"
},
"id": 1
}'
通过 API 可以自动创建主机、更新模板、获取告警信息,适合 DevOps 集成。
七、总结与复习要点
| 模块 | 关键知识点 |
|---|---|
| 部署 | 数据库字符集、Server/Proxy/Agent 的关系 |
| 对象 | 主机、主机组、模板、监控项、触发器、动作 |
| 告警 | 媒介类型、条件、操作、报告 |
| 数据采集 | Agent、SNMP、JMX、HTTP 监控 |
| 高可用 | 原生 HA(7.0+)、Proxy 负载均衡 |
复训练习:搭建一个包含 3 台主机的监控环境,使用模板监控 MySQL,并配置邮件告警。
注意:Zabbix 7.0 版本引入了许多新特性(如历史数据降采样、全局告警抑制),请参考官方文档保持更新。
本笔记基于 Zabbix 7.0 LTS,适合快速复习与查阅。
本文采用 CC BY-NC-SA 4.0 许可协议,转载请标明出处
