Zabbix 自动化监控

本篇介绍 Zabbix 监控系统的完整部署与使用,包括服务端安装、数据库初始化、Web 界面配置、Agent 监控本机与远程 Linux、监控项/触发器/图形/模板/Web 监测、自动发现、聚合检测、邮件告警、代理分布式监控,以及主动/被动监控模式。实验环境为 CentOS 7.3,Zabbix 版本为 3.2。

一、监控概述

监控的一般流程:

  1. 收集信息:对监控主机、服务等进行检测,记录相关信息。
  2. 图形表现:将数据以图形方式展现给用户。
  3. 报警通知:通过邮件、短信、微信等方式通知用户。
  4. 开发接口:开源产品仅提供基本功能,需要编写程序自定义监控。

常见开源监控软件

软件 说明
mrtg 老牌产品
ntop 老牌产品
cacti 图形表现好,www.cacti.net,常与 Nagios 结合使用
nagios 多年流行,报警功能强
zabbix 目前最流行
Ganglia ——
centreon Nagios 的整合版本
监控宝 www.jiankongbao.com
360 监控 云市场监控软件
阿里云监控 云市场监控软件

Zabbix 架构

zabbix server  ---->  zabbix agent (被监控端)
192.168.224.10        192.168.224.11

二、服务端安装

2.1 环境准备(CentOS 7.3)

  1. 设置主机名:
hostnamectl set-hostname --static zabbixserver.cluster.com
vim /etc/hosts

在 /etc/hosts 中添加:

192.168.224.10  zabbixserver.cluster.com
  1. 时间同步。
  2. 关闭 iptables 和 SELinux。
  3. 配置 YUM 源(本地镜像源 + 163 源,可不用 EPEL 源):
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
  1. 配置 Zabbix 官方 YUM 源(版本 3.2):
wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm

共需要三个 YUM 仓库:本地 ISO、163、Zabbix 官方。

2.2 安装 Zabbix 和 MariaDB

yum install zabbix-server-mysql zabbix-web-mysql mariadb-server -y

2.3 创建数据库并授权

systemctl restart mariadb.service
systemctl status mariadb.service
systemctl enable mariadb.service
mysql
MariaDB [(none)]> create database zabbix default charset utf8;
MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by '123';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> use zabbix;
MariaDB [(none)]> show tables;
MariaDB [(none)]> quit

2.4 导入表数据

zcat /usr/share/doc/zabbix-server-mysql-3.2.7/create.sql.gz | mysql -u zabbix -p123 zabbix

2.5 配置 Zabbix 主配置文件

vim /etc/zabbix/zabbix_server.conf

确认或修改以下参数:

参数 值 说明
ListenPort 10051 服务端监听端口
DBHost localhost 数据库地址
DBName zabbix 数据库名
DBUser zabbix 数据库用户
DBPassword 123 数据库密码,需与授权一致
DBSocket /var/lib/mysql/mysql.sock 需改为实际 socket 路径
ListenIP 0.0.0.0 监听地址

启动服务:

systemctl restart zabbix-server.service
systemctl status zabbix-server.service
systemctl enable zabbix-server.service
lsof -i:10051

注意:若不禁用 SELinux,zabbix-server 启动可能出现问题。

2.6 配置 HTTPD 子配置文件

vim /etc/httpd/conf.d/zabbix.conf

打开时区注释并修改为:

php_value date.timezone Asia/Shanghai
systemctl restart httpd.service
systemctl status httpd.service
systemctl enable httpd.service

2.7 Web 界面初始化

使用 Firefox 访问:

http://IP/zabbix

按向导完成安装:

  1. Welcome
  2. Check of pre-requisites
  3. Configure DB connection:数据库用户名填 zabbix,密码填 123
  4. Zabbix server details:在 Name 选项填写 Zabbix 服务器的 IP 或主机名
  5. Pre-Installation summary
  6. Install

完成后登录:

  • 用户名:admin
  • 密码:zabbix

三、基本配置示例

3.1 切换中文界面

右上角点击小人图标 → 语言选择「中文 zh-cn」→ 点击 Update。

3.2 使用 Agent 监控本机

在 Zabbix Server 上安装 Agent:

yum install zabbix-agent -y

编辑配置文件 /etc/zabbix/zabbix_agentd.conf,以下选项保持默认即可:

参数 默认值 说明
Server 127.0.0.1 Zabbix 服务器 IP(被动监控)
ListenPort 10050 Agent 监听端口

被动是相对于客户端而言,即客户端被动接收服务器的监控请求。

systemctl restart zabbix-agent
systemctl status zabbix-agent
systemctl enable zabbix-agent
lsof -i:10050

