首页 > 其他分享 >Prometheus监控实战系列四:数据格式

Prometheus监控实战系列四:数据格式

时间:2023-08-29 15:11:39浏览次数:49  
标签:实战 标签 Histogram 指标 Prometheus 类型 数据格式 数据

在Prometheus监控中,对于采集到服务端的指标,称为metrics数据。metrics指标为时间序列数据,它们按相同的时序,以时间维度来存储连续数据的集合。

metrics有自定义的一套数据格式,不管对于日常运维管理或者监控开发来说,了解并对其熟练掌握都是非常必要的,本文将对此进行详细介绍。

 

一. Mtrics组成

 

每个metrics数据都包含几个部分:指标名称、标签和采样数据。

 

指标名称

用于描述收集指标的性质,其名称应该具有语义化,可以较直观的表示一个度量的指标。名称格式可包括ASCII字符、数字、下划线和冒号。

 

如:

node_cpu_seconds_totalnode_network_receive_bytes_total

 

标签

时间序列标签为key/value格式,它们给Prometheus数据模型提供了维度,通过标签可以区分不同的实例,

 

如:

node_network_receive_bytes_total{device="eth0"} #表示eth0网卡的数据

  

通过标签 ,Prometheus可以在不同维度上对一个或一组数据进行查询处理。标签名称由 ASCII 字符,数字,以及下划线组成, 其中 __ 开头属于 Prometheus 保留,标签的值可以是任何 Unicode 字符,支持中文。标签可来自被监控的资源,也可由Prometheus在抓取期间和之后添加。

 

 

采样数据

按照某个时序以时间维度采集的数据,其值包含:

 

一个float64值

一个毫秒级的unix时间戳

二. Mtrics格式

结合以上这些元素,Prometheus的时间序列统一使用以下格式来表示。

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

 

下面为一个node-exporter暴露的数据指标样本:

 

第一个#是指标的说明介绍,第二个# 代表指标的类型,此为必须项且格式固定,TYPE+指标名称+类型。node_cpu_seconds_total为指标名称,{}里面为标签, 它标明了当前指标样本的特征和维度,最后面的数值则是该样本的具体值。

 

三. Metric类型

Prometheus的时序数据分为Counter(计数器),Gauge(仪表盘),Histogram(直方图),Summary(摘要)四种类型。

 

Counter类型

counter类型的指标与计数器一样,会按照某个趋势一直变化(一般是增加),我们往往用它记录服务请求总量、错误总数等。

 

如下图展示就是一个counter类型的metrics数据采集,采集的是Prometheus的接口访问量,可看到数值一直在向上增加。

 

 

基于counter类型的数据,我们可以清楚某些事件发生的次数,由于数据是以时序的方式进行存储,我们也可以轻松了解该事件产生的速率变化。

 

例如,通过rate()函数,获取api请求量每分钟的增长率:

 

rate(apiserver_request_total[1m])

 

Gauge类型

与Counter不同,Gauge类型的指标用于展示瞬时的值,与时间没有关系,可增可减。该类型值可用来记录CPU使用率、内存使用率等参数,用来反映目标在某个时间点的状态。

以下是一个关于内存使用量的数据展示,可以看到每个时间点的数据具有随机性,不与其他数据有关联。

 

 

Gauge指标简单且易于理解,对于该类型的指标,我们可以直观的查看目标在当前的状态。

 

node_memory_MemFree_bytes

 

Summary和Histogram类型

 

在大多数情况下,我们可以计算指标某个时间段内的平均值来了解情况,如需要知道每分钟CPU使用率,可通过计算该时间段内采集的数据平均值来获取。

 

但在某些场景中,这种方式并不合适。假设某个接口一分钟内的请求为1万次,采用平均值的方式计算出响应时间为2s,通过该值我们无法判断是所有请求都不超过2s,还是有部分较高延迟被平均值拉低,该方法缺乏对于全局的观察性。对此,Prometheus通过Summary和Histogram类型来解决这样的问题。

 

Summary 通过计算分位数(quantile)显示指标结果,可用于统计一段时间内数据采样结果 ,如中位数(quantile=0.5)、9分位数(quantile=0.9)等。

 

下面是一个Summary类型的指标prometheus_tsdb_wal_fsync_duration_seconds,通过该指标我们可以得知,Prometheus进行wal_fsync操作的数据结果中,50%(quantile=0.5)的耗时小于0.051406522,90%(quantile=0.9)的耗时小于0.053670506。

 

 

 

Histogram类型与Summary类型的指标相似之处在于同样会反应当前指标的记录的总数(以_count作为后缀)以及其值的总量(以_sum作为后缀)。不同在于Histogram指标直接反应了在不同区间内样本的个数,区间通过标签len进行定义,通常它采集的数据展示为直方图。

 

Histogram可用于请求耗时、响应时间等数据的统计,例如指标prometheus_tsdb_compaction_chunk_range_bucket即为Histogram类型。

 

 

标签:实战,标签,Histogram,指标,Prometheus,类型,数据格式,数据
From: https://www.cnblogs.com/quqibinggan/p/17664863.html

相关文章

  • [回馈]ASP.NET Core MVC开发实战之商城系统(完:内附源码)
    经过一段时间的准备,【ASP.NETCoreMVC开发实战之商城系统】已经完成,目前代码已开发完成,先将全部内容整理分享,如有不足之处,还请指正。 商城系统主要功能 本系列文章主要讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销......
  • Python查询Prometheus API
     #!/bin/python#-*-coding:utf-8-*-importpandasaspdimportrequests,time,redefgetcolumn(status):iffloat(status)<80:return"正常"#eliffloat(status)<2:#return"异常"else:......
  • 如何用大模型解决产业场景实战问题?案例精讲教程来了!
    科技爆炸,大模型赋能千行百业生成式AI正以惊人的势头改变着我们的世界,新的浪潮席卷着全球各个行业,同时,也赋予企业前所未有的创新力量。大模型通过海量数据和复杂算法,刻画出AI世界的精妙法则,让企业能够借助大模型,解决一系列问题。因此,大模型技术对于企业来说至关重要,基于大模型技术......
  • Python爬虫实战 - 模拟登录采集数据
    在进行数据采集时,有些网站需要进行登录才能获取到所需的数据。本文将介绍如何使用Python爬虫进行模拟登录,以便采集网站的数据。我们提供了完善的方案和代码示例,让你能够轻松操作并获取所需的数据。使用Python爬虫模拟登录网站采集数据价值:数据获取:通过模拟登录,你可以通过网站的登录......
  • 7类常见十字星的实战应用(炒股技巧)
    十字星是指收盘价和开盘价在同一价位或者相近,没有实体或实体极其微小的特殊的K线形式,其虽有阴阳之分,但实战的含义差别不太大,远不如十字星本身所处的位置更为重要,比如出现在持续下跌末期的低价区,称为“希望之星”,这是见底回升的信号;出现在持续上涨之后的高价区,称为“黄昏之......
  • 在.NET Framework中使用RocketMQ(阿里云版)实战【第一章】
    章节第一章:https://www.cnblogs.com/kimiliucn/p/17662052.html第二章:作者:西瓜程序猿主页传送门:https://www.cnblogs.com/kimiliucn/开发背景在开发某一个需求的时候,领导要求使用RocketMQ(阿里云版)作为消息队列。使用的版本是5.x,目前也已经没有4.x购买的入口了,所以只......
  • JVM调优实战及常量池详解
    阿里巴巴Arthas详解 Arthas 是 Alibaba 在2018年9月开源的 Java诊断工具。支持 JDK6+,采用命令行交互模式,可以方便的定位和诊断线上程序运行问题。Arthas 官方文档十分详细,详见:https://alibaba.github.io/arthas  Arthas使用场景得益于Arthas强大且丰富的功......
  • java与es8实战之三:Java API Client有关的知识点串讲
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本篇概览本篇是《java与es8实战》系列的第三篇,将一些重要的知识点在这里梳理清楚,为后面的实践奠定基础一共有七个与JavaAPIClient有关的重要知识点关于namespace:每......
  • Kubernetes 对接 GlusterFS 磁盘扩容实战
    前言知识点定级:入门级使用HeketiTopology扩容磁盘使用HeketiCLI扩容磁盘实战服务器配置(架构1:1复刻小规模生产环境,配置略有不同)主机名IPCPU内存系统盘数据盘用途ks-master-0192.168.9.912450100KubeSphere/k8s-masterks-master-1192.1......
  • 【Ehcache技术专题】「入门到精通」带你一起从零基础进行分析和开发Ehcache框架的实战
    缓存大小的设置缓存大小的限制可以设置在CacheManager上,也可以设置在单个的Cache上。我们可以设置缓存使用内存的大小,也可以设置缓存使用磁盘的大小,但是使用堆内存的大小是必须设置的,其它可设可不设,默认不设就是无限制。在设置缓存大小的时候,我们可以设置缓存使用某一个存储器的最......