Prometheus数据模型与查询语言:构建高效监控系统的关键

🐇明明跟你说过:个人主页

🏅个人专栏:《Prometheus:监控的神》 🏅

🔖行路有良友,便是天堂🔖

目录

一、引言

1、Prometheus诞生史

二、Prometheus的数据模型与查询语言

1、数据模型

2、Prometheus Query Language(PromQL)

三、Prometheus的监控原理

1、Pull vs Push模式

2、时间序列数据的收集与存储

3、数据的聚合与计算


一、引言

1、Prometheus诞生史

Prometheus 是由 SoundCloud 开发的,最初于 2012 年发布。它起源于 SoundCloud 的监控需求,他们需要一种能够有效处理大规模、动态变化的系统和服务监控的解决方案。由于市场上缺乏满足其需求的现有解决方案,SoundCloud 决定开发自己的监控工具。

在开发过程中,SoundCloud 的工程师们将注意力集中在设计一个易于操作、高度可扩展且具有强大查询功能的监控系统上。他们创建了 Prometheus 的核心组件,并在实际生产环境中进行了测试和验证。

随着时间的推移,Prometheus 在 SoundCloud 内部得到了广泛应用,并逐渐成为了他们的核心监控平台。随着对 Prometheus 的需求不断增加,SoundCloud 决定将其开源,以便其他组织也能够受益于该技术。

2015 年,Prometheus 成为了 Cloud Native Computing Foundation(CNCF)的一部分,并得到了更广泛的社区支持和贡献。自此以后,Prometheus 继续迅速发展,成为了云原生生态系统中最受欢迎和广泛使用的监控工具之一。其强大的功能、灵活的架构以及活跃的社区支持使其成为了许多组织在容器化和微服务架构中的首选监控解决方案之一。

二、Prometheus的数据模型与查询语言

1、数据模型

Prometheus 的数据模型是其核心功能之一,它定义了 Prometheus 收集和存储数据的方式。以下是 Prometheus 数据模型的主要组成部分:

1. 时间序列(Time Series):

  • 时间序列是 Prometheus 中的基本数据单元,它由一个唯一的指标名称(metric name)和一组键值对标签(key-value pairs labels)组成。时间序列表示了一段时间内某个指标的值随时间变化的情况。例如,返回状态码为 200 的请求数量随时间的变化。

2. 指标(Metrics):

  • 指标是 Prometheus 收集的数据,通常表示系统的某种状态或行为。每个指标都有一个唯一的名称,并且可以与一个或多个标签关联。Prometheus 内置了一些常见的指标,如 CPU 使用率、内存使用率等,同时也支持用户自定义的指标。

3. 标签(Labels):

  • 标签是用于区分时间序列的附加信息,它们以键值对的形式与指标关联。标签可以用来标识时间序列的来源、实例、环境等属性,从而更灵活地进行数据查询和分析。

4. 采样(Sampling):

  • Prometheus 使用采样(sampling)的方式来存储时间序列数据。它在每个时间点对时间序列进行采样,记录指标的值。默认情况下,Prometheus 每秒钟对每个时间序列进行一次采样,但可以通过配置进行调整。

5. 度量类型(Metric Types):

  • Prometheus 支持四种主要的度量类型:Counter、Gauge、Histogram 和 Summary。这些度量类型对应不同类型的指标数据,例如计数器、仪表盘、直方图和摘要。

6. 标签匹配(Label Matching):

  • 在 PromQL(Prometheus 查询语言)中,可以使用标签匹配来选择特定的时间序列进行查询和分析。标签匹配允许用户根据指标名称和标签值进行灵活的数据过滤和筛选

2、Prometheus Query Language(PromQL)

Prometheus Query Language(PromQL)是用于查询和分析 Prometheus 数据的查询语言。它提供了丰富的功能和灵活的语法,使用户能够执行各种复杂的数据查询、聚合和计算操作。以下是 PromQL 的主要特点和用法:

1. 基本查询:

  • 使用基本查询语法可以获取指定时间范围内的时间序列数据。例如,http_requests_total 可以获取所有 http_requests_total 指标的时间序列数据。

2. 标签过滤:

  • 可以使用标签过滤功能根据指标名称和标签值筛选特定的时间序列数据。例如,http_requests_total{method="GET"} 可以获取 HTTP GET 请求的时间序列数据。

