Prometheus 云原生 - Prometheus 数据模型、Metrics 指标类型、Exporter 相关

目录

开始

Prometheus 数据类型

简单理解

时序样本

格式 和 命名要求

Metrics 指标类型

Counter 计数器

Gauge

Histogram

Summary

Exporter 相关

概述

Exporter 类型

Exporter 规范


 

开始


Prometheus 数据类型

简单理解

a)安装好 Prometheus 后会暴露一个 /metrics 的 HTTP 服务(相当于安装了 prometheus_exporter),通过配置(默认会加上 /metrics),Prometheus 就可以采集到这个 /metrics 里面的所有监控样本数据,例如:

prometheus.yml 文件中:

b)Prometheus 存储的是时序数据,也就是按照 时间的维度 存储连续的数据集合(指标名称 和 标签 来做唯一标识),例如如下:

# /metrics 页面中的数据(不显示时间):
prometheus_http_requests_total{code="200",handler="/api/v1/label/:name/values"} 3# 非 /metrics 页面中的数据实际在数据库中存储的(带个毫秒级的 unix 时间戳):
prometheus_http_requests_total{code="200",handler="/api/v1/label/:name/values"} @133734964723510 3# 上述格式: 指标名称 + 标签 + 时间戳 + 值
  • 指标名称:用于描述系统上要测定的某个特征,例如上述 prometheus_http_requests_total .
  • 标签:键值对数据,附加在 指标名称 后面,让指标能够支持多维度特征,例如  {code="200",handler="/api/v1/label/:name/values"}

c)双下划线标签是 Prometheus系统默认标签,是不会显示在 /metrics 页面中的. 

在 Prometheus 的 Target 中,鼠标移到 Labels 上,会显示如下:

常见标签如下:

  • __address:当前 target 实例的 套接字(ip:port) 地址.
  • __metrics_path:采集当前 target 使用的 url 路径,默认为 /metrics.
  • __scheme:采集当前 target 上指标数据使用的协议(http 或 https).
  • __scrape_interval:这个参数指定 Prometheus 以多长的时间间隔抓取一次目标的数据。
  • __scrape_timeout:这个参数定义了 Prometheus 抓取目标数据的超时时间。如果抓取操作在指定时间内未完成,Prometheus 将放弃这次抓取。
  • __param:传递 url 参数中第一个参数的值.
  • __name:此标签是标识指标名称的预留标签,能够使用标签选择器对指标名称进行过滤.

时序样本

按照某个时间维度采集的数据,称为样本,值包含:

  • 一个毫秒级的 unix 时间戳

  • 一个 float64 值

例如如下:

prometheus_http_requests_total{code="200",handler="/api/v1/label/:name/values"} @133734964723510 3

上述格式: 指标名称 + 标签 + 时间戳 + 值.

Ps:样本中的时间戳在 /metrics 页面中是不会显示的,只有在 prometheus 数据库中才能看到.

格式 和 命名要求

Prometheus 时序格式中包含 指标名称 和 标签:

<metric name>{<label name>=<label value>, ...}

例如,指标名称为 prometheus_http_requests_total 和 标签为 {code="200",handler="/api/v1/label/:name/values"} 如下

prometheus_http_requests_total{code="200",handler="/api/v1/label/:name/values"}

Ps:Prometheus指标名称 和 标签名/标签值 可以包含 ASCII 字母、数字、下划线、冒号.  但是必须匹配正则表达式  [a-zA-Z_:][a-zA-Z0-9_:]* ,也就是说开头的第一个字符一定不能是数字!!!  后面自定要 Labels 的时候一定要注意!!!

Metrics 指标类型

Counter 计数器

是一个单调递增的数值.  主要特点就是它的值 只增不减、除非被重置(例如系统重启).

通常用来记录某段时间内 http 请求增长率.... 

Count 并不会直接作用,而是需要借助 rate、irate 等函数来生成样本数据的变化状况(增长率)如下:

a)获取 1 小内,该指标下各时间序列上的 http 总请求数的增长速率

rate(prometheus_http_requests_total[1h]) 

b)irate 为高灵敏度函数,用于计算指标的瞬时速率,基于样本范围内的最后两个样本进行计算 

irate(prometheus_http_requests_total[1h])

Gauge

Gauge 是一种用于记录可以任意上下变化的数值指标类型. 与 Counter 单调递增不同,Gauge 可增可减,使得 Gauge 适合用来监控瞬时值或频繁变化的值.

Gauge 常用于进行 求和、平均值、最大值、最小值 等聚合计算,经常会搭配 PromQL 的 delta 使用.