在 Web 界面操作:配置 → 主机 → 默认可以看到名为「Zabbix server」的本机,状态为停用 → 点击启用。可用性中 ZBX 开始为灰色,等待几分钟变为绿色即正常。

3.3 图形中文乱码解决

Zabbix 基于 rrd-tool 开发,字体存在兼容性问题。解决方法是将图形字体替换为 ukai 字体。

wget 192.168.2.254/automation/zabbix/pack/ttf-arphic-ukai_0.2.20080216.1.orig.tar.gz
tar xf ttf-arphic-ukai_0.2.20080216.1.orig.tar.gz -C /usr/share/zabbix/fonts/
mv /usr/share/zabbix/fonts/ukai.ttc /usr/share/zabbix/fonts/ukai.ttf

编辑 /usr/share/zabbix/include/defines.inc.php 第 45 行:

define('ZBX_GRAPH_FONT_NAME','ukai');

无需重启服务,刷新 Web 界面即可。

3.4 监控远程 Linux 主机

zabbix server             zabbix agent
192.168.224.10            192.168.224.11

第一大步:被监控端配置(192.168.224.11)

  1. 配置主机名。
  2. 关闭 iptables、SELinux。
  3. 时间同步。
  4. 配置 YUM 源(需要 Zabbix 官方源)。
  5. 安装 Agent:
yum install -y zabbix-agent

编辑 /etc/zabbix/zabbix_agentd.conf:

参数 值 说明
Server 192.168.224.10 Zabbix 服务器 IP(被动监控)
ListenPort 10050 被动监控端口
Hostname agent1.cluster.com 被监控端主机名
systemctl restart zabbix-agent
systemctl status zabbix-agent
systemctl enable zabbix-agent
lsof -i:10050

第二大步:Web 界面添加主机

配置 → 主机 → 创建主机:

选项 填写内容
主机名称 agent1.cluster.com
可见的名称 agent1
群组 Linux servers(或自建群组)
IP 地址 192.168.224.11

点击「模板」→ 选择 → 勾选 Template OS Linux → 选择 → 添加 → 最后点击右下角添加。

完成后即可看到监控了两台机器。


四、核心概念

4.1 用户与群组

  • 用户(user)
  • 用户群组(group)

操作路径:管理 → 用户;管理 → 用户群组。

练习:添加一个用户群组 usergroup1,再添加用户「张三」,加入 usergroup1 组和 Zabbix administrators 组。

4.2 主机和主机组

  • 主机(hosts):被监控的一台机器。
  • 主机组(hostgroups):被监控的一组机器,便于分组区分。

操作路径:配置 → 主机群组;配置 → 主机。

练习:把 agent1 换到新组 hostgroup1,再删除 linux servers 组。

4.3 监控项与应用集

  • 监控项(items):收集数据或监控的最小单位。
  • 应用集(applications):多个监控项组成的组。

操作路径:配置 → 主机 → 监控项 → 右上角「创建监控项」。

例如创建监控项 system.swap.size[,free],之后可以在该主机的监控项列表中找到。

图形创建路径:配置 → 主机 → 图形 → 右上角「创建图形」,选择图形名称并添加已定义好的监控项。

自定义监控项示例

自定义监控 agent1(192.168.224.11)上的用户登录数(默认有键值 system.users.num,这里使用自定义键值)。

  1. 在 agent1 上多打开几个终端,执行:
who | wc -l
  1. 在 agent1 上定义用户参数,编辑 /etc/zabbix/zabbix_agentd.conf,添加:
UserParameter=loginusers,who | wc -l

loginusers 为自定义键值名称,后面的 who | wc -l 为要监控的命令。

systemctl restart zabbix-agent
  1. 在服务器端命令行测试:
yum install zabbix-get
zabbix_get -s 192.168.224.11 -k loginusers

能返回结果则测试 OK。

  1. Web 界面创建监控项:配置 → 主机 → 监控项(选择 agent1)→ 创建监控项,键值填写 loginusers。

  2. 为该监控项创建图形:配置 → 主机 → 图形 → 创建图形 → 添加监控项 → 预览。

自定义监控项练习

监控系统所有进程数量:

UserParameter=totalprocs,ps -ef | awk 'NR>1 {print $0}' |wc -l

说明:

  • NR>1:行号大于一。
  • awk 'NR>1 {print $0}':输出行号大于一的内容。

监控 MariaDB 当前登录用户数:

yum install mariadb\*
systemctl restart mariadb
systemctl enable mariadb
UserParameter=mariadb_loginusers,echo $[`mysqladmin -u root processlist |wc -l`-4]

mysqladmin -u root processlist 用于列出当前登录 MySQL 的用户列表。

4.4 可视化图形(Visualisation)

图形和图形中定义(高、宽、坐标、X/Y 单位、颜色)的综合。前面已通过监控项创建过相关图形。