3. 聚合操作:

  • PromQL 支持多种聚合操作,如求和(sum)、计数(count)、平均值(avg)、最大值(max)、最小值(min)等。这些聚合操作可以对时间序列数据进行汇总和统计。例如,sum(http_requests_total) 可以计算所有时间序列的请求总数。

4. 函数操作:

  • PromQL 提供了丰富的内置函数,用于对时间序列数据进行处理和计算。这些函数包括数学函数、字符串函数、时间函数等。例如,rate() 函数用于计算时间序列数据的速率。

5. 向量操作:

  • PromQL 中的向量操作允许对多个时间序列进行操作和计算。可以对多个时间序列进行聚合、筛选、组合等操作。例如,可以通过 sum(rate(http_requests_total[5m])) 计算最近 5 分钟的 HTTP 请求速率总和。

6. 子查询:

  • PromQL 支持嵌套子查询,可以在一个查询中使用另一个查询的结果。这样可以实现更复杂的数据分析和计算操作。例如,可以通过子查询计算两个指标的差异。

7. 图表展示:

  • PromQL 查询结果可以通过图表展示工具(如 Grafana)进行可视化展示,以便用户更直观地理解和分析监控数据。

三、Prometheus的监控原理

1、Pull vs Push模式

Prometheus的Pull模式与Push模式在数据收集方式、使用场景、优势以及挑战等方面存在显著的差异。

  • Pull模式是指Prometheus定期从静态配置的监控目标或者基于服务发现自动配置的目标中拉取数据。在这种模式下,Prometheus服务器主动向目标发出请求,获取所需的监控数据。每个被监控的主机可以通过专用的exporter程序提供输出监控数据的接口,Prometheus服务器则通过HTTP协议周期性地从这些接口中采集数据。Pull模式的特点是有拉取间隔,不能及时获取数值的变化,因此需要进一步的数据处理。然而,它在告警时可以按照策略分片,仅拉取需要的数据,并且支持聚合场景。此外,在云原生环境中,Pull模式更有优势,因为它可以通过服务发现对所有需要进行监控的节点进行统一的数据拉取。
  • Push模式则是指由被监控的服务主动将数据推送到指定的接收端。在这种模式下,每个被监控的服务都需要部署一个上报数据的客户端,并配置监控服务器的信息。Pushgateway就是这样一个中间组件,它允许被监控的服务将数据推送到其中,然后Prometheus再从Pushgateway中拉取这些数据。然而,这种方式会加大部署的难度,因为需要在每个被监控的服务中都进行配置。

Pull模式更适合大规模、动态变化的云原生环境,而Push模式可能在某些特定场景下更为适用。在选择使用哪种模式时,需要根据实际的监控需求和场景进行权衡。

2、时间序列数据的收集与存储

时间序列数据的收集与存储是监控系统中的关键部分,它涉及到从不同数据源采集数据,并将其有效地存储以供后续查询和分析。

在监控系统中,Prometheus 是一种常见的时间序列数据库,其收集和存储时间序列数据的过程如下:

1. 数据收集:

  • Pull 模式:Prometheus 使用 Pull 模式从各个被监控的目标(如应用程序、服务、系统)定期拉取指标数据。被监控的目标必须提供一个 HTTP 服务,用于响应 Prometheus 的拉取请求并提供指标数据。
  • Push 模式:某些情况下,被监控的目标无法提供 HTTP 服务,或者需要更加灵活的数据采集方式。这时可以采用 PushGateway 等工具,由被监控的目标将数据推送到 PushGateway,再由 Prometheus 从 PushGateway 拉取数据。

2. 数据存储:

  • 本地存储:Prometheus 使用一种高效的时间序列存储引擎,将收集到的时间序列数据存储在本地磁盘上。这种存储引擎使用一种紧凑且高效的格式来存储数据,以便于快速的查询和检索。
  • 远程存储:对于长期存储或者大规模数据的需求,可以将时间序列数据远程存储到其他存储系统中,如云存储服务、分布式文件系统等。Prometheus 提供了远程存储适配器(Remote Write),可以将数据推送到远程存储系统,以便于长期存储和分析。

3. 数据保留策略:

  • Prometheus 允许配置数据的保留策略,以控制数据的存储周期和存储量。可以设置数据的保留时间、存储容量等参数,以满足不同的需求。

3、数据的聚合与计算

数据的聚合与计算在监控系统中是非常重要的,它们帮助用户从海量的时间序列数据中提取有价值的信息和见解。在 Prometheus 中,数据的聚合与计算通常通过 PromQL(Prometheus 查询语言)来实现,主要包括以下几个方面:

