目录
ZABBIX 基础介绍
zabbix 是采用 C 语言开发的一个开源的企业级监控解决方案,可以实现对各种 IT 组件的实时监控,包括服务器、网络设备、虚拟机、数据库、IOT设备等。
zabbix 采用 C/S 架构设计,服务端负责收集 受控节点(客户端)采集到的数据,然后根据采集到的数据和定义好的规则来触发对应的告警动作。
zabbix 中文官网:https://www.zabbix.com/cn
所以 zabbix 可以简单理解为由以下三大组件组成:
关键组件 | 功能说明 |
---|---|
服务端(Server) | 负责接收客户端上传的监控数据并存储数据、分析是否触发告警、执行定义好的动作(如发送告警邮件、执行脚本等)。 |
客户端(Agent) | 部署在被监控主机上的代理程序,负责定期采集本地资源状态(如 CPU、内存、磁盘、进程等),并将数据上报给服务端。 |
展示端(Frontend) | 基于 PHP 开发的 Web 界面,供用户配置监控项、触发器、动作等规则,并可实时查看各类图表、事件和告警信息。需要 LAMP 或 LNMP 环境支持。 |
zabbix 具有以下特点:
- 支持使用多种方式采集节点数据:如SNMP、Agent、IPMI、HTTP、自定义等方式。
- 支持邮件、短信、脚本、Webhook (企业微信、飞书、钉钉)等告警通知。
- 没有内置数据库,需要单独安装MySQL、MariaDB、PostgreSQL等数据库管理系统来存储数据。
- 前端(Zabbix Web UI )基于 PHP 开发,因此需要 LAMP/LNMP 架构,且原生支持中文,对国内用户比较友好。
zabbix 两种安装方式:
安装方式 | 特点 |
---|---|
源码编译安装 | 通过下载源码,然后编译安装,一般情况下没必要,因为很麻烦。 |
二进制包安装 | 官方打包好了对应的rpm或deb格式的包,导入软件源后,在联网环境下可以进行安装。 |
ZABBIX 服务部署
说明:纯净系统下二进制包安装zabbix可以参考官方文档: https://www.zabbix.com/cn/download
例如:在Ubuntu 2004 环境上提前搭建好了 LAMP 环境后,再安装 Zabbix6.0
1、先选择需要安装的zabbix版本,操作系统类型,系统使用的数据库类型,以及web服务器的类型。这样才会显示对应的下载连接。
下载链接:https://www.zabbix.com/cn/download
2、 选择好指定的版本后,会提供对应的下载链接,下载到操作系统然后安装即可配置好软件源。
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.0+ubuntu20.04_all.deb
sudo dpkg -i zabbix-release_latest_6.0+ubuntu20.04_all.deb
sudo apt update
3、 安装 zabbix 服务端和 zabbix agent 软件
官方安装步骤还推荐安装了zabbix-frontend-php
(前端软件包) 和 zabbix-apache-conf
(前端apache配置文件),因为我们已经搭建好 LAMP 环境了,如果再安装这两个软件包,zabbix 会在我们环境里面再安装一套 PHP 环境,这样可能会出问题。
所以服务端采用zabbix提供的二进制包安装,前端采用源码编译安装,并且自定义apache的配置文件。
zabbix-server-mysql
:zabbix 使用MySQL存储数据时候的服务端软件包名称。zabbix-sql-scripts
:zabbix初始化数据库的sql脚本文件zabbix-agent
:zabbix主机也要装一个agent工具,这样才能获取到主机的状态信息。
sudo apt install zabbix-server-mysql zabbix-sql-scripts zabbix-agent
4、在MySQL数据库数据库中创建zabbix数据库,以及创建一个供zabbix服务端连接的账户
注意:zabbix6.0版本要使用 MySQL 8.0 以上的环境。zabbix 5.x及其以下版本要使用MySQL5.7,否则会有很多不兼容。
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'eHIGH2014';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
5、将zabbix的基础数据导入zabbix数据库
安装 zabbix-sql-scripts
后,在 /usr/share/zabbix-sql-scripts/mysql/
目录下有zabbix的数据库初始化sql文件。
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
6、mysql 配置中关闭 log_bin_trust_function_creators
配置
mysql> set global log_bin_trust_function_creators = 0;
7、修改zabbix配置中和服务启动的基础配置项
sudo vim /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=eHIGH2014
8、下载zabbix 6.0 的源码包,然后解压到服务器
下载地址:https://www.zabbix.com/cn/download_sources
9、在解压的源码包目录下,有一个名为 ui 的目录,存放的就是zabbix的前端文件。所以直接将这个目录下的所有文件拷贝到apache的根目录下指定位置即可。
cp -a ui/* ~/work/html/zabbix
sudo chown -R ehigh.ehigh ~/work/html/zabbix
10、编写apahce的配置文件,单独使用一个虚拟主机管理zabbix
# 1. 让apache监听一个端口
Listen 8080
# 2. 编写zabbix的虚拟主机文件
<VirtualHost *:8080>
DocumentRoot /home/ehigh/work/html/zabbix
<Directory /home/ehigh/work/html/zabbix>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/zabbix_error.log
CustomLog ${APACHE_LOG_DIR}/zabbix_access.log combine
</VirtualHost>
# 3. 重启apache生效
sudo systemctl restart apache2
11、配置完成后重启zabbix-server 和 zabbix-agent服务
sudo systemctl restart zabbix-server.service
sudo systemctl restart zabbix-agent.service
12、页面访问8080端口进行初始化界面
说明:页面初始化的时候,会检查当前安装的PHP环境,如果PHP中的一些配置不满足要求,则需要手动修改PHP配置文件,然后重启apache
13、配置完成后,即可登录管理页面
14、zabbix原生支持中文,所以可以直接切换到中文。
ZABBIX 数据展示
1、需要现在受监控的主机上安装 Agent 软件,安装方式就是先配置软件源,然后进行安装
sudo apt insatll zabbix-agent
2、修改 zabbix_agent 的配置文件,设置将数据推送到哪个zabbix服务端,并重启agent服务
$ sudo vim /etc/zabbix/zabbix_agentd.conf
Server=10.0.28.14
sudo systemctl restart zabbix-agent.service
3、在 zabbix 服务端添加受监控的主机,后续才能获取到该主机的状态信息。
4、使用一个模板和特定的主机进行绑定,这样后续才能定义展示的数据内容。
模板有三种类型:
模板类型 | 特点 |
---|---|
官方自带模板 | 自带的模板很多,但是可能模板里面的很多数据信息不一定是我们想看的。 |
自定义的模板 | 可以根据实际情况,定义需要zabbix显示哪些数据。 |
预定义的模板 | 定义好的模板可以导出为xml文件,可以将对应的xml文件导入使用。 |
例如:新建一个名为 Linux Monitor的模板
模板创建后,在模板列表可以查看。
说明:如果有现成的模板,直接导入就行了
5、给模板创建对应的监控项,监控项就是指定了 监控哪些数据,一个模板里面包含若干个监控项
例如:监控一分钟 CPU 的负载情况
6、将模板和特定的主机进行绑定,然后等一分钟就有数据更新了。
等待ZBX变绿,说明主机可用,监控指标检查已成功
7、点击最新数据即可查看获取到的数据信息
ZABBIX 配置告警
zabbix 的告警是通过触发器来实现的,触发器定义好某种规则,然后如果特定的数据和这个规则匹配上了,就会产生指定级别的告警。
1、先创建好一个触发器。创建触发器有两种方式
创建方式 | 特点 |
---|---|
基于指定主机创建触发器 | 在某个指定主机上直接创建触发器,这个触发器只会应用在该主机上;如果其他主机也需要使用此触发器规则,则必须在每个主机上单独创建或复制相同的触发器。适合对单台主机做个性化监控。 |
基于指定模板创建触发器 | 在某个监控模板上创建触发器,该触发器会自动应用于所有关联了该模板的主机。适合批量管理大规模主机的统一监控策略,提升管理效率、易于维护。 |
例如:基于模板创建一个触发器,这样使用该模板的所有主机都会生效
2、创建完成后,所有主机都有了这个触发器,在检测/主机
中可以查看是否被触发
当触发后,会自动生成对应的问题清单:
说明:例如一分钟采集一次数据,如果新采集到的数据不满足触发器的触发条件了,则告警就会自动恢复。
ZABBIX 告警推送
通过触发器产生告警数据后,默认就在zabbix的页面显示,但是zabbix支持配置告警推送,就是将告警信息通过邮件或短信、webhook等方式推送到指定的平台。实现告警推送功能是通过 动作 来实现的。即产生告警了后,执行什么样的工作。
例如:将告警信息通过邮件进行推送的配置方法
1、先添加一个动作,和特定的触发器进行绑定。
时间点 | 说明 |
---|---|
第 0 分钟 | 触发器第一次触发,立刻执行第 1 步,发送一次告警 |
第 5 分钟 | 如果触发器还处于问题状态,执行第 2 步,再次发送一次告警 |
第 10 分钟 | 如果仍未恢复,执行第 3 步,再发一次告警 |
第 15 分钟及之后 | 不再执行任何动作,不再发送告警,直到触发器恢复(如果设置了恢复操作,则恢复时会再通知) |
2、设置zabbix的报警媒介为Email
说明:zabbix 6.x 版本 和 QQ邮箱不兼容,如果配置为QQ邮箱,会出现 login denied
的提示
配置项 | 作用给介绍 |
---|---|
SMTP服务器 | 用于发送邮件的SMTP服务器地址 |
SMTP服务器端口 | 邮件服务器的端口号,不加密就使用25端口。 |
SMTP HELO | 发起 SMTP 会话时使用的主机名标识,一般随意指定 |
SMTP电邮 | 也就是“发件人”地址 |
安全连接 | 邮件传输的加密方式,一般选择不加密 |
认证 | “使用用户名和密码”表示需要登录验证,密码是邮箱的授权号,不是邮箱密码 |
用户名称 | 发件人的邮箱地址 |
消息格式 | 纯文本:只有文字,兼容性更好, HTML:支持富文本邮件,能嵌入图片、样式等 |
自定义告警消息模板,指定发送告警的具体消息:
故障告警:{EVENT.NAME}
告警主机: {HOST.NAME}
主机地址: {HOST.IP}
监控项目: {ITEM.NAME}
当前取值: {ITEM.LASTVALUE}
告警等级: {TRIGGER.SEVERITY}
告警时间: {EVENT.DATE}-{EVENT.TIME}
事件ID: {EVENT.ID}
自定义告警消息变量,用于指定故障恢复时,发送告警的具体消息:
故障恢复:{EVENT.NAME}
主机地址: {HOST.IP}
告警名称: {EVENT.NAME}
持续时长: {EVENT.DURATION}
恢复时间: {EVENT.RECOVERY.DATE}-{EVENT.RECOVERY.TIME}
当前状态: {TRIGGER.STATUS}
当前取值: {ITEM.LASTVALUE}
事件ID: {EVENT.ID}
3、配置好后找个邮箱进行发送邮件测试,查看是否能正常发送邮件
4、添加收件人的邮箱地址,后续相关邮件会发送往指定的地址
ZABBIX 发现注册
1、自动发现功能
首先需要在服务端配置一个 IP地址范围,然后 Zabbix Server 会按照配置定期扫描,并尝试在这些地址上执行各种“探测动作”。如:进行Zabbix Agent 检测,检查是否运行了 Zabbix agent。一旦发现某个 IP 满足配置的条件,就会指定预定义的操作,如:自动添加主机、自动绑定模板等。
Zabbix 自动发现的配置流程:
1、创建自动发现规则:用于定义 IP地址范围和探测的间隔时间。
例如:
2、创建发现动作:探测到满足条件的主机后,就执行对应的操作。
创建发现动作时,条件部分就是创建的自动探测规则,这样就实现了探测到对应主机满足条件,触发动作的执行。
操作就是满足发现规则后就会触发这个动作,这个工作具体要做的事。
3、查看具体自动发现的设备信息
2、自动注册功能
在受控节点的 Agent 配置文件中上指定服务端的地址和端口,Agent 会主动向服务端注册并发送监控数据。当服务端收到注册请求后,会根据预定义规则自动把它加入到监控系统中,并执行相应操作(比如分配模板、加群组等)。
ZABBIX 自动注册配置流程:
1、在客户端运行的 zabbix_agent 配置文件中指定以下配置:
Server=Zabbix_Server_IP
Hostname=唯一主机名 # 自动注册时用于唯一识别主机的关键字段
HostMetadata=linux # 主机源数据方便zabbix server在注册时进行认证,名称自定义(一般不用加)
2、在服务端的自动注册中创建对应的动作
如:主机的元数据中如果包含linux字样(通过 Agent 的 HostMetadata
字段传过来),就触发对应的操作
一般的操作就是添加主机,然后关联特定模板:
ZABBIX 图形图表
自定义图表方式:
可以根据特定的监控项来创建一个对应的图表。
例如:给某个主机的CPU负载状态创建一个图标
1、给指定主机新增一个图形
2、添加需要使用图表显示的对应监控项
3、添加完成后即可进行查看
ZABBIX 优化策略
1、停止掉无用的监控项,这样可以减少服务器处理资源时的资源利用。
2、增加监控项的取值间隔,一些不重要的监控项可以将间隔调大,从而降低频率。
3、减少历史数据保存周期,一些历史告警数据等不重要的数据,降低保留时间。
4、如果主机过多,例如超过500台,就需要考虑监控模式的调整。