目录
引言
一、zabbix基本介绍
(一)什么是zabbix
(二)zabbix结构体系
(三)zabbix监控对象
(四)zabbix进程
(五)zabbix监控模式
(六)zabbix的监控架构
(七)zabbix监控流程
二、安装zabbix服务
(一)安装前准备工作
(二)安装zabbix
1.获取下载源信息
2.安装软件
3.开启安装源
4.安装数据库
(三)登录zabbix
1.使用浏览器访问
2.解决web界面乱码
(四)部署 zabbix 客户端
1.时间同步
2.安装 zabbix-agent2
3.修改配置文件
4.验证联通性
引言
在当今高度数字化的世界中,IT基础设施的稳定性与效能直接影响着企业的运营效率和业务连续性。这就引出了我们今天的主角——Zabbix,一款全球广泛采用的开源监控解决方案,以其全面、灵活和高效的特性赢得了无数用户的青睐。
一、zabbix基本介绍
(一)什么是zabbix
Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发和支持。
Zabbix 是一个企业级的开源分布式监控解决方案。
Zabbix 是一款监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应。Zabbix 基于存储的数据提供出色的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。
Zabbix 支持轮询和 trapping。所有 Zabbix 报告和统计数据以及配置参数都可以通过基于 Web 的前端访问。基于 Web 的前端确保可以从任何位置评估您的网络状态和服务器的健康状况。如果配置得当,不管对于拥有少量服务器的小型组织还是拥有大量服务器的大公司来讲,Zabbix 都可以在监控 IT 基础设施方面发挥重要作用
zabbix 由 2 部分构成,zabbix server 与可选组件 zabbix agent。通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置。
(二)zabbix结构体系
Zabbix 由几个主要的软件组件组成。他们的职责概述如下。
Server
Zabbix server 是 agents 向其报告可用性和完整性信息和统计信息的中心组件。server 是存储所有配置、统计和操作数据的中央存储库。
数据存储
Zabbix 收集的所有配置信息以及数据都存储在数据库中。
Web 界面
为了从任何地方和任何平台轻松访问,Zabbix 提供了基于 Web 的界面。该接口是 Zabbix server 的一部分,通常(但不一定)与 server 运行在同一台设备上。
Proxy
Zabbix proxy 可以代替 Zabbix server 收集性能和可用性数据。proxy 是 Zabbix 部署的可选部分;但是对于分散单个 Zabbix server 的负载非常有用。
Agent
Zabbix agent 部署在被监控目标上,以主动监控本地资源和应用程序,并将收集到的数据报告给 Zabbix server。从 Zabbix 4.4 开始,有两种类型的 agent 可用:Zabbix agent (轻量级,在许多平台上支持,用 C 编写)和 Zabbix agent 2 (非常灵活,易于使用插件扩展,用 Go 编写)。
数据流
此外,回顾一下 Zabbix 中的整体数据流也是很重要的。为了创建一个收集数据的监控项,必须首先创建一个主机。另一方面 Zabbix 必须首先拥有一个监控项来创建触发器。必须有触发器才能创建动作。因此,如果你想收到 服务器 X 上的 CPU 负载过高的警报,必须首先为 服务器 X 创建一个主机条目,然后创建一个用于监控其 CPU 的监控项,然后是一个触发器,如果 CPU 过高则触发动作,然后通过通过动作操作向您发送电子邮件。这可能看起来像很多步骤,其实使用模板并不需要。而且,由于这种设计,可以自定义创建非常灵活的设置。
(三)zabbix监控对象
Zabbix能从以下来源采集数据,包括但不限于
网络设备监控:通过SNMP、IPMI、JMX等协议监控网络设备,如路由器、交换机、防火墙、负载均衡器等设备的性能和状态。
云服务、容器、虚拟机监控:支持监控AWS、Azure、Google Cloud等云服务资源,以及Docker、Kubernetes等容器环境,还包括虚拟机(如VMware、Hyper-V)的性能和资源使用情况。
操作系统级监控:监控Linux、Windows等各种操作系统的关键性能指标(CPU使用率、内存使用情况、磁盘空间、网络流量等)。
日志文件监控:通过日志监控模板,分析和监控日志文件中的错误、警告或其他自定义关键字,实现日志分析和报警功能。
数据库监控:支持对MySQL、PostgreSQL、MongoDB、Oracle等流行数据库的性能和状态监控。
应用程序监控:通过自定义键、插件或API接口,监控Web服务器(如Apache、Nginx)、应用程序服务器(如Tomcat、JBoss)等应用程序的运行状态和性能。
服务监控:监控各种网络服务如HTTP、FTP、SMTP、IMAP等的可用性和响应时间。
物联网传感器监控:对于支持网络通信的物联网设备和传感器,可以定制数据采集方式,实现数据的实时监控。
网页监控:通过对网页URL进行HTTP/HTTPS GET请求,检查网页的响应时间、状态码等指标,以确保网页或Web服务的可用性。
从外部API端点采集数据:Zabbix可以通过自定义脚本、低级别发现规则或HTTP代理监控项来从外部API接口获取数据,实现对第三方服务或自定义应用的监控。
(四)zabbix进程
zabbix_agentd
Zabbix Agent守护进程,运行在被监控的主机上,负责收集本地系统和应用的性能数据,并将数据发送到Zabbix Server或者Proxy。
zabbix_get
Zabbix命令行工具,用于从Zabbix Agent获取单个监控项的数据,通常用于临时性或排错目的。
zabbix_sender
用于主动推送监控数据到Zabbix Server或Proxy的命令行工具,特别适用于不适合被动式监控的数据上报,如周期性任务的结果、批处理作业的输出等。
zabbix_server
Zabbix Server的核心进程,负责接收从Agent、Sender和Proxy传递来的监控数据,处理触发器、执行动作(如发送通知)、存储数据到数据库,并提供前端Web界面的数据查询接口。
zabbix_proxy
Zabbix Proxy进程,用于在分布式监控环境中作为中继,收集来自下层Agent的数据,然后汇总到Zabbix Server,有助于减轻Server的负载和降低网络开销。
zabbix_java_gateway
Zabbix Java Gateway进程,用于监控使用Java JMX接口的Java应用程序,由于Java应用的特殊性,需要通过Java Gateway来与Zabbix Agent进行通信。
从技术角度讲,Zabbix的Server端还有诸如poller(轮询器)、trapper(陷阱处理器)、housekeeper(管家)等多种辅助进程,它们分别负责不同类型的监控数据收集、处理和维护工作。这些进程协作工作,共同构成了Zabbix高效稳定的监控体系结构
(五)zabbix监控模式
被动监控: 在被动监控模式下,Zabbix Server主动发起请求,通过Zabbix Agent获取数据。Zabbix Server按照配置的时间间隔,向Zabbix Agent发送请求,询问特定的监控项(items)的数据。Agent接到请求后,收集并返回所需数据。这种模式下,Zabbix Server主导了数据收集的过程。
例如,Zabbix Server配置了每隔5分钟向Agent请求CPU利用率,那么Agent就会在收到请求时才计算并返回CPU使用率。
主动监控: 而在主动监控模式下,Zabbix Agent主动将数据推送给Zabbix Server或Proxy。Agent按照配置的时间间隔,自行收集监控数据,并将数据主动发送到Zabbix Server或Proxy,无需等待Server的请求。这种方式减少了Server的压力,特别是在大规模部署的情况下,有利于提高监控效率。
例如,Agent配置了每隔1分钟主动推送磁盘使用量给Zabbix Server,那么Agent会在每过一分钟时就自动收集并发送磁盘使用量数据。
(六)zabbix的监控架构
zabbix的监控框架一种有三种
1.server-client架构
在这种架构中,Zabbix Server直接与Zabbix Agent通信。Zabbix Agent部署在被监控的主机上,收集并发送监控数据至Zabbix Server。Server接收到数据后,将其存储在数据库中,并根据配置触发告警、生成图表等
2.Server-Proxy-Client架构
当监控规模扩大,或者需要优化网络流量、减少Server负载时,引入Zabbix Proxy作为中介。Proxy部署在离被监控主机较近的地方,收集本地或附近主机的监控数据,然后将数据汇总发送至Zabbix Server。这样可以有效地分散Server的压力,尤其是在大规模分布式环境中
3.master-node-client架构
master-node-client架构是zabbix最复杂的架构。一般用于跨机房、跨网络、监控设备较多的大型网络架构。与server-proxy-client架构相比,master-node-client架构的主要区别在于node与proxy上
在master-node-client架构中,每个node可以理解为一个小的server端,在自己的配置文件和数据库,node下游可以直接连接client,也可以再次经过proxy代理后连接client。
在master-node-client架构中,master设备宕机不会影响node节点的正常工作
(七)zabbix监控流程
数据采集:
Agent方式:Zabbix Agent安装在被监控的主机上,它可以定期或按照配置的要求收集主机的各种性能数据(如CPU使用率、内存使用量、磁盘I/O等),同时也支持监控自定义脚本执行结果。Agent通过Zabbix协议将这些数据发送到Zabbix Server或Proxy。
SNMP/ICMP/IPMI等方式:对于不支持或不方便安装Agent的设备,可以通过SNMP协议、ICMP(ping)测试或IPMI(智能平台管理接口)等方式间接收集监控数据。
JMX :对于Java应用程序,还可以通过JMX接口进行监控。
数据传输:
Zabbix Agent或外部数据源收集到的数据会按照预定的频率传输到Zabbix Server或Proxy。如果在网络架构中有Proxy,则Proxy会先将数据缓存并进一步转发到Zabbix Server。
数据存储:
Zabbix Server接收到数据后,将它们存储在其后端数据库中,默认数据库引擎是MySQL,但也可支持其他数据库如PostgreSQL、Oracle、SQL Server等。
数据处理与分析:
Zabbix Server基于预设的监控项、触发器、图形、动作等配置规则,对存储在数据库中的数据进行实时分析和处理。触发器可以设置阈值条件,当监控数据达到或超出阈值时,就会触发相应的告警事件。
可视化与告警:
Zabbix Web界面(Web Interface)提供了丰富的图形化展示功能,将复杂的数据转化为易于理解的图表和仪表盘,便于运维人员快速了解系统状态。当发生异常情况时,Zabbix可以通过邮件、短信、电话等多种渠道发送告警通知给管理员,同时支持自定义动作来执行自动化操作,如自动重启服务、执行脚本等
二、安装zabbix服务
(一)安装前准备工作
systemctl disable --now firewalld #关闭防火墙
setenforce 0 #关闭selinux核心防护
hostnamectl set-hostname zbx-server #修改主机名
(二)安装zabbix
1.获取下载源信息
yum仓库修改完毕后执行:yum clean all && yum makecache 命令
2.安装软件
yum install -y zabbix-server-mysql zabbix-agent centos-release-scl
zabbix-server-mysql: 这是Zabbix监控系统的服务器组件,用于接收和处理来自Zabbix Agent以及其他数据源的监控数据,并存储在MySQL数据库中。安装此包意味着你将在服务器上搭建Zabbix监控系统的核心部分,用于存储和分析监控数据。
zabbix-agent: 这是Zabbix监控系统的客户端组件,部署在需要被监控的主机上。它负责收集主机的各种性能指标(如CPU使用率、内存使用情况、磁盘空间等)并将数据发送给Zabbix Server。安装此包意味着你将使主机具备被Zabbix监控的能力
centos-release-scl:安装SCL(Software Collections),便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4,版本过低,zabbix 5.0 版本对 php 版本最低要 7.2.0 版本。SCL 可以使得在同一台机器上使用多个版本的软件,而又不会影响整个系统的依赖环境。软件包会安装在 /opt/rh 目录下
3.开启安装源
vim 打开 /etc/yum.repo.d/zabbix.repo文件
修改 zabbix-front 前端源,安装 zabbix 前端环境到 scl 环境下
[root@zbx-server yum.repos.d]# yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
4.安装数据库
安装 zabbix 所需的数据库
安装完毕后启动服务
启动服务后初始化数据库,并设置数据库密码,密码是隐示输入,看不见,直接输入而后回车即可
设置好密码选项后,下面还会有一些列的选择,全部输入y并回车即可
为Zabbix监控软件准备数据库环境并设置合适的访问权限
执行一系列SQL语句以构建Zabbix监控系统所需的数据库结构和初始数据,从而完成Zabbix数据库的初始化设置。在执行此命令前,需要创建名为zabbix的数据库,并赋予了适当的权限
修改 zabbix server 配置文件,修改数据库的密码
修改 zabbix 的 php 配置文件
启动 zabbix 相关服务
小结
---------- 部署 zabbix 服务端 ----------
zabbix-server 内存至少 2G,推荐 4G;
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
//安装 zabbix 所需的数据库
yum install -y mariadb-server mariadb
systemctl enable --now mariadb
//初始化数据库,并设置初始化密码
mysql_secure_installation
//添加数据库用户,以及 zabbix 所需的数据库信息
mysql -u root -p123
CREATE DATABASE zabbix character set utf8 collate utf8_bin;
GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
flush privileges;
//导入数据库信息
rpm -ql zabbix-server-mysql #查询 sql 文件的位置
zcat /usr/share/doc/zabbix-server-mysql-5.0.42/create.sql.gz | mysql -uroot -pabc123 zabbix
//修改 zabbix server 配置文件,修改数据库的密码
vim /etc/zabbix/zabbix_server.conf
......
DBPassword=zabbix #124行,指定 zabbix 数据库的密码
//修改 zabbix 的 php 配置文件
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
......
php_value[date.timezone] = Asia/Shanghai #24行,取消注释,修改时区为中国时区
//启动 zabbix 相关服务
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
浏览器访问:http://192.168.83.90/zabbix
点击下一步,设置数据库的密码 zabbix
设置文件界面:点击左边菜单栏的【User settings】,【Language】选择 Chinese(zh_CN),再点击 Update 更新。
(三)登录zabbix
1.使用浏览器访问
浏览器访问:http://192.168.83.90/zabbix
安装完成后,默认的登录账号和密码为:Admin/zabbix
2.解决web界面乱码
解决 zabbix-server Web页面中文乱码问题
[root@zbx-server ~]# yum install -y wqy-microhei-fonts
#最小化系统,需要手动安装
[root@zbx-server ~]# cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
cp:是否覆盖"/usr/share/fonts/dejavu/DejaVuSans.ttf"?yes
#WQY-MicroHei 是一套支持中文显示的无衬线黑体字型
#输入yes回车确认覆盖
回到web界面刷新页面
(四)部署 zabbix 客户端
zabbix 5.0 版本采用 golang 语言开发的新版本客户端 agent2;zabbix 服务端 zabbix_server 默认使用 10051 端口,客户端 zabbix_agent2 默认使用 10050 端口
1.时间同步
服务端和客户端进行时间同步
yum install -y ntpdate
ntpdate -u ntp.aliyun.com
//将系统的时区时间改为Shanghai时间
[root@zabbix-client ~]#ll /etc/localtime
lrwxrwxrwx. 1 root root 35 3月 1 17:49 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
2.安装 zabbix-agent2
[root@zabbix-client ~]#rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
获取https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
警告:/var/tmp/rpm-tmp.RDdTyT: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:zabbix-release-5.0-1.el7 ################################# [100%]
[root@zabbix-client ~]#cd /etc/yum.repos.d
[root@zabbix-client yum.repos.d]#sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
[root@zabbix-client yum.repos.d]#yum install -y zabbix-agent2
3.修改配置文件
修改配置文件,使其可以访问服务端。并启动服务
[root@zabbix-client ~]#vim /etc/zabbix/zabbix_agent2.conf
......
80 Server=192.168.83.90 #修改为服务端的IP地址
125 ServerActive=192.168.83.90 #修改为服务端的IP地址
136 Hostname=zabbix-client #修改为本机客户端的主机名
[root@zabbix-client ~]#systemctl start zabbix-agent2
[root@zabbix-client ~]#systemctl enable zabbix-agent2
#启动服务并设置开机自启
4.验证联通性
在服务端使用zabbix-get工具,测试与客户端的联通性
[root@zbx-server ~]# yum install -y zabbix-get ##安装 zabbix 主动获取数据的命令
[root@zbx-server ~]# zabbix_get -s '192.168.83.60' -p 10050 -k 'agent.ping'
1
#测试Zabbix代理是否响应,输出的1表示请求成功,即Zabbix代理是活跃和可达的
[root@zbx-server ~]# zabbix_get -s '192.168.83.60' -p 10050 -k 'system.hostname'
zabbix-client
#获取被监控主机的系统主机名