4.5 触发器(Trigger)

定义监控项到达临界值或满足某个条件时发生状态变化。

示例:对 agent1 的登录用户数创建触发器,大于 20 个登录用户就警告。

配置 → 主机 → 触发器(选择 agent1)→ 创建触发器 → 填写名称 → 在表达式右边点添加:

  • 选择监控 agent1 登录用户数的监控项。
  • 设置最新的 T 值 > N(N 设为 20)。

添加表达式后即可添加触发器。将 agent1 用户数调整到大于 20,在「监测中 → 触发器」中可查看到触发。

练习:

  1. 监控系统所有进程数量,大于 250 警告,大于 400 一般严重。
  2. 监控 MariaDB 登录用户数,大于 50 警告,大于 100 一般严重。

4.6 Web 监测

类似一个监控项,可以对 URL 页面进行监测。

示例:监测 agent1 的主页

  1. 配置 → 主机 → Web 监测(选择 agent1)→ 创建 Web 场景 → 填写名称并加入应用集。
  2. 点「步骤」,填写名称、URL(监控页面路径)、要求的状态码(如 200)。
  3. 添加后可看到该 Web 监测场景。
  4. 监测中 → Web 监测,会看到有问题(因为 agent1 未安装 httpd)。
  5. 在 agent1 上安装并启动 httpd,做好主页,再查看即监测 OK。

练习:为此 Web 监测配置触发器。提示:检测项 web.test.rspcode[web检测,portal page] 不为 200 即错误。

表达式:

{client1.example.com:web.test.rspcode[web检测,portal page].last()}<>200

4.7 事件(Events)

各种需要管理员知悉或处理的事情,包括触发器事件、discovery 事件、网络事件等。

4.8 自动发现(Discovery)与动作(Action)

示例:通过 discovery + action 发现 agent2 并添加监控模板。

zabbix server
192.168.224.10

agent1                    agent2
192.168.224.11            192.168.224.12

agent2 准备工作

hostnamectl set-hostname --static agent2.cluster.com
vim /etc/hosts

添加:

192.168.224.12  agent2.cluster.com

关闭 iptables、SELinux,时间同步,配置 YUM 源。

yum install zabbix-agent -y

编辑 /etc/zabbix/zabbix_agentd.conf:

参数 值
Server 192.168.224.10
ListenPort 10050
Hostname agent2.cluster.com
systemctl restart zabbix-agent
systemctl status zabbix-agent
systemctl enable zabbix-agent
lsof -i:10050

Server 端 Web 操作

  1. 配置 → 自动发现,修改默认的 Local network 规则:
    • 修改试验网段(原文为 10.1.1.0/24,按实际环境填写)。
    • 勾选「已启用」。
    • 点更新。
  2. 监测中 → 自动发现,查找已发现的设备(大网段如 172.16.0.0/16 速度较慢,可设置延迟为 5 秒)。
  3. 配置 → 动作 → 右上角事件源选「自动发现」,修改默认的 Auto discovery. Linux servers 动作中的 IP 网段。
  4. 过一段时间在配置 → 主机中查看,发现的主机会自动加入配置。

4.9 聚合检测(Aggregate Checks)

监控 agent1 和 agent2 两台服务器登录用户数之和。

  1. 两台都配置登录用户数监控项:
vim /etc/zabbix/zabbix_agentd.conf
UserParameter=loginusers,who | wc -l
systemctl restart zabbix-agent
  1. 在 Client2 上创建 loginusers 监控项。

  2. 在 Web 界面:配置 → 主机 → client1 → 监控项 → 右上角「创建监控项」:

    • 类型选择「Zabbix 整合」
    • 键值填写:
grpsum["hostgroup1","loginusers",last]

确保机器都在组 hostgroup1 中。

4.10 通知(Notification)

出现报警事件或触发器触发时进行通知。默认通知类型有:email、jabber、短信(sms)。其他方式如微信需要接口(如企业公众号),也可以定义 shell 脚本报警。

配置步骤:

  1. 管理 → 报警媒介类型 → Email,配置邮件参数。
  2. 将报警类型分配给用户 admin:管理 → 用户 → admin → 报警媒介 → 添加。

4.11 模板(Templates)

模板代表监控项、应用集、触发器、图形、自动发现规则、Web 监测等的组合。例如 Template App HTTPS Service,可直接应用到被监控主机。

操作路径:配置 → 模板。

4.12 批量更新、导入导出

  • 批量更新:配置 → 主机 → 勾选要批量更新的主机 → 选择「批量更新」→ 执行更新。
  • 导出:配置 → 主机(或模板)→ 勾选 → 选择「导出」,默认导出到浏览器所在机器的 /root/Downloads/。