1. 数据聚合:

  • 聚合函数:PromQL 提供了各种聚合函数,如 sum、avg、max、min 等,用于对多个时间序列数据进行聚合计算。
  • 标签匹配:可以使用标签匹配功能,根据标签对时间序列进行筛选和分组,然后对每组数据进行聚合计算。

2. 数据计算:

  • 算术运算:PromQL 支持常见的算术运算符,如加法、减法、乘法、除法等,用于对时间序列数据进行基本的数值计算。
  • 函数操作:PromQL 提供了丰富的函数库,包括数学函数、逻辑函数、字符串函数等,用户可以利用这些函数对时间序列数据进行复杂的计算和处理。
  • 比较操作:可以使用比较运算符(如等于、大于、小于等)对时间序列数据进行比较,以实现条件判断和筛选。

3. 数据转换:

  • 滑动窗口计算:Prometheus 支持滑动窗口计算,可以通过类似 rate、increase 等函数对时间序列数据进行滑动窗口的计算,以获取时间序列数据的增长率、速率等信息。
  • 时间戳处理:PromQL 提供了一些函数用于处理时间戳数据,如 timestamp、time、timefmt 等,可以对时间戳进行格式化、转换、截取等操作。

4. 数据可视化:

  • Grafana 等监控可视化工具提供了丰富的图表和面板,用户可以通过配置 PromQL 查询来实现各种复杂的数据可视化需求,从而直观地展示监控数据的趋势、变化和关联性。

通过数据的聚合与计算,用户可以从海量的时间序列数据中提取出有用的统计信息、趋势分析、异常检测等,帮助用户更好地理解系统和应用的运行情况,及时发现和解决问题,提升系统的稳定性和性能。 PromQL 提供了强大的功能和灵活的语法,使得用户能够轻松地实现各种复杂的数据分析和计算任务。

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Prometheus的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!

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

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

相关文章

想要应聘前端工程师——了解前端招聘需求

市场对前端工程师的需求依然旺盛。所谓知己知彼,百战不殆,分析各个公司对前端工程师的招聘需求,一方面可以了解到前端各细分领域在企业的需求情况,调整自己对岗位和薪资的期待,另一方面可以获得各种前端技术在企业中的应用情况,调整自己的学习和面试准备方向。因篇幅所限…

Office Word自动编号转文本

原理 使用office自带的宏功能,一键替换 过程 调出word的“开发工具”选项 文件->选项->自定义功能区->选中开发工具->确定 创建宏 开发工具->宏->创建宏 编写宏 在弹出来的框里,替换代码为 Sub num2txt() ActiveDocument.…

分布式版本控制系统——Git

分布式版本控制系统——Git 一、Git安装二、创建版本库三、将文件交给Git管理四、Git的工作区和暂存区1.工作区(Working Directory)2.版本库 五、版本回退和撤销修改1.版本回退2.撤销修改 六、删除文件七、常用基础命令总结八、参考 分布式版本控制系统&…

ETL简介以及使用ETL(Kettle)进行数据接入的具体例子

目录 ETL介绍 ETL简介 ETL包含的三部分 ETL基本概念 ETL资源库 ETL变量 业务表梳理以及接入规划 数据接入流程 业务表梳理 ETL任务规范 接入规划 数据接入中的方便工具 具体例子 导出生产表信息 1、ORACLE 2、MYSQL ETL数据增量抽取任务开发 1、ORACLE通用流程…

外观模式【结构型模式C++】

1.概述 外观模式是一种结构型设计模式, 能为程序库、 框架或其他复杂类提供一个简单的接口。 2.结构   外观角色(Facade):为多个子系统对外提供一个共同的接口,知道哪些子系统负责处理请求,将客户端的请…

机器学习-保险花销预测笔记+代码

读取数据 import numpy as np import pandas as pddatapd.read_csv(rD:\人工智能\python视频\机器学习\5--机器学习-线性回归\5--Lasso回归_Ridge回归_多项式回归\insurance.csv,sep,) data.head(n6) EDA 数据探索 import matplotlib.pyplot as plt %matplotlib inlineplt.hi…

六天以太坊去中心化租房平台,前端+合约源码

六天以太坊去中心化租房平台 概述项目结构合约部署运行项目功能介绍一、首页二、房东后台我的房屋我的订单上架新房屋 三、租户后台我的房屋我的订单 四、仲裁后台 下载地址 概述 六天区块链房屋租赁系统,采用去中心化的方式实现了房屋的租赁功能。房东可在平台上托…

