prometheus与zabbix监控的对比介绍

一、普米与zabbix基本介绍

1、prometheus介绍

Prometheus的基本原理是Prometheus Server通过HTTP周期性抓取被监控组件的监控数据,任意组件只要提供对应的HTTP接口并且符合Prometheus定义的数据格式,就可以接入Prometheus监控。
工作流程大致分为收集数据,存储数据,展示监控数据,监控告警。
核心组件包括:
Exporters:监控数据采集器
Prometheus Server:负责对监控数据的获取,存储以及查询
AlertManager:告警流程管理
PushGateway:当网络需求无法满足时就可以使用PushGateway作为中转站。
Prometheus后端数据库用的自带的时序数据库TSDB,按时间索引性能更高。也支持其他远端数据库,但效率会有所下降。

普米架构图

2、Zabbix介绍

Zabbix的基础原理是Zabbix Server抓取监控组件的监控数据或者接收主动推送监控数据。支持在每个网络区域内部署一个Zabbix Proxy,即 Zabbix 的代理服务器,代理服务器采集当前区域的监控组件的监控数据。并将采集到的数据推送给 Zabbix Server 进行后续处理,
工作流程大致分为agent发送数据,sever存储数据,展示监控数据,监控告警。
核心组件:
Agent:主要负责采集数据并通过主动或者被动的方式采集数据发送到Server/Proxy,除此之外,为了扩展监控项,Agent还支持执行自定义脚本。
Server:要负责接收Agent/Proxy发送的监控信息,并进行汇总存储,触发告警等。
Zabbix Web : zabbix的GUI接口,通常与server运行在同一台机器上
Proxy:可选组件,常用于分布式监控环境中,代理Server收集部分被监控数据并统一发往Server端,减轻Sever端负载。
Zabbix Database支持常用的关系型数据库,如MySQL、PostgreSQL、Oracle等,默认是MySQL。现6.0版本支持TimescaleDB,关系数据库较常用,学习成本低。

zabbix架构图

二、功能测试对比

1、基础监控指标对比

注:本次监控指标测试以主要在用的LINUX、mysql对象为例。

监控LINUX主机指标对比:
Zabbix内置指标通过agent进行采集,agent安装后需要配置文件。
prometheus由官方提供node_exporter采集器进行采集。直接解压缩运行。

监控mysql指标对比:
Zabbix支持agent、agent2两种客户端,agent2集成部分数据库、ceph、red采集插件,不需要在客户端另外配置。
Prometheus由官方提供mysqld_exporter采集器进行采集。

监控指标测试结论:
采集指标项上:Prometheus相较zabbix监控指标项更细。
采集频率上:zabbix可根据指标自定义频率,prometheus通过统一参数scrape_interval配置采集频率。
自定义监控指标上:zabbix提供agent+自定义脚本方式采集、配置繁琐, prometheus需要对源码进行二次开发困难。
采集分组情况上:Zabbix可通过agent采集多个业务组件,管理方便。 Prometheus需要部署多个exporter采集不同的业务组件,服务端口不固定。

2、云原生k8s监控对比

Zabbix 6.0 LTS新增Kubernetes监控功能
多个维度采集指标:
Kubernetes节点和pods的自动发现和监控
无代理方式采集Kubernetes pods和节点的信息
获取Kubernetes节点主机高水平信息:
kube-controller-manager、kube-apiserver、kube-scheduler、kubelet

监控部署方式
ZABBIX6.0提供HELM方式部署,将ZABBIX AGENT和ZABBIX PROXY等部署在Kubernetes集群中。并提供相应的模板,对Kubernetes集群进行自动发现及数据采集。

测试结论
ZABBIX6.0LTS版本虽然支持Kubernetes监控,原生模板监控项目前无法满足所需采集指标,需再自定义定制更丰富的监控项。
Prometheus监控Kubernetes更有优势,k8s组件自带采集接口,普米自动发现k8s组件Targets,抓取metrics数据,且两者出自于统一基金会,适配度更佳,对集群数据采集更全面。

3、高可用架构对比

zabbix高可用 
Zabbix6.0 支持原生 Zabbix server 高可用HA集群。
Zabbix HA由多个zabbix_server实例或节点组成。每个节点独立配置,集群为主备模式,standby(备用)节点不进行数据收集、处理或其他任务,并且不监听端口,并保持一个最少的数据库连接。
在 Zabbix 仪表板或Runtime运行时的命令行上可监控 Zabbix 集群的状态。
Zabbix 支持部署Zabbix proxy ,有利于分担 Zabbix server 的负载。


普米高可用
支持Federation联邦集群机制。集群分布式类似于nginx的负载均衡模式。
联邦集群核心在于每一个prometheus server都包含一个用于获取当前实例中监控样本的接口 ,每个server处理接收监控数据。
不同类型的采集任务划分到不同的 Prometheus 实例中去执行,进行功能分片。


对比优缺点
高可用配置方面:Zabbix HA 配置简单,操作维护成本低。
普米需要考虑数据持久化的问题。分层架构带来的配置复杂,维护成本较高。
联邦模式可以实现prometheus监控prometheus。

4、部署方式、版本升级方式对比

zabbix部署、升级方式
支持 二进制文件安装、源代码包安装、容器中安装三种方式。
容器化部署和版本开发迭代最简单快捷,zabbix各组件容器中单独运行,互不影响。
纯容器化部署存在采集压力过大影响容器集群、数据持久化问题。
需部署客户端agent采集程序。
zabbix版本升级过程复杂,特别跨版本的升级,需完成大量检查、验证工作。升级版本sever和proxy需保持一致,agents 不是强制性的(但推荐)。


普米部署、升级方式
支持源代码包安装、容器中安装两种方式。监控、告警和界面都分属于不同的组件,都需要安装。
容器化部署更简单快捷,容器适配性更好。
客户端需安装exporter采集器命令。
普米目前版本更新不大,2.0升级包含许多向后不兼容的更改,官方也无实际升级步骤,只有更新版本的迁移指南。


两者对比优缺点
都可以容器化部署,普米部署更方便些。
zabbix客户端需安装agent服务,普米客户端安装exporter命令,zabbix-agent安装维护更复杂繁琐。
zabbix版本升级过程更复杂且迭代比较快。

三、选型建议-prometheus和zabbix全面对比情况

  所以,需要根据不同的IT架构选型适合当前环境的监控软件,在传统架构里zabbix更有优势,但在云原生下现阶段还是普米用的多点。

     There are many things that can not be broken!

     如果觉得本文对你有帮助,欢迎点赞、收藏、评论!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java SSM水质历史数据可视化设计myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM水质历史数据可视化设计是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主…

2023-我的CSDN创作之旅

1.博客内容与数量 2023年共发表博客59篇,内容主要集中在GIS,空间分析等领域 主要内容有: networkx学习 Geospatial Data Science Geocomputation ESDA in PySal SHAP Spatial Data Analysis BikeDNA 以下是对这几个章节主要内容的简…

Docker无法启动Postgresql容器

目录 问题描述解决问题 问题描述 拉取了一个Postgresql14.2的镜像,在docker run创建并运行容器之后使用docker ps发现容器没有跑起来,再次使用docker start也没跑起来。 docker run -d --name mypg -v psql-data:/var/lib/postgresql/data -e POSTGRES…

【Bug】Android BottomNavigationView 图标黑色色块问题

最近在研究Android Jetpack组件,在使用Navigation配合底部导航栏时,发现一个奇怪的问题,如下: 说明:图标来源于Iconfont开源图标库 我的第三个图标变成了一个黑色色块,这个问题前两天我遇见过&#xff0c…

web服务器nginx和Apache有什么区别?

随着互联网的快速发展,Web服务器在互联网应用中扮演着越来越重要的角色。其中,Nginx和Apache是两种广泛使用的Web服务器软件。尽管它们都可以实现Web服务器的功能,但Nginx和Apache在许多方面存在一些重要的区别。本文将探讨Nginx和Apache之间…

学习Vue 03-03 为TypeScript使用defineComponent支持

03 为TypeScript使用defineComponent支持 The defineComponent() method is a wrapper function that accepts an object of configurations and returns the same thing with type inference for defining a component. defineComponent() 方法是一个封装函数,它…

win2003搭建DNS服务器域名解析方法

可以搭建DNS服务器的系统有很多,这里以win2003举例。 要在Windows 2003上搭建DNS服务器,需要按照以下步骤操作: 一 配置DNS服务器 1、打开“控制面板”,选择“添加/删除程序”,点击“添加/删除Windows组件”。 2、在“Windows组件向导”中…

【技能---500G硬盘-Ubuntu 20.04安装分区参考】

文章目录 Ubuntu 20.04安装分区指导安装分区流程Ubuntu 系统分区关键一步----- 选择安装启动引导器的设备 Ubuntu 20.04安装分区指导 安装Ubuntu 20.04的时候可以自己指定各个内存空间的占用,值得注意的是,这里的分区有一定的技巧!&#xff0…

深度学习 Day24——J3-1DenseNet算法实战与解析

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制🚀 文章来源:K同学的学习圈子 文章目录 前言1 我的环境2 pytorch实现DenseNet算法2.1 前期准备2.1.1 引入库2.1.2 设…

Spring MVC RequestMappingInfo路由条件匹配

前言 我们已经知道,被RequestMapping标注的方法会被解析为 HandlerMethod,它也是 Spring MVC 中最常用的 Handler 类型。现在的问题是,HTTP 请求是如何路由到对应的 HandlerMethod?你可能脱口而出:根据请求的 Url 匹配…

知识图谱 vs GPT

简介: 当我们谈论知识图谱时,我们指的是一种结构化的知识表示形式,是一种描述真实世界中事物及其关系的语义模型,用于描述实体之间的关系。它通过将知识组织成图形结构,提供了一种更全面、准确和智能的信息处理方式。知…

【论文阅读笔记】Mip-NeRF 360: Unbounded Anti-Aliased Neural Radiance Fields

目录 概述摘要引言参数化效率歧义性 mip-NeRF场景和光线参数化从粗到细的在线蒸馏基于区间的模型的正则化实现细节实验限制总结:附录退火膨胀采样背景颜色 paper:https://arxiv.org/abs/2111.12077 code:https://github.com/google-research/…

分布式系统架构设计之分布式事务的概述和面临的挑战

在当今大规模应用和服务的背景下,分布式系统的广泛应用已经成为了一种必然的主流趋势。然后,伴随着分布式系统的应用范围的增长,分布式事务处理成为了一个至关重要的关键话题。在传统的单体系统中,事务处理通常相对简单&#xff0…

opencv006 绘制直线、矩形、⚪、椭圆

绘制图形是opencv经常使用的操作之一,库中提供了很多有用的接口,今天来学习一下吧! (里面的函数和参数还是有点繁琐的) 最终结果显示 函数介绍 直线 line(img, pt1, pt2, color, thickness, lineType, shift) img: 在…

django websocket

目录 核心代码 consumers.py from channels.generic.websocket import WebsocketConsumer from channels.exceptions import StopConsumer import datetime import time from asgiref.sync import async_to_sync class ChatConsumer(WebsocketConsumer):def websocket_conne…

【STM32】STM32学习笔记-编码器接口测速(20)

00. 目录 文章目录 00. 目录01. 预留02. 编码器测速接线图03. 编码器测速程序示例04. 程序下载05. 附录 01. 预留 02. 编码器测速接线图 03. 编码器测速程序示例 Encoder.h #ifndef __ENCODER_H #define __ENCODER_Hvoid Encoder_Init(void); int16_t Encoder_Get(void);#en…

someip中通过event方式通信,为什么实际使用时使用的是eventGroup?

someip是一种面向服务的可伸缩的协议,用于控制消息的汽车中间件的解决方案。someip提供了三种接口类型:Method,Event和Field,分别对应不同的通信机制和场景。 Event是一种主动发送的接口,用于通知客户端服务端的状态变化或者事件发生。Event可以按照一定的规则或者周期发…

IDEA中自动导包及快捷键

导包设置及快捷键 设置:Setting->Editor->General->Auto import快捷键 设置:Setting->Editor->General->Auto import java区域有两个关键选项 Add unambiguous imports on the fly 快速添加明确的导包 IDEA将在我们书写代码的时候…

JS中模块的导入导出

背景 学习js过程中,发现导入导出有的是使用的export 导出,import导入,有的是使用exports或module.exports导出,使用require导入,不清楚使用场景和规则,比较混乱。 经过了解发现,NodeJS 中&…

莫比乌斯函数

积性函数定义 若gcd(p,q)1,有f(p*q)f(p)*f(q),则f(x)是积性函数 其中规定f(1)1,对于积性函数有:所有的积性函数都可以用筛法求出 常见的积性函数有欧拉函数和莫比乌斯函数 筛法求莫比乌斯函数 const int N 1e9 5; const int …