练习:删除本机一个模板,从同桌的 Zabbix 服务器导出 XML 文件,拷贝后导入(注意修改 IP 等参数)。


五、通过代理实现分布式监控

适用于多机房场景:

机房一                 机房二

        zabbix 核心服务器

机房三                 机房四

拓扑:

zabbix server  ------  zabbix proxy  ----  zabbix agent
192.168.224.10         192.168.224.12       192.168.224.11

5.1 准备工作

将原来的 agent2 模拟为 zabbix_proxy:

  1. 在 zabbix_server 的 Web 界面删除 agent2 的配置,并禁用先前的自动发现规则。
  2. 主机名改为 zabbix_proxy.com。
  3. 停止 zabbix-agent:
systemctl stop zabbix-agent

5.2 Proxy 端配置(192.168.224.12)

需要本地 YUM 源和 Zabbix 源:

yum install mariadb\* zabbix-proxy zabbix-proxy-mysql zabbix-agent -y
systemctl restart mariadb
systemctl enable mariadb
mysql
MariaDB [(none)]> create database zabbix_proxy default charset utf8;
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to 'zabbix'@'localhost' identified by '123';
MariaDB [(none)]> flush privileges;
zcat /usr/share/doc/zabbix-proxy-mysql-3.2.7/schema.sql.gz | mysql zabbix_proxy -u zabbix -p123

编辑 /etc/zabbix/zabbix_proxy.conf:

参数 值 说明
ProxyMode 0 0 为主动模式(proxy 主动发数据给 server)
Server 192.168.224.10 zabbix_server 的 IP
Hostname zabbix_proxy.cluster.com 必须与主机名及 Web 界面配置一致
DBHost localhost 数据库地址
DBName zabbix_proxy 数据库名
DBUser zabbix 数据库用户
DBPassword 123 数据库密码
ConfigFrequency 60 主动模式下多久接收一次配置
DataSenderFrequency 5 主动模式下多久发送一次收集数据

编辑 /etc/zabbix/zabbix_agentd.conf:

参数 值
SourceIP 192.168.224.12
Server 192.168.224.12
ServerActive 192.168.224.12
Hostname zabbix_proxy.cluster.com
systemctl restart zabbix-proxy
systemctl restart zabbix-agent
systemctl enable zabbix-agent
systemctl enable zabbix-proxy

5.3 Agent 端配置(192.168.224.11)

编辑 /etc/zabbix/zabbix_agentd.conf,把服务器 IP 改为 proxy 的 IP:

参数 值
Server 192.168.224.12
ServerActive 192.168.224.12
Hostname agent1.cluster.com
systemctl restart zabbix-agent

5.4 Server 端 Web 配置

  1. 将代理机器加入监控主机:配置 → 主机 → 创建主机
    • 主机名称:zabbix_proxy.cluster.com
    • 群组:随意
    • IP 地址:192.168.224.12,端口 10050
  2. 添加代理程序:管理 → agent 代理程序 → 创建代理
    • agent 代理程序名称:zabbix_proxy.cluster.com(与配置中主机名一致)
    • 系统代理程序模式:主动式
    • agent 代理程序的主机:agent1、zabbix_proxy.cluster.com

添加完成后,agent1 和 zabbix_proxy.cluster.com 自动被代理。

5.5 测试

在 agent1(192.168.224.11)上改变某个监控项(如登录用户数),在 zabbix_server(192.168.224.10)的图形界面能看到变化即说明 proxy 成功。


六、主动监控与被动监控

zabbix_server  ------  zabbix_proxy  ----  zabbix_agent1

6.1 Agent 被动模式

相对于 agent 被动,即 server 或 proxy 主动去找 agent 拿数据。

编辑 /etc/zabbix/zabbix_agentd.conf:

Server=192.168.224.12

IP 为 zabbix_proxy 的 IP(没有 proxy 则为 zabbix_server 的 IP)。监控项类型配置为「Zabbix 客户端」即被动模式。

6.2 Agent 主动模式

相对于 agent 主动,即 agent 主动把数据传给 server 或 proxy。

编辑 /etc/zabbix/zabbix_agentd.conf:

ServerActive=192.168.224.12

监控项类型配置为「Zabbix 客户端(主动式)」即主动模式。

6.3 Proxy 主动模式

zabbix_proxy 主动发数据给 zabbix_server,适用于被监控主机没有公网 IP、Zabbix Server 无法直接访问的情况,由被监控机器直接发送数据。

编辑 /etc/zabbix/zabbix_proxy.conf:

ProxyMode=0

6.4 Proxy 被动模式

zabbix_server 找 zabbix_proxy 收集数据。

编辑 /etc/zabbix/zabbix_proxy.conf:

ProxyMode=1
最后修改:2026 年 09 月 20 日
如果觉得我的文章对你有用,请随意赞赏