Linux基础——Linux开发工具(gcc/g++,gdb)

前言:在上一篇我们简单介绍了yum,vim的一些常用的指令和模式,现在让我们来进一步了解其他的Linux环境基础开发工具gcc/g,gdb。 如果对前面yum和vim有什么不懂的建议回顾去回顾上期知识!!! Linu…

C语言基础:初识指针(二)

当你不知道指针变量初始化什么时,可以初始化为空指针 int *pNULL; 我们看NULL的定义,可以看出NULL是0被强制转化为Void* 类型的0;实质还是个0; 如何避免野指针: 1. 指针初始化 2. 小心指针越界 3. 指针指向空间…

debian gnome-desktop GUI(图形用户界面)系统

目录 🌞更新 🎨安装 🍎分配 🛋️重启 🔑通过VNC连接 debian gnome-desktop 🌞更新 sudo apt update sudo apt -y upgrade 🎨安装 sudo apt -y install task-gnome-desktop 这个过程比…

Java设计模式 _结构型模式_适配器模式

一、适配器模式 **1、适配器模式(Adapter Pattern)**是一种结构型设计模式。适配器类用来作为两个不兼容的接口之间的桥梁,使得原本不兼容而不能一起工作的那些类可以一起工作。譬如:读卡器就是内存卡和笔记本之间的适配器。您将…

Sy8网络管理命令(ubuntu23.10和centos8)

前言、 本次实验主要是扩展学习,不仅限在课本的内容。毕竟课本的内容太过于陈旧了。需要的童鞋看看。 说明:(书本中sy9”第3.实验内容“大家还是要做下。) 1、使用ubuntu做实验的童鞋只要看第二、三、四、七章节的部分内容。 2、使…

单片机为什么有多组VDD?

以前我在画尺寸小的PCB时,比较头痛,特别是芯片引脚又多的,芯片底下,又不能打太多过孔。 可能有些老铁也比较好奇,为什么一个单片机芯片,有这么多组VDD和VSS。 比如下面这个100个引脚的STM32单片机。 有5组…

Blender基础操作

1.移动物体: 选中一个物体,按G,之后可以任意移动 若再按X,则只沿X轴移动,同理可按Y与Z 2.旋转物体: 选中一个物体,按R,之后可以任意旋转 若再按X,则只绕X轴旋转&…

STM32、GD32等驱动AMG8833热成像传感器源码分享

一、AMG8833介绍 1简介 AMG8833是一种红外热像传感器,也被称为热感传感器。它可以用来检测和测量物体的热辐射,并将其转换为数字图像。AMG8833传感器可以感知的热源范围为-20C到100C,并能提供8x8的像素分辨率。它通过I2C接口与微控制器或单…

全面解析平台工程与 DevOps 的区别与联系

平台工程的概念非常流行,但很多开发人员仍然不清楚它是如何实际运作的,这是非常正常的。 平台工程是与 DevOps 并行吗?还是可以相互替代?或者 DevOps 和平台工程是两个完全不同的概念? 一种比较容易将两者区分开来的方…

Feign负载均衡

Feign负载均衡 概念总结 工程构建Feign通过接口的方法调用Rest服务(之前是Ribbon——RestTemplate) 概念 官网解释: http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feign Feign是一个声明式WebService客户端。使用Feign能让…

AI大模型探索之路-训练篇5:大语言模型预训练数据准备-词元化

系列文章目录🚩 AI大模型探索之路-训练篇1:大语言模型微调基础认知 AI大模型探索之路-训练篇2:大语言模型预训练基础认知 AI大模型探索之路-训练篇3:大语言模型全景解读 AI大模型探索之路-训练篇4:大语言模型训练数据…

法律知识学习考试系统 C#+uniapp+asp.net微信小程序

技术要求:后端C#,安卓app,mysql数据库 系统分为管理员、教师端和学生端: 管理员端实现管理员的注册登录以及教师和学生的注册、法律法规内容的发布与更新、法律法规页面的评论的添加与删除、内容查询、知识小测的内容发布与删除、问卷调查的发…

云计算和边缘计算究竟有什么不同

在数据时代,无论是人的活动还是机器的运作都会产生各种各样海量的数据。在对数据梳理和筛选过程中,计算机的运算处理必不可少。为了减少本地计算机算力成本等限制,越来越多的企业选择了云计算和边缘计算。今天,德迅云安全就带您来…
最新文章