Zabbix 监控系统

全面梳理Zabbix架构、安装、配置、监控项、触发器、报警、模板及自动发现

Published By ShifenmiaoUpdated Tech1

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)与报警

当触发器产生事件时,动作定义后续操作:发送通知、远程命令等。

配置邮件报警的步骤:

  1. 创建媒介类型(Media Type)→ 选择 Email。
  2. 配置 SMTP 服务器参数。
  3. 为用户指定媒介(收件地址)。
  4. 创建动作:条件(例如触发器严重性≥警告),操作(发送邮件给用户群)。

4.4 模板(Templates)

模板是预定义的监控项、触发器、图表集合。官方提供大量现成模板(如 Linux、Windows、MySQL)。

自定义模板示例:

# 导入模板(XML 格式)
zabbix-cli -x template_import --xml your_template.xml

高效管理:将模板链接至主机组,批量使用。

4.5 自动发现(Discovery)

两种模式:

  • 网络自动发现:扫描 IP 范围,自动添加设备。
  • 主动式 Agent 自动注册:Agent 主动上报主机信息。

配置自动注册步骤:

  1. 在 Action 中创建“自动注册”动作。
  2. 设置条件(如主机名匹配正则)。
  3. 操作:链接指定模板,加入主机组。

五、性能优化与运维技巧

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 许可协议,转载请标明出处

Comments0 comments

No comments yet. Be the first!

Leave a comment

Optional, never published

Up to 1000 characters