Zabbix监控系统实战指南 (2026年03月27日) Zabbix简介 Zabbix是一个企业级开源分布式监控解决方案,支持监控网络参数、服务器健康状况、应用程序状态等。它采用C/S架构,提供强大的数据收集、灵活的报警机制和丰富的可视化功能。 架构组件 Zabbix Server Zabbix Server是核心组件,负责接收Agent报告数据、计算触发器、发送报警。它使用C语言开发,性能优异。 Zabbix Agent Zabbix Agent部署在被监控主机上,主动收集CPU、内存、磁盘、网络等指标,并报告给Server。 Zabbix Proxy Zabbix Proxy是可选组件,用于分布式监控场景,替Server收集数据并转发,减轻Server负载。
Zabbix是一个企业级开源分布式监控解决方案,支持监控网络参数、服务器健康状况、应用程序状态等。它采用C/S架构,提供强大的数据收集、灵活的报警机制和丰富的可视化功能。
Zabbix Server是核心组件,负责接收Agent报告数据、计算触发器、发送报警。它使用C语言开发,性能优异。
Zabbix Agent部署在被监控主机上,主动收集CPU、内存、磁盘、网络等指标,并报告给Server。
Zabbix Proxy是可选组件,用于分布式监控场景,替Server收集数据并转发,减轻Server负载。
Zabbix使用数据库存储配置信息和历史数据,支持MySQL、PostgreSQL、Oracle等。
# 安装Zabbix Repository wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb apt update # 安装Zabbix Server、Web前端、Agent apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent # 创建数据库 mysql -uroot -p mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin; mysql> create user zabbix@localhost identified by 'password'; mysql> grant all privileges on zabbix.* to zabbix@localhost; mysql> quit; # 导入初始Schema zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix # 配置数据库密码 vi /etc/zabbix/zabbix_server.conf DBPassword=password # 启动服务 systemctl restart zabbix-server zabbix-agent apache2 systemctl enable zabbix-server zabbix-agent apache2
# 安装Agent apt install zabbix-agent # 配置Agent vi /etc/zabbix/zabbix_agentd.conf Server=192.168.1.100 # Zabbix Server IP ServerActive=192.168.1.100:10051 Hostname=web-server-01 # 启动Agent systemctl start zabbix-agent systemctl enable zabbix-agent
# 监控CPU负载 system.cpu.load[percpu,avg1] system.cpu.util[,user] system.cpu.num[online] # 监控内存 vm.memory.size[available] vm.memory.size[total] vm.memory.size[used] # 监控磁盘 vfs.fs.size[/,free] vfs.fs.size[/,pfree] vfs.fs.inode[/,pfree] # 监控网络 net.if.in[eth0] net.if.out[eth0] net.tcp.service[http,]
# 监控交换机端口流量 ifInOctets.1 ifOutOctets.1 ifOperStatus.1 # 监控UPS upsBatteryStatus.0 upsEstimatedMinutesRemaining.0
# 监控服务器温度 ipmi.sensor.temp[CPU_Temp] # 监控风扇转速 ipmi.sensor.fan[Fan_1]
# 场景配置 - 步骤1: 访问首页 https://example.com - 步骤2: 登录 POST https://example.com/login - 步骤3: 验证响应码 200 - 步骤4: 验证响应文本 "Welcome"
# 编写监控脚本 vi /etc/zabbix/scripts/disk_io.sh #!/bin/bash case $1 in read_ops) iostat -x | grep vda | awk '{print $4}' ;; write_ops) iostat -x | grep vda | awk '{print $5}' ;; *) echo "Usage: $0 {read_ops|write_ops}" ;; esac chmod +x /etc/zabbix/scripts/disk_io.sh
# 编辑Agent配置 vi /etc/zabbix/zabbix_agentd.conf UserParameter=disk_io[*],/etc/zabbix/scripts/disk_io.sh $1 # 重启Agent systemctl restart zabbix-agent
# 在Server端测试 zabbix_get -s 192.168.1.101 -p 10050 -k "disk_io[read_ops]"
# 最后5分钟平均值大于80 avg(5m) > 80 # 最近3次值均大于90 last(#3) > 90 # 5分钟内变化超过10% change() > 10 # 值与1小时前相比增加20% (100-last(/host/key,1h))/last(/host/key,1h) < -20 # 监控项无数据超过5分钟 nodata(5m) = 1
# CPU负载高且内存使用率>80% last(/system.cpu.load[percpu,avg1]) > 2 and last(/vm.memory.size[used]) > 80 # 磁盘空间<10%且在持续减少 last(/vfs.fs.size[/,pfree]) < 10 and (last(/vfs.fs.size[/,free]) < prev(/vfs.fs.size[/,free]))
# 安装邮件发送工具 apt install mailutils # 配置SMTP vi /etc/mail.rc set from=zabbix@example.com smtp=smtp.example.com:587 set smtp-auth-user=zabbix@example.com smtp-auth-password=password set smtp-auth=login # 测试邮件 echo "Test" | mail -s "Zabbix Test" admin@example.com
// 钉钉Webhook脚本 var request = new CurlHttpRequest(); request.AddHeader('Content-Type: application/json'); data = { "msgtype": "text", "text": { "content": "{ALERT.NAME}\n{ALERT.MESSAGE}" } }; resp = request.Post('https://oapi.dingtalk.com/robot/send?access_token=xxx', JSON.stringify(data)); return resp;
# 第1级: 发送给运维人员 # 第2级: 发送给运维经理(15分钟未确认) # 第3级: 发送给CTO(1小时未确认)
配置 -> 模板 -> 创建模板 - 模板名称: Linux Server - 可见名称: Linux服务器监控模板 - 添加监控项: CPU、内存、磁盘、网络 - 添加触发器: CPU>80%、内存>90%、磁盘<10% - 添加图形: CPU趋势图、内存使用率 - 添加聚合图形: 服务器概览
配置 -> 主机 -> 选择主机 -> 模板 - 链接模板: Linux Server - 添加 - 更新
-- 创建索引 CREATE INDEX idx_history on history(itemid, clock); CREATE INDEX idx_history_uint on history_uint(itemid, clock); -- 分区表(按月分区) ALTER TABLE history PARTITION BY RANGE(clock) ( PARTITION p202601 VALUES LESS THAN (UNIX_TIMESTAMP('2026-02-01')), PARTITION p202602 VALUES LESS THAN (UNIX_TIMESTAMP('2026-03-01')), PARTITION p202603 VALUES LESS THAN (UNIX_TIMESTAMP('2026-04-01')) );
vi /etc/zabbix/zabbix_server.conf StartPollers=20 StartTrappers=10 StartPingers=10 StartPollersUnreachable=5 CacheSize=512M HistoryCacheSize=256M HistoryIndexCacheSize=128M Timeout=10
# 配置数据保留周期 管理 -> 通用 -> Housekeeping - 历史数据保留时长: 90天 - 趋势数据保留时长: 365天
Zabbix作为企业级监控解决方案,其强大的自定义能力和报警机制使其成为运维监控的利器。