a)返回该服务器上的CPU温度与1小时之前的差异

delta(cpu_temp_celsius{host="node_exporter"}[1h])

 

Histogram

用于记录数据分布的指标类型.  通过将数据划分成多个桶(buckets),统计每个桶中的样本数量,从而提供数据的分布情况,对于监控请求的延迟、响应时间非常有用.

例如统计在 0~15 ms 之间的请求数有多少,在 10~20ms 之间的请求数有多少.  这样可以快速分析系统慢的原因.

从 /metrics 页面中可以看出这些指标,以及值

a)在 handler 为 /metrics 的情况下,响应时间小于等于 0.1 秒的请求数是 612

prometheus_http_request_duration_seconds_bucket{handler="/metrics",le="0.1"} 612

b)在 handler 为 /metrics 的情况下,响应时间小于等于 0.2 秒的请求数是 612

prometheus_http_request_duration_seconds_bucket{handler="/metrics",le="0.2"} 612

结合上一个数据,这意味着响应时间在 0.1 秒到 0.2 秒之间的请求数是 0,因为前一个桶(le="0.1")的请求数也是 612

c)在 handler 为 /metrics 的情况下,响应时间小于等于 0.4 秒的请求数是 612。

prometheus_http_request_duration_seconds_bucket{handler="/metrics",le="0.4"} 612

这意味着响应时间在 0.2 秒到 0.4 秒之间的请求数是 0,因为前一个桶(le="0.2")的请求数也是 612。

Summary

用于观察和聚合时间持续时间或大小的指标类型.   和 Histogram 类似,用于记录一系列数据的分布情况,但是 Summary 更关注分位数.  Summary 会自动计算请求延迟、响应时间等的分位数,同时还会维护时间的总数和.

对于每个指标,Summary 以指标名称为前缀,生成如下几个指标序列:

  • _sum :统计所有样本值之和
  • _count :统计所有样本总数
  • {quantile=“x”} :统计样本值的分位数分布情况,分位数范围:0 ≤ x ≤ 1

在 /metrics 页面中如下:

a)prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.99"} NaN

表示在给定时间段内,99 分位数的 WAL 持久化操作耗时无法计算。 

b)prometheus_tsdb_wal_fsync_duration_seconds_sum 0.010883303

表示在给定时间段内,所有 WAL 持久化操作的总耗时为约 0.010883303 秒。

c)prometheus_tsdb_wal_fsync_duration_seconds_count 2

表示在给定时间段内,共有 2 个 WAL 持久化操作被记录。

Exporter 相关

概述

所有可以向 Prometheus 提供监控样本数据的程序都可以被称为一个 Exporter,而 Exporter 的一个实例被称为 Target.

Exporter 可以用户自定义,也可以使用社区提供的,例如 MySQL_Exporter、Redis_Exporter、RabbitMQ_Exporter......

Prometheus 通过轮询的方式,定期的从这些 target 中获取样本数据.

Ps:安装好 Exporter 后会暴露一个 http://ip:port/metrics 的 HTTP 服务,通过 prometheus.yml 进行配置,就可以采集到 http://ip:port/metrics 里面所有监控样本数据.

Exporter 类型

通常来说可以将 Exporter 分为两类:

a)直接采集型

这类 Exporter 直接内置了对应的应用程序,用于向 Prometheus 直接提供 Target 数据支持.  这样设计的好处是,可以更好的监控各自系统的内部运行状态,同时也适合更多自定义监控的项目实施,例如 k8s 等,他们都内置了向 Prometheus 提供监控数据的端点.

这类例如:MySQL Exporter、RabbitMQ Exporter、Mongo Exporter、Nginx Exporter

b)简洁采集型

原始监控目标并不直接支持 Prometheus,需要我们使用 Prometheus 提供的 Client Library 编写该监控目标的监控采集程序,用户可以将程序独立运行,取获取指定的各类监控数据值. 

例如 Linux 操作系统自身并不能直接支持 Prometheus,因此需要单独安装 Node_Exporter 来进行监控 Linux 系统的各项监控指标.  

这类例如:Node Exporter

Exporter 规范

a)所有的 Exporter 程序都需要按照 Prometheus 的规范,返回监控样本数据.

以 node_exporter 为例,访问:http://env-base:9100/metrics 就会返回如下内容:

# 开头表示注释内容,这类样本数据说明如下:

  • # HELP 开头的行,表示 metrics 的帮助与说明注释,可以包含当前 监控指标名称 和 对应的说明信息.
  • # Type 开始的行,表示定义 metrics 类型,可以包含当前 监控指标名称 和 类型. 类型有 Counter、Gauge、Histogram、Summary.
  • 非 # 开头的,就是监控的样本数据.

 b)监控的样本数据规范

metric_name 和 label_name 必须遵循 PromQL 的格式规范要求.  value 是一个 float 格式的数据,timestamp 类型为 int64(从 1970-01-01 00:00:00 以来的毫秒数).  具有相同 metric_name 的样本必须要按照一个组的形式排列,并且每一行必须是唯一的 指标名称 和 指标键值对组合.

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

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

相关文章

乘积量化pq:将高维向量压缩 97%

向量相似性搜索在处理大规模数据集时&#xff0c;往往面临着内存消耗的挑战。例如&#xff0c;即使是一个包含100万个密集向量的小数据集&#xff0c;其索引也可能需要数GB的内存。随着数据集规模的增长&#xff0c;尤其是高维数据&#xff0c;内存使用量会迅速增加&#xff0c…

2024年大数据高频面试题(中篇)

文章目录 Kafka为什么要用消息队列为什么选择了kafkakafka的组件与作用(架构)kafka为什么要分区Kafka生产者分区策略kafka的数据可靠性怎么保证ack应答机制(可问:造成数据重复和丢失的相关问题)副本数据同步策略ISRkafka的副本机制kafka的消费分区分配策略Range分区分配策略…

SAP ABAP性能优化分析工具

SAP系统提供了许多性能调优的工具&#xff0c;重点介绍下最常用几种SM50, ST05, SAT等工具&#xff1a; 1.工具概况 1.1 SM50 / SM66 - 工作进程监视器 通过这两个T-code, 可以查看当前SAP AS实例上面的工作进程&#xff0c;当某一工作进程长时间处于running的状态时&#…

每日OJ_牛客_删除公共字符(暴力+哈希)

目录 牛客_删除公共字符 法一代码&#xff08;暴力&#xff09; 法二代码&#xff08;哈希&#xff09; 牛客_删除公共字符 删除公共字符__牛客网 法一代码&#xff08;暴力&#xff09; 暴力查找方式&#xff0c;如判断第一个串的字符是否在第二个串中&#xff0c;在再挪动…

排序——归并排序及排序章节总结

前面的文章中 我们详细介绍了排序的概念&#xff0c;插入排序&#xff0c;交换排序与选择排序&#xff0c;大家可以通过下面的链接再去学习&#xff1a; ​​​​​​排序的概念及插入排序 交换排序 选择排序 这篇文章就详细介绍一下另一种排序算法&#xff1a;归并排序以及…

Uniapp基础篇(持续更新)

1. Uni-app常用内置组件 view 视图容器 scroll-view 可滚动视图区域&#xff0c;用于区域滚动。需注意在webview渲染的页面中&#xff0c;区域滚动的性能不及页面滚动。 swiper 滑块视图容器。一般用于左右滑动或上下滑动&#xff0c;比如banner轮播图。 image uniapp官方iam…

ROS服务通信机制实操Python

ROS服务通信机制实操Python 步骤流程vscode配置服务端客户端编辑配置文件编译并执行优化实现参数的动态提交优化先启动客户端后启动服务端 ROS服务通信的理论查阅&#xff1a;ROS服务通信流程理论 ROS服务通信的自定义srv数据的准备可以查阅&#xff1a;ROS服务通信自定义srv …

【学术会议征稿】第八届控制工程与先进算法国际论坛(IWCEAA 2024)

第八届控制工程与先进算法国际论坛 8th International Workshop on Control Engineering and Advanced Algorithms(IWCEAA 2024) 第八届控制工程与先进算法国际论坛&#xff08;IWCEAA 2024&#xff09;将于2024年11月1-3日在中国南京隆重举行。会议旨在为从事算法、控制工程与…

昇思25天学习打卡营第七天|应用实践/生成式/Diffusion扩散模型

心得 这个课程是一个劝退的课程。讲述了Diffusion扩散模型实现原理。提供了这个原理的一些公式推导。当然看这个推导是需要一定的数学基础的。这个课程这么写&#xff0c;是为了让那些数学不怎么好的&#xff0c;知难而退吗&#xff1f; 这个课程还是一个比较难以复制粘贴的课…

陪玩系统小程序模式APP小程序H5系统搭建开发

随着移动互联网的营及和游戏行业的蓬轨发展&#xff0c;陪玩服务应远而生并迅速唱起&#xff0c;陪玩系统小程序作为连接游戏玩家与陪玩师的桥梁&#xff0c;其模式系统的搭建与开发是得尤为重要&#xff0c;本文将洋细凰述陪玩系统小程宗模式系统的搭建开发流程&#xff0c;包…

Nginx入门到精通四(反向代理2)

下面内容整理自bilibili-尚硅谷-Nginx青铜到王者视频教程 Nginx相关文章 Nginx入门到精通一&#xff08;基本概念介绍&#xff09;-CSDN博客 Nginx入门到精通二&#xff08;安装配置&#xff09;-CSDN博客 Nginx入门到精通三&#xff08;Nginx实例1&#xff1a;反向代理&a…

Spring Security 授权

基于request的授权 HttpSecurity 权限配置 Beanpublic SecurityFilterChain filterChain(HttpSecurity http) throws Exception {http.authorizeHttpRequests(authorize -> {authorize// 放行请求:针对含有 admin 权限的用户放行 /user/get 接口.requestMatchers("/us…

UE4-光照渲染、自动曝光、雾

目录 一.光源种类 二.灯光的移动性 三.自动曝光 四.指数级高度雾 五.实现光束 一.光源种类 1.定向光源 用来模拟现实中的太阳光。 2.点光源 比如现实中的灯泡 3.聚光源 4.矩形光源 是这几个光源中性能开销最大的&#xff0c;一般不用到游戏场景中&#xff0c;因为游…

【文心智能体】前几天百度热搜有一条非常有趣的话题《00后疯感工牌》,看看如何通过低代码工作流方式实现图片显示

00后疯感工牌体验&#xff1a;https://mbd.baidu.com/ma/s/6yA90qtM 目录 前言比赛推荐工作流创建工作流入口创建工作流界面工作流界面HTTP工具卡点地方 总结推荐文章 前言 前几天百度热搜有一条非常有有趣《00后疯感工牌》。 想着通过文心智能体去一键生成00后疯感工牌是不是…

Qt 多语言

记录Qt多语言的实现过程 目录 1.项目配置文件.pro配置 2.程序中的字符串用tr()封装 3.生成翻译文件 4.使用Qt语言家修改翻译文件 4.1使用Qt语言家打开 4.2 .更改文件配置 5. 生成qm文件 6.代码执行切换语言 6.1入口处 6.2 事件执行 0.效果 1.项目配置文件.pro配置 T…

js执行机制----事件循环

前言 问题 一般情况下,我们都认为js是顺序执行的 但是遇到下列情况 setTimeout(function(){console.log(定时器开始啦) });new Promise(function(resolve){console.log(马上执行for循环啦);for(var i 0; i < 10000; i){i 99 && resolve();} }).then(function(…

嵌入式人工智能(7-树莓派4B的IIC总线连接OLED显示中文与图片)

1、IIC总线 IIC总线&#xff08;Inter-Integrated Circuit&#xff09;是一种串行通信总线&#xff0c;也被称为I2C总线。它由飞利浦&#xff08;Philips&#xff09;公司在1980年代开发&#xff0c;用于连接微处理器和外部设备。 IIC总线使用两根信号线&#xff1a;SDA&…

删除windows系统里磁盘的恢复分区

说下我的情况 我买了块固态磁盘&#xff0c;插上主板&#xff0c;发现它自带了系统&#xff0c;这样我开机就会转到这块磁盘&#xff0c;即使在boot里改变也不行&#xff0c;后面我格式化了对应的盘符&#xff0c;但在磁盘管理里&#xff0c;发现有个EFI系统分区和恢复分区存在…

C++中的语句详细介绍:简单语句、条件、循环迭代语句、跳转语句、异常处理语句、try语句等

文章目录 C中的语句(1)简单语句A.空语句B.复合语句 (2)条件语句(3)迭代语句A.常规for循环B.范围for循环C.while和do...while (4)跳转语句A.break语句B.continue语句C.goto语句 (5)异常处理语句A.标准异常B.throw抛出异常 (6)try语句 C中的语句 (1)简单语句 简单语句包括&#…

卷麻了!字节软件测试四轮面试,成功拿到offer啦!

❗️❗️字节面试攻略❗️❗️ ⭕️招聘特点&#xff1a;关注可复制直接上手的人才&#xff01; 字节是人才扎堆的地方&#xff0c;人来就马上能做&#xff0c;只招现成的人才。 字节软件测试的面试题同样也是分了四轮&#xff0c;成功拿到ooffer了&#xff0c;给大家总结一下每…