【Prometheus】概念和工作原理介绍

目录

一、概述

1.1 prometheus简介

1.2 prometheus特点

1.3 prometheus架构图

1.4 prometheus组件介绍

1、Prometheus Server

2、Client Library

3、pushgateway

4、Exporters

5、Service Discovery

6、Alertmanager

7、grafana

1.5 Prometheus 数据流向

1.6 Prometheus监控什么

1.7 Zabbix和Prometheus区别

二、prometheus工作原理

2.1 prometheus工作模式

2.2 prometheus工作流程


一、概述


1.1 prometheus简介


Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。

文档地址

prometheus官网文档地址:Overview | Prometheus

prometheus中文文档地址:第1节:Prometheus 简介 - Prometheus 中文文档

1.2 prometheus特点


  • 多维度数据模型,时间序列数据由metrics名称和键值对来组成,数据库:Prometheus外置的远端存储通常会用:InfluxDB、openTsDB等
  • 灵活的查询语言(PromQL),可以对采集的metrics指标进行加法,乘法,连接等操作;
  • 可以直接在本地部署,不依赖其他分布式存储;
  • 通过基于HTTP上的拉取方式采集时序数据;
  • 可以通过中间网关pushgateway的方式把时间序列数据推送到prometheus server端;
  • 可通过服务发现或者静态配置来发现目标服务对象(targets)。
  • 有多种可视化图像界面,如Grafana等。
  • 高效的存储,每个采样数据占3.5 bytes左右,300万的时间序列,30s间隔,保留60天,消耗磁盘大概200G。

1.3 prometheus架构图


从上图可发现,Prometheus整个生态圈组成主要包括prometheus server,Exporter,pushgateway,alertmanager,grafana,Web ui界面,Prometheus server由三个部分组成,Retrieval,Storage,PromQL

  1. Retrieval负责在活跃的target主机上抓取监控指标数据
  2. Storage存储主要是把采集到的数据存储到磁盘中
  3. PromQL是Prometheus提供的查询语言模块。

1.4 prometheus组件介绍


1、Prometheus Server

Prometheus Server用于收集和存储时间序列数据。Prometheus server:服务核心组件,采用pull方式收集监控数据,通过http协议传输。并存储时间序列数据。Prometheus server 由三个部分组成:Retrival,Storage,PromQL

  • Retrieval:负责在活跃的target 主机上抓取监控指标数据。
  • Storage:存储,主要是把采集到的数据存储到磁盘中。默认为15天(可修改)。
  • PromQL:是Prometheus提供的查询语言模块。

2、Client Library

客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。

3、pushgateway

pushgatewy类似一个中转站,各个目标主机可上报数据到pushgatewy,然后prometheus server统一从pushgateway拉取数据。可以理解成目标主机可以上报短期任务的数据到Pushgateway,然后Prometheus server 统一从Pushgateway拉取数据。

4、Exporters

prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端,所有向promtheus server提供监控数据的程序都可以被称为exporter

5、Service Discovery

Service Discovery:服务发现,用于动态发现待监控的Target,Prometheus支持多种服务发现机制:文件、DNS、Consul、Kubernetes等等。

服务发现可通过第三方提供的接口,Prometheus查询到需要监控的Target列表,然后轮询这些Target 获取监控数据。该组件目前由Prometheus Server内建支持

6、Alertmanager

Alertmanager:是一个独立的告警模块,从Prometheus server端接收到“告警通知”后,会进行去重、分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件、钉钉、企业微信等。

  • Prometheus Server 仅负责生成告警指示,具体的告警行为由另一个独立的应用程序AlertManager负责;
  • 告警指示由 Prometheus Server基于用户提供的告警规则周期性计算生成,Alertmanager 接收到Prometheus Server发来的告警指示后,基于用户定义的告警路由向告警接收人发送告警信息。

7、grafana

Grafana:是一个跨平台的开源的度量分析和可视化工具,可以将采集的数据可视化的展示,并及时通知给告警接收方。其官方库中具有丰富的仪表盘插件。

1.5 Prometheus 数据流向


① Prometheus server 定期从配置好的 jobs 或者 exporters 中拉取 metrics,或者接收来自 Pushgateway 发送过来的metrics,或者从其它的Prometheus server中拉取 metrics。

② Prometheus server在本地存储收集到的 metrics,并运行定义好的 alerts.rules,记录新的时间序列或者向Alert manager推送警报。

③ Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警。

④ 在图形界面中,可视化采集数据。

1.6 Prometheus监控什么


级别

监控什么

exporter

网络

网络协议:http、dns、tcp、icmp;

网路硬件:路由器、交换机等

BlockBox Exporter;SNMP Exporter

主机

资源用量

node exporter

容器

资源用量

cadvisor

应用(包括Library)

延迟、错误,QPS,内部状态

代码集中集成Prometheus Client

中间件状态

资源用量,以及服务状态

代码集中集成Prometheus Client

编排工具

集群资源用量,调度等

Kubernetes Components

1.7 Zabbix和Prometheus区别


对比项

Prometheus

zabbix

Prometheus优势

zabbix优势

配置

配置文件

图形化+文件

更好的支持自动化配置

学习成本低

管理

二进制文件启动

LNMP+编译

轻量级server ,便于迁移和维护

client

丰富的client库

zabbix_agent自定义脚本

各种中间件、应用提供专业的exporter,监控项更全面

支持自定义监控项,对监控开发者的要求较高

数据存储方式

TSDB

MySQL

监控数据以时间为维度统计情况较多,时序数据库更适用于监控数据的存储,按时间索引性能更高

MySQL比较常用,学习成本低

数据处理

PromQL

MySQL

PromQL计算函数丰富,统计维度广

MySQL比较常用,学习成本低

二次开发

丰富的SDK

API

提供了Go、JAVA/Scala、Python等SDK二次开发更方便

API适配较为常用,学习成本低

对云环境的支持

原生支持容器监控

更适合物理机监控

自动发现容器,更好的适配k8s

告警方式

可按照标签分组,收敛

在次数上收敛

告警收敛方式更多样化

对比分析:从系统成熟度上看,Zabbix是老牌的监控系统:Zabbix是在1998年就出现的,系统功能比较稳定,成熟度较高。而Prometheus是最近几年才诞生的,虽然功能还在不断迭代更新,但站在巨人的肩膀之上,在架构设计上借鉴了很多老牌监控系统的经验;从数据存储方面来看,Zabbix采用关系数据库保存,这极大限制了Zabbix采集的性能,而Prometheus自研一套高性能的时序数据库,在V3版本可以达到每秒千万级别的数据存储,通过对接第三方时序数据库扩展历史数据的存储;从配置复杂度上看,Prometheus只有一个核心server组件,一条命令便可以启动,相比而言,其他系统配置相对麻烦,从社区活跃度上看,目前Zabbix比较活跃,但基本都是国内的公司参与,Prometheus在这方面占据绝对优势,社区活跃度虽然不如,但是受到CNCF的支持,后期的发展值得期待;从容器支持角度看,由于Zabbix出现得比较早,当时容器还没有诞生,自然对容器的支持也比较差。而Prometheus的动态发现机制,不仅可以支持swarm原生集群,还支持Kubernetes容器集群的监控,是目前容器监控最好解决方案。

总结:如果监控的是物理机,没话说就选 Zabbix,Zabbix在传统监控系统中,尤其是在服务器相关监控方面,占据绝对优势,甚至环境变动不会很频繁的情况下,Zabbix 也会比 Prometheus 好使;但如果是云环境的话,除非是 Zabbix 玩的非常溜,可以做各种定制,否则还是选择 Prometheus 吧,毕竟人家就是干这个的。Prometheus开始成为主导及容器监控方面的标配,并且在未来可见的时间内被广泛应用。如果是刚刚要上监控系统的话,不用犹豫了Prometheus + grafana+ alertManger 没错。


二、prometheus工作原理


2.1 prometheus工作模式


1. Prometheus Server 基于服务发现(Service Discovery)机制或静态配置获取要监视的目标(Target),并通过每个目标上的指标 exporter来采集(Scrape)指标数据;

2. Prometheus Server 内置了一个基于文件的时间序列存储来持久存储指标数据,用户可使用PromQL接口来检索数据,也能够按需将告警需求发往Altermanager完成告警内容发送;

3. 一些短期运行的作业的生命周期过短,难以有效地将必要的指标数据供给到Server端,它们一般会采用推送(Push)方式输出指标数据,Prometheus借助于Pushgateway 接收这些推送的数据,进而由server端进行抓取

2.2 prometheus工作流程


① Prometheus server可定期从活跃的(up)目标主机上(target)拉取监控指标数据,目标主机的监控数据可通过配置静态job或者服务发现的方式被prometheus server采集到,这种方式默认的pull方式拉取指标;也可通过pushgateway把采集的数据上报到prometheus server中;还可通过一些组件自带的exporter采集相应组件的数据;

② Prometheus server把采集到的监控指标数据保存到本地磁盘或者数据库;

③Prometheus采集的监控指标数据按时间序列存储,通过配置报警规则,把触发的报警发送到alertmanager;

④ Alertmanager通过配置报警接收方,发送报警到邮件,微信或者钉钉等

⑤ Prometheus 自带的web ui界面提供PromQL查询语言,可查询监控数据

⑥Grafana可接入prometheus数据源,把监控数据以图形化形式展示出


参考文章:

prometheus和zabbix的对比_prometheus zabbix-CSDN博客

Promethues原理详解_prometheus工作原理-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

2024国际生物发酵展览会独家解读-力诺天晟科技

参展企业介绍 北京力诺天晟科技有限公司,专业致力于智能仪器仪表制造,工业自动控制系统用传感器、变送器的研发、设计、销售和服务。 公司坐落于首都北京行政副中心-通州区,下设生产子公司位于河北香河经济开发区,厂房面积 300…

恢复软件哪个好用?记好这3个文件恢复宝藏!

“现在市面上的恢复软件太多啦!哪款恢复软件比较好用呢?大家可以给我推荐几个靠谱的恢复软件或者方法吗?感谢!” 在日常使用电脑的过程中,文件丢失或删除是一个常见的问题,而恢复软件成为解决这一问题的得力…

B端系统美观和易用上的缺失,该如何补位?

Hi,我是贝格前端工场的老司机,客户对B端系统的界面和体验要求越来越高,但是很多系统在上线之后有很多缺失,本文就列举缺失现象,给出一些补位策略,欢迎友友们支持关注我。 一、缺失的具体表现 在B端系统中…

matlab滤波器设计

1、内容简介 略 51-可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 matlab滤波器设计-butter、ellip、cheby1、cheby2_哔哩哔哩_bilibili 4、参考论文 略

【项目部署上线】宝塔部署前端Docker部署后端

【项目部署上线】宝塔部署前端&Docker部署后端 文章目录 【项目部署上线】宝塔部署前端&Docker部署后端1.安装依赖1.1 安装mysql1.2 安装Canal1.3 安装redis1.4 安装rabbitmq1.5 安装nacos 2. 部署前端3. 部署后端 1.安装依赖 1.1 安装mysql docker run -d -p 3306:3…

高效!中科院2区SCI,不到两个月录用!审稿人很给力!

【SciencePub学术】 JOURNAL OF ENVIRONMENTAL SCIENCES IF(2022):6.9,JCR1区,中科院2区 数 期刊数据指标 ISSN:1001-0742 IF(2022):6.9 自引率:4.30% 年发文量:300篇左右 国人占比&…

【其他】简易代码项目记录

1. KeypointDetection 1.1. CharPointDetection 识别字符中的俩个关键点。 1.2. Facial-keypoints-detection 用于检测人脸的68个关键点示例。 1.3. Hourglass-facekeypoints 使用基于论文Hourglass 的模型实现人体关键点检测。 1.4. Realtime-Action-Recognition containing:…

2024年2月16日优雅草蜻蜓API大数据服务中心v1.1.1大更新-UI全新大改版采用最新设计ui·增加心率计算器·退休储蓄计算·贷款还款计算器等数接口

2024年2月16日优雅草蜻蜓API大数据服务中心v1.1.1大更新-UI全新大改版采用最新设计ui增加心率计算器退休储蓄计算贷款还款计算器等数接口 更新日志 前言:本次更新中途跨越了很多个版本,其次本次ui大改版-同步实时发布教程《带9.7k预算的实战项目layuiph…

042 继承

代码实现 首先定义Person类(人类) /*** 人的基础特征** author Admin*/ public class Person {/*** 姓名*/String name;/*** 生日*/Date birthday;/*** 手机号码*/String tel;/*** 身份证号码*/String idCode;public Person() {}public Person(String …

计算机底层如何存储数据

文章目录 进制的分类二进制转十进制十进制转二进制二进制转八进制二进制转十六进制八进制十六进制转二进制各进制间的转换 计算机世界中只有二进制,所以计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。 进制的分类 十进制&#…

如何绕过校园网?

最近可能没有什么好的话题了,会以笔记为主发博客 等我找到一些好的项目再发使用体验或教程吧 原文地址:如何绕过校园网? - Pleasure的博客 下面是正文内容: 前言 这应该是每一个大学生都会遇到的问题,宿舍中的校园…

搭建非maven spring boot项目 并且idea进行打包

1.所需jar包 2.搭建web项目 3 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication public class SpringBootTemplateApplications { public static void main(String\[\] ar…

超全的数据可视化图表组件,建议收藏!

直观的图表可以让受众理解复杂的数据,图表也分为很多种类,不同的图表的适用场合不同,小编对【派可数据 BI】的可视化组件进行梳理,根据使用场景,将可视化组件划分了以下几类:指标、趋势、比较、时序、空间、…

Java学习笔记------多态

什么是多态 同类型的对象,表现出的不同形态 多态的表现形式 父类类型 对象名称子类对象; 多态的前提 有继承关系 有父类引用指向子类对象 有方法重写 多态调用成员的特点 变量调用:编译看左边,运行也看左边 方法调用&am…

【Linux运维系列】vim操作

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Vue.js+SpringBoot开发生活废品回收系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 资源类型&资源品类模块3.3 回收机构模块3.4 资源求购/出售/交易单模块3.5 客服咨询模块 四、免责说明 一、摘要 1.1 项目介绍 生活废品回收系统是可持续发展的解决方案,旨在鼓…

Jessibuca 插件播放直播流视频

jessibuca官网&#xff1a;http://jessibuca.monibuca.com/player.html git地址&#xff1a;https://gitee.com/huangz2350_admin/jessibuca#https://gitee.com/link?targethttp%3A%2F%2Fjessibuca.monibuca.com%2F 项目需要的文件 1.播放组件 <template ><div i…

JavaWeb——006MYSQL(DDLDML)

这里写目录标题 数据库开发-MySQL首先来了解一下什么是数据库。1. MySQL概述1.1 安装1.1.1 版本1.1.2 安装1.1.3 连接1.1.4 企业使用方式(了解) 1.2 数据模型1.3 SQL简介1.3.1 SQL通用语法1.3.2 分类 2. 数据库设计-DDL2.1 项目开发流程2.2 数据库操作2.2.1 查询数据库2.2.2 创…

乡村研学|乡村研学小程序|基于微信小程序的乡村研学平台设计与实现(源码+数据库+文档)

乡村研学小程序目录 目录 基于微信小程序的乡村研学平台设计与实现 一、前言 二、系统功能设计 三、系统实现 1、微信小程序前台 2、管理员后台 &#xff08;1&#xff09;乡村研学管理 &#xff08;2&#xff09;商品信息管理 &#xff08;3&#xff09;商品类型管理 …

【Vuforia+Unity】AR04-地面、桌面平面识别功能(Ground Plane Target)

不论你是否曾有过相关经验,只要跟随本文的步骤,你就可以成功地创建你自己的AR应用。 官方教程Ground Plane in Unity | Vuforia Library 这个功能很棒,但是要求也很不友好,只能支持部分移动设备,具体清单如下: 01.Vuforia的地面识别功能仅支持的设备清单: Recommended…