分布式开源监控Zabbix实战

Zabbix作为一个分布式开源监控软件,在传统的监控领域有着先天的优势,具备灵活的数据采集、自定义的告警策略、丰富的图表展示以及高可用性和扩展性。本文简要介绍Zabbix的特性、整体架构和工作流程,以及安装部署的过程,并结合实战进行监控配置。


1、Zabbix介绍

Zabbix是一个企业级的分布式开源监控方案,能够监控各种网络参数以及服务器健康性和完整性。它由Alexei Vladishev创建,目前由Zabbix SIA在持续开发和支持。Zabbix基于Web页面,提供分布式系统监控及网络监控功能,提供多种监控方式,支持在复杂系统架构下的全栈监控。

1.1 Zabbix特性

1)监控数据采集的灵活性

Zabbix支持多种数据采集方式,包括自动发现、agent、snmp、JMX、telnet采集方式和主动、被动模式下的数据传输。同时,它还支持用户自定义插件和自定义间隔数据收集。

  • 采集数据源的广泛性:从基础设施、数据库、应用程序、传感器等终端采集数据
  • 数据采集的灵活性:数据采集的间隔、策略,采集数据的类型包括文本、二进制以及结构化JSON、CSV等数据格式
  • 支持代理和无代理监控:利用Zabbix Agent代理进行深度监控;无代理监控支持SNMP、IPMI、ODBC和Prometheus等监控协议
  • 支持采集数据的规范化和转换:对采集数据进行格式转换、验证数据的准确性等

在这里插入图片描述

2)告警信息自定义配置

Zabbix可以设置告警信息的周期、级别、恢复通知、时段阈值等,支持维护周期和单机停用。同时支持多条件告警、告警信息推送等。

  • 根据传入的数据流进行异常检测和趋势预测,自定义告警级别和分类
  • 将告警信息推送到不同的平台,支持告警平台、邮箱和通信平台等
  • 故障告警自动修复功能,针对部分场景实现故障自愈功能,如自动重启、自动伸缩资源

在这里插入图片描述

3)数据可视化展示

Zabbix可以自定义监控视图、网络拓扑、自定义面板和IT服务时间与可用性。

  • 支持采集数据的个性化展示,实现拖拽缩放、仪表盘、各种图表等功能
  • 支持地理环境和基础设施拓扑展示,展示整个集群的整体情况
  • 生成定制化报表定时发送

在这里插入图片描述

4)架构高可用性和扩展性

Zabbix的监控系统对设备的性能要求较低,支持proxy分布式监控、分布式集中管理、自动化监控和开放式接口,扩展性较强。

  • Zabbix高可用部署架构防止数据丢失,并且提高前端用户体验
  • 通过部署Zabbix Proxy支持分布式监控,支持无限的可扩展性

在这里插入图片描述

5)安全审计策略保证

Zabbix支持安全用户审计日志、权限认证和用户限制允许维护的列表。

  • Zabbix组件之间的通信通过加密传输,支持不同的加密算法
  • 用户权限定义不同的级别、用户分为不同的角色进行管理
  • 限制采集数据的敏感信息访问等

在这里插入图片描述

除了以上特性,Zabbix支持在本地或云平台快速部署和配置、无缝对接不同的软硬件平台、多租户管理等特性。

1.2 Zabbix监控采集方式

Zabbix支持监控各种系统平台,包括Linux和Windows等主流操作系统,也可以借助SNMP或者SSH协议监控路由交换设备。

  • 硬件监控:Zabbix IPMI Interface,通过IPMI接口进行监控,监控被监控对象的物理特征,比如电压、温度、风扇状态、电源状态等。
  • 系统监控:Zabbix Agent Interface,通过专用的代理程序进行监控,易于部署、性能消耗低,推荐首选监控方式。
  • Java监控:Zabbix JMX Interface ,通过JMX(java management extensions)java管理扩展)监控JVM虚拟机。
  • 网络设备监控:Zabbix SNMP Interface,通过SNMP协议与被监控对象进行通信,用于监控路由器、交换机这种网络设备。
  • 应用服务监控:Zabbix Agent UserParameter
  • MySQL数据库监控:percona-monitoring-plulgins
  • URL监控:Zabbix Web监控
1.3 Zabbix和Prometheus监控对比

Prometheus也是时下较为流行的分布式监控工具,Zabbix和其对比,如下表所示:

名称发布时间开发语言性能社区支持容器支持企业使用部署难度
Zabbix2012C+PHP上限约1w节点活跃较差传统监控如服务器监控上优势明显多系统不同监控部署方式
Prometheus2016Go以万为单位活跃支持云原生、K8S等监控容器相关监控首选简单,一条命令搞定

相比较而言,Prometheus对容器监控支持能力更为强大,是云原生和K8S等容器相关监控的首选解决方案;Zabbix作为传统的监控方式,系统稳定成熟度高,对服务器等基础设施监控上具有优势,缺点是随着架构复杂度增加,定制化的难度也更大了。

2、Zabbix架构原理

2.1 Zabbix整体架构

在这里插入图片描述

Zabbix的架构分为服务端、Proxy层和客户端部分,主要包括以下部分:

  • Zabbix Server:核心组件,负责收集和接收来自被监控设备的数据,并与Zabbix Agents、Zabbix proxy和Zabbix Database进行通信。
  • Zabbix Database:用于存储Zabbix的数据。
  • Zabbix Agents:安装在被监控服务器上,负责收集本地数据,并将其发送到Zabbix Server。
  • Zabbix Proxy:可选组件,常用于监控节点很多的分布式环境中,代理Server收集部分数据转发到Server,可以减轻Server的压力。
  • Zabbix GUI:Zabbix的Web前端管理界面,用户通过Web前端页面可以查看Zabbix Server收集的数据,也可以对Zabbix Server进行配置。
2.2 Zabbix主要工作进程

在Zabbix中,有以下几个主要的进程:

  • zabbix_agentd:Zabbix客户端守护进程,主要负责收集客户端监控项数据。
  • zabbix_server:Zabbix服务端守护进程,主要负责收集Zabbix客户端数据。
  • zabbix_proxy:Zabbix代理进程,其功能类似于Server,作用上类似与一个中转站,最终会把收集到的数据再次提交给zabbix_server。
  • zabbix_get:一个Zabbix工具,通常运行在zabbix server或者是zabbix proxy上,用于远程获取客户端信息,通常用于排错。
  • zabbix_sender:一个Zabbix工具,通常运行在zabbix客户端,用于耗时比较长的的检查,其作用是主动发送数据。
  • zabbix_java_gateway:Zabbix2.0之后引入的新功能,可以用户JAVA方面的设备,但是其只能主动获取数据,而不能被动获取数据。

此外,还有报警器(alerter)、配置同步器(configuration syncer)、数据发送器(data sender)、数据库watchdog等进程。不同的进程在Zabbix系统中担任不同的角色和任务,可以根据需要灵活配置和扩展。

2.3 Zabbix工作流程

Zabbix通过客户端定期收集监控设备上的数据,并将其发送给zabbix服务端;zabbix服务端将zabbix客户端发送的数据存储的数据库中,zabbix web根据数据在前端进行展示和绘图。Zabbix的数据采集模式主要包括两种:

  • Poller模式(主动轮询):Zabbix Server会主动轮询Zabbix Agent或Zabbix Proxy,获取监控数据。这种方式的好处是可以主动获取数据,数据采集的及时性相对较高,但是缺点是在大量服务器的环境中,Zabbix Server不能及时获取最新的数据。
  • Trapper模式(主动捕捉):Zabbix Agent或Zabbix Proxy主动向Zabbix Server发送数据,这种方式可以在Zabbix Server不主动轮询的情况下获取实时的监控数据,但是缺点是需要在被监控服务器上安装Agent或Proxy,增加了运维成本。
2.4 Zabbix监控框架

Zabbix的部署架构可以根据实际监控环境的需求进行选择和配置,主要有以下三种常见架构:

  • Server-Client架构:最简单的架构,监控设备和被监控设备之间直接相连,Zabbix Server和Zabbix Agent之间直接进行数据交互。适用于网络比较简单,设备比较少的监控环境。
  • Server-Proxy-Client架构:其中Proxy是Server、Client之间沟通的一个桥梁,Proxy本身不存放数据,只是将Agent发来的数据暂时存放,然后再提交给Server。这种架构经常和Master-Node-Client架构做比较,一般适用于跨机房、跨网络的中型网络架构的监控。
  • Master-Node-Client架构:最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境。每个Node同时也是一个Server端,Node下面可以接Proxy,也可以直接接Client。

在这里插入图片描述

3、Zabbix部署实战

3.1 Zabbix源码安装及部署
3.1.1 部署架构

在这里插入图片描述

本次安装部署采用Server-client部署架构,如图所示Server端直接连到代理端。

3.1.2 安装Server端

由于Zabbix 6.0以上版本在Centos 7上不支持Server部署,本次以Zabbix 5.0版本测试。

在这里插入图片描述

1)系统环境配置

#1、关闭selinux
动态生效setenforce 0
配置/etc/selinux/config中SELINUX=设置为disabled#2、关闭防火墙
关闭防火墙# systemctl stop firewalld
#systemctl disable firewalld#3、准备mysql环境

2)下载安装包仓库

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
Retrieving https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.eaB8GC: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...1:zabbix-release-5.0-1.el7         ################################# [100%]

此时/etc/yum.repos.d/下会有一个zabbix.repo文件

3)安装Server端、mysql数据库和Web前端

#yum install zabbix-server-mysql zabbix-agent -y
Resolving Dependencies
--> Running transaction check
---> Package zabbix-agent.x86_64 0:5.0.36-1.el7 will be installed
---> Package zabbix-server-mysql.x86_64 0:5.0.36-1.el7 will be installed
…
Installed:zabbix-agent.x86_64 0:5.0.36-1.el7                                               zabbix-server-mysql.x86_64 0:5.0.36-1.el7                                              
Dependency Installed:OpenIPMI.x86_64 0:2.0.27-1.el7         OpenIPMI-libs.x86_64 0:2.0.27-1.el7             OpenIPMI-modalias.x86_64 0:2.0.27-1.el7         fping.x86_64 0:3.16-1.el7        libevent.x86_64 0:2.0.21-4.el7         net-snmp-libs.x86_64 1:5.7.2-49.el7_9.2         unixODBC.x86_64 0:2.3.1-14.el7                 
Complete!

4)安装前端软件包

# yum install centos-release-scl -y
#编辑zabbix.repo
[zabbix-frontend]
...
enabled=1
...
#安装前端软件包
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y

5)初始化数据库配置

#1、在mysql数据库中创建数据库用户并授权
# mysql -uroot -p -A
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'%' identified with mysql_native_password by 'password';
mysql> grant all privileges on zabbix.* to 'zabbix'@'%';
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;#2、导入初始架构和数据
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

6)为Zabbix server配置数据库

#编辑配置文件/etc/zabbix/zabbix_server.conf
DBPassword=password

7)为Zabbix配置正确的时区

#编辑配置文件/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai    #亚洲/上海 

8)启动Zabbix服务并查看

#启动Zabbix server和agent进程,并为它们设置开机自启:
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

查看zabbix服务启动情况

# netstat -nltp |grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1028/zabbix_agentd  
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      1623/zabbix_server  
tcp6       0      0 :::10050                :::*                    LISTEN      1028/zabbix_agentd  
tcp6       0      0 :::10051                :::*                    LISTEN      1623/zabbix_server

9)异常处理

#1、连接数据库失败,指定的socket有误
#错误信息:connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
#解决办法:由于mysql配置的socket和zabbix默认的socket路径不同,修改zabbix配置文件/etc/zabbix/zabbix_server.conf中的DBSocket选项
DBSocket=/tmp/mysql.sock#2、连接数据库失败,提示加密插件caching_sha2_password.so找不到
#错误信息:cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
#解决办法:在创建用户时指定mysql的加密插件with mysql_native_password
create user 'zabbix'@'%' identified with mysql_native_password by 'password';
3.1.3 配置Web端页面

1)登录Web访问页面http://192.168.112.121/zabbix

在这里插入图片描述

2)配置数据库连接

在这里插入图片描述

3)输入服务器详细信息

在这里插入图片描述

4)完成安装

在这里插入图片描述

5)Web界面登录,默认用户是Admin、密码是zabbix

在这里插入图片描述

6)修改界面语言为中文

在这里插入图片描述

在这里插入图片描述

3.1.4 被监控对象安装Agent代理

1)系统环境配置

#1、关闭selinux
动态生效setenforce 0
配置/etc/selinux/config中SELINUX=设置为disabled#2、关闭防火墙
关闭防火墙# systemctl stop firewalld
#systemctl disable firewalld

2)下载Agent安装包仓库

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rp

3)安装zabbix-agent

# yum install zabbix-agent -y

4)修改agent配置文件,指定zabbix server地址

# vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.112.121

5)启动服务并设置开机启动

systemctl start zabbix-agent
systemctl enable zabbix-agent

6)检查zabbix-agent端口状态

# netstat -nltp |grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1814/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      1814/zabbix_agentd
3.2 Zabbix监控页面配置
3.2.1 添加主机

在“配置->主机”中添加需要监控的主机,并选择监控模板指标

在这里插入图片描述

添加完成后,看到主机信息

在这里插入图片描述

在监测->主机中,能看到监控数据。同时在仪表盘中能看到当前主机的数量

3.2.2 自定义拓扑图

在“监测->拓扑图”中编辑拓扑图信息,比如添加服务器节点、建立链接关系、网络流量等

在这里插入图片描述

链接信息中填上标签“{Zabbix server:net.if.out[“ens33”].last(0)}”,可以在“主机->配置->监控项”中获得监控信息。

以上是分布式监控Zabbix的特性介绍、架构流程介绍以及安装部署实战,Zabbix功能相当丰富,需要在实际使用过程中再琢磨熟悉。


参考资料:

  1. https://www.zabbix.com/cn/
  2. https://blog.51cto.com/u_16099217/6370557
  3. https://blog.csdn.net/SmileLife_/article/details/126535575

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/76757.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式异步任务处理组件(七)

分布式异步任务处理组件底层网络通信模型的设计--如图: 使用Java原生NIO来实现TCP通信模型普通节点维护一个网络IO线程,负责和主节点的网络数据通信连接--这里的网络数据是指组件通信协议之下的直接面对字节流的数据读写,上层会有另一个线程负…

Linux下安装VMware虚拟机

目录 1. 简介 2. 工具/原料 2.1. 下载VMware 2.2. 安装 1. 简介 ​ VMware Workstation(中文名“威睿工作站”)是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 …

为什么list.sort()比Stream().sorted()更快?

真的更好吗&#xff1f; 先简单写个demo List<Integer> userList new ArrayList<>();Random rand new Random();for (int i 0; i < 10000 ; i) {userList.add(rand.nextInt(1000));}List<Integer> userList2 new ArrayList<>();userList2.add…

从零开始:手把手搭建 RocketMQ 单节点、集群节点实例

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…

240. 搜索二维矩阵 II

240. 搜索二维矩阵 II 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 240. 搜索二维矩阵 II https://leetcode.cn/problems/search-a-2d-matrix-ii/description/ 完成情况&#xff1a; 解题思路&#xff1a; 从…

配置root账户ssh免密登录并使用docker-machine构建docker服务

简介 Docker Machine是一种可以在多种平台上快速安装和维护docker运行环境&#xff0c;并支持多种平台&#xff0c;让用户可以在很短时间内在本地或云环境中搭建一套docker主机集群的工具。 使用docker-machine命令&#xff0c;可以启动、审查、停止、重启托管的docker 也可以…

《向量数据库指南》——腾讯云向量数据库Tencent Cloud Vector DB正式上线公测!提供10亿级向量检索能力

8月1日,腾讯云向量数据库(Tencent Cloud Vector DB)已正式上线公测。在腾讯云官网上搜索“向量数据库”,就可以正式体验该产品。 腾讯云向量数据库不仅能为大模型提供外部知识库,提高大模型回答的准确性,还可广泛应用于推荐系统、文本图像检索、自然语言处理等 AI 领域。…

ChatGPT已打破图灵测试,新的测试方法在路上

生信麻瓜的 ChatGPT 4.0 初体验 偷个懒&#xff0c;用ChatGPT 帮我写段生物信息代码 代码看不懂&#xff1f;ChatGPT 帮你解释&#xff0c;详细到爆&#xff01; 如果 ChatGPT 给出的的代码不太完善&#xff0c;如何请他一步步改好&#xff1f; 全球最佳的人工智能系统可以通过…

K8S kubeadm搭建

kubeadm搭建整体步骤 1&#xff09;所有节点进行初始化&#xff0c;安装docker引擎和kubeadm kubelet kubectl 2&#xff09;生成集群初始化配置文件并进行修改 3&#xff09;使用kubeadm init根据初始化配置文件生成K8S的master控制管理节点 4&#xff09;安装CNI网络插件&am…

【Ubuntu 18.04 搭建 DHCP 服务】

参考Ubuntu官方文档&#xff1a;https://ubuntu.com/server/docs/how-to-install-and-configure-isc-dhcp-server dhcpd.conf 手册页 配置&#xff1a;https://maas.io/docs/about-dhcp 实验环境规划 Ubuntu 18.04&#xff08;172.16.65.128/24&#xff09;dhcp服务端Ubuntu…

GD32F103VE点灯

GD32F103VE点灯主要用来学习端口引脚的输出配置。它由LED.c&#xff0c;LED.h&#xff0c;SoftDelay.c和main.c组成。 #include "gd32f10x.h" //使能uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t #include "SoftDelay.h"#include …

后端整理(集合框架、IO流、多线程)

1. 集合框架 Java集合类主要有两个根接口Collection和Map派生出来 Collection派生两个子接口 List List代表了有序可重复集合&#xff0c;可以直接根据元素的索引进行访问Set Set代表无序不可重复集合&#xff0c;只能根据元素本身进行访问 Map接口派生 Map代表的是存储key…

数据结构 二叉树(C语言实现)

绪论 雄关漫道真如铁&#xff0c;而今迈步从头越。 本章将开始学习二叉树&#xff08;全文共一万两千字&#xff09;&#xff0c;二叉树相较于前面的数据结构来说难度会有许多的攀升&#xff0c;但只要跟着本篇博客深入的学习也可以基本的掌握基础二叉树。 话不多说安全带系好&…

在windows下安装ruby使用gem

在windows下安装ruby使用gem 1.下载安装ruby环境2.使用gem3.gem换源 1.下载安装ruby环境 ruby下载地址 选择合适的版本进行下载和安装&#xff1a; 在安装的时候&#xff0c;请勾选Add Ruby executables to your PATH这个选项&#xff0c;添加环境变量&#xff1a; 安装Ruby成…

二进制安装K8S(单Master集群架构)

目录 一&#xff1a;操作系统初始化配置 1、项目拓扑图 2、服务器 3、初始化操作 二&#xff1a; 部署 etcd 集群 1、etcd 介绍 2、准备签发证书环境 3、master01 节点上操作 &#xff08;1&#xff09;生成Etcd证书 &#xff08;2&#xff09;创建用于存放 etcd 配置文…

.Net6 Web Core API --- Autofac -- AOP

目录 一、AOP 封装 二、类拦截 案例 三、接口拦截器 案例 AOP拦截器 可开启 类拦截器 和 接口拦截器 类拦截器 --- 只有方法标注 virtual 标识才会启动 接口拦截器 --- 所有实现接口的方法都会启动 一、AOP 封装 // 在 Program.cs 配置 builder.AddAOPExt();//自定义 A…

企业电子招标采购系统源码Spring Boot + Mybatis + Redis + Layui + 前后端分离 构建企业电子招采平台之立项流程图 tbms

&#xfeff; 项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&am…

Spring IOC

◆ 传统Javaweb开发的困惑 ◆ IoC、DI和AOP思想提出 ◆ Spring框架的诞生 Spring | Home IOC控制反转&#xff1a;BeanFactory 快速入门 package com.xiaolin.service.Impl;import com.xiaolin.dao.UserDao; import com.xiaolin.service.UserService;public class UserServic…

论文浅尝 | 预训练Transformer用于跨领域知识图谱补全

笔记整理&#xff1a;汪俊杰&#xff0c;浙江大学硕士&#xff0c;研究方向为知识图谱 链接&#xff1a;https://arxiv.org/pdf/2303.15682.pdf 动机 传统的直推式(tranductive)或者归纳式(inductive)的知识图谱补全(KGC)模型都关注于域内(in-domain)数据&#xff0c;而比较少关…

Java版本spring cloud + spring boot企业电子招投标系统源代码 tbms

​ 功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为…