【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://www.hqwc.cn/news/491797.html

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

相关文章

【电子通识】为什么单片机芯片上会有多组VDD电源?

在单片机芯片规格书中,我们经常能看到多个组VDD的设计,如下红框所示管脚都是VDD管脚。 为什么需要这样设计?只设置一个VDD管脚,把其他的VDD管脚让出来多做几个IO或是其他复用功能不好吗?接下来我们从单片机内部的电路结…

K8S—集群调度

目录 前言 一 List-Watch 1.1 list-watch概述 1.2 list-watch工作机制 二 集群调度 2.1 调度过程 2.2 Predicate 和 Priorities 的常见算法和优先级选项 2.3 调度方式 三 亲和性 3.1 节点亲和性 3.2 Pod 亲和性 3.3 键值运算关系 3.4 Pod亲和性与反亲和性 3.5 示例…

(202402)多智能体MetaGPT入门1:MetaGPT环境配置

文章目录 前言拉取MetaGPT仓库1 仅仅安装最新版2 拉取源码本地安装MetaGPT安装成果全流程展示 尝试简单使用1 本地部署大模型尝试(失败-->成功)2 讯飞星火API调用 前言 感谢datawhale组织开源的多智能体学习内容,飞书文档地址在https://d…

Spring Boot 接口请求日志(基于AOP和自定义注解)

一、需求 在Spring Boot应用中,实现接口请求日志记录功能,要求能够记录包括请求方法、接口路径及请求参数等核心信息,并提供灵活的开关配置。 二、方案概述 采用AOP(面向切面编程)结合自定义注解的方式实现。 具体…

springboot自定义注解实战

基础知识概述 aop 面向切面编程 1、切面(aspect)散落在系统各处的通用的业务逻辑代码,如日志模块,权限模块,事务模块等,切面用来装载pointcut和advice2、通知(advice)所谓通知指的…

AI时代 编程高手的秘密武器:世界顶级大学推荐的计算机教材

文章目录 01 《深入理解计算机系统》02 《算法导论》03 《计算机程序的构造和解释》04 《数据库系统概念》05 《计算机组成与设计:硬件/软件接口》06 《离散数学及其应用》07 《组合数学》08《斯坦福算法博弈论二十讲》 清华、北大、MIT、CMU、斯坦福的学霸们在新学…

【Leetcode】235. 二叉搜索树的最近公共祖先

文章目录 题目思路代码结果 题目 题目链接 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度…

深度学习手写字符识别:推理过程

说明 本篇博客主要是跟着B站中国计量大学杨老师的视频实战深度学习手写字符识别。 第一个深度学习实例手写字符识别 深度学习环境配置 可以参考下篇博客,网上也有很多教程,很容易搭建好深度学习的环境。 Windows11搭建GPU版本PyTorch环境详细过程 数…

抖音视频下载软件的优势|视频批量下载

抖音视频下载软件具有以下优势: 多种搜索方式:用户可以通过输入关键词进行批量视频提取,也可以通过分享链接进行单个视频的提取和下载。这样用户可以根据自己的需求选择最合适的搜索方式。 直观的界面设计:软件的界面分为五大块&…

分布式知识整理

分布式锁 以商场系统超卖现象举例 超卖现象一 现象: 商品卖出数量超出了库存数量。 产生原因: 扣减库存的动作在程序中进行,在程序中计算剩余库存,在并发场景下,导致库存计算错误。 代码复现 es.shutdown(); cycl…

ardupilot如何从四元数转旋转矢量

目录 文章目录 目录具体转换过程 本节主要记录四元数如何转成旋转矢量的推导过程,欢迎批评指正! 四元数可以方便地转换为旋转矢量,旋转矢量是一个三维向量,描述了旋转的方向和大小。在将四元数转换为旋转矢量时,我们首…

Linux之项目部署与发布

目录 一、Nginx配置安装(自启动) 1.一键安装4个依赖 2. 下载并解压安装包 3. 安装Nginx 4. 启动 nginx 服务 5. 对外开放端口 6. 配置开机自启动 7.修改/etc/rc.d/rc.local的权限 二、后端部署tomcat负载均衡 1. 准备2个tomcat 2. 修改端口 3…