样本

Prometheus会将所有采集到的样本数据以时间序列(time-series)的方式保存在内存数据库中,并且定时保存到硬盘上。time-series是按照时间戳和值的序列顺序存放的,我们称之为向量(vector). 每条time-series通过指标名称(metrics name)和一组标签集(labelset)命名。如下所示,可以将time-series理解为一个以时间为Y轴的数字矩阵:

在time-series中的每一个点称为一个样本(sample),样本由以下三部分组成:

  • 指标(metric):metric name和描述当前样本特征的labelsets;
  • 时间戳(timestamp):一个精确到毫秒的时间戳;
  • 样本值(value): 一个folat64的浮点型数据表示当前样本的值。
<--------------- metric ---------------------><-timestamp -><-value->
http_request_total{status="200", method="GET"}@1434417560938 => 94355
http_request_total{status="200", method="GET"}@1434417561287 => 94334http_request_total{status="404", method="GET"}@1434417560938 => 38473
http_request_total{status="404", method="GET"}@1434417561287 => 38544http_request_total{status="200", method="POST"}@1434417560938 => 4748
http_request_total{status="200", method="POST"}@1434417561287 => 4785

指标(Metric)

在形式上,所有的指标(Metric)都通过如下格式标示:

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

指标的名称(metric name)可以反映被监控样本的含义

标签(label)反映了当前样本的特征维度,通过这些维度Promtheus可以对样本数据进行过滤,聚合等。标签的名称只能由ASCII字符、数字以及下划线组成并满足正则表达式[a-zA-Z_][a-zA-Z0-9_]*

其中以作为前缀的标签,是系统保留的关键字,只能在系统内部使用。标签的值则可以包含任何Unicode编码的字符。在Promtheus的底层实现中指标名称实际上是以```name__=```的形式保存在数据库中的,因此以下两种方式均表示的同一条time-series:

api_http_requests_total{method="POST", handler="/messages"}

等同于:

{__name__="api_http_requests_total",method="POST", handler="/messages"}

在Prometheus源码中也可以指标(Metric)对应的数据结构,如下所示:

type Metric LabelSettype LabelSet map[LabelName]LabelValuetype LabelName stringtype LabelValue string

Prometheus定义了4中不同的指标类型(metric type):Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)、Summary(摘要):

Counter:只增不减的计数器

Counter类型的指标其工作方式和计数器一样,只增不减(除非系统发生重置)。常见的监控指标,如http_requests_total,node_cpu都是Counter类型的监控指标。 一般在定义Counter类型指标的名称时推荐使用_total作为后缀

Gauge:可增可减的仪表盘

与Counter不同,Gauge类型的指标侧重于反应系统的当前状态。因此这类指标的样本数据可增可减。常见指标如:node_memory_MemFree(主机当前空闲的内容大小)、node_memory_MemAvailable(可用内存大小)都是Gauge类型的监控指标。

Histogram: 时间范围内直方图

Histogram 由 <basename>_bucket{le="<upper inclusive bound>"},<basename>_bucket{le="+Inf"}, <basename>_sum,<basename>_count 组成,主要用于表示一段时间范围内对数据进行采样(通常是请求持续时间或响应大小),并能够对其指定区间以及总数进行统计,通常它采集的数据展示为直方图。

Summary(摘要)

由 <basename>{quantile="<φ>"},<basename>_sum,<basename>_count 组成,主要用于表示一段时间内数据采样结果(通常是请求持续时间或响应大小),它直接存储了 quantile 数据,而不是根据统计区间计算出来的

prometheus Metric类型相关推荐

  1. 【Prometheus】Metric类型的理解及运用

    Metric类型 1.Counter 作用: 累加的计数器 样本样例: #HELP node_cpu Seconds the cpus spent in each mode. #TYPE node_c ...

  2. Prometheus guage类型rate(变化率)计算

    目录 引言 问题场景 尝试解决 deriv函数解析 最终解决 总结与思考 引言 Promethues是k8s以及云原生下的标准监控告警系统,提供了很多内置的函数,功能已经十分强大,但是,依然有一些需求 ...

  3. Prometheus 如何做到“活学活用”,大牛总结的避坑指南

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者丨徐亚松 来源丨http://www.xuyasong ...

  4. 监控神器Prometheus用不对,也就是把新手村的剑

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者丨徐亚松 来源丨http://www.xuyasong.com ...

  5. 【Prometheus】PromQL 万字详解

    在上一文当中,通过Node Exporter暴露的HTTP服务,Prometheus可以采集到当前主机所有监控指标的样本数据.例如: # HELP node_cpu Seconds the cpus ...

  6. 开源监控系统 Prometheus 入门

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「yangyidba」 一 简介 Pro ...

  7. prometheus job 重复_分享一款开源的监控神器--Prometheus 简介、架构及相关概念

    概述 老环境用的zabbix做监控,新环境因为用的微服务架构,所以对比再三,选择了prometheus来做监控,下面介绍下什么是prometheus. 一.简介 Prometheus 是一套开源的系统 ...

  8. 为什么说Prometheus是足以取代Zabbix的监控神器?

    点击上方"朱小厮的博客",选择"设为星标" 回复"666"获取公众号专属资料 一.简介 Kubernetes自从2012年开源以来便以不可阻 ...

  9. 新型监控告警工具prometheus(普罗米修斯)入门使用(附视频讲解)

    作者: 李佶澳   转载请保留:原文地址   发布时间:2018/08/03 10:26:00 说明 Prometheus 命名规则 metric类型 Job和Instance 部署.启动 prome ...

  10. 微服务实战之Prometheus使用分享

    tonyyan https://www.jianshu.com/p/67ec2643c963 Prometheus是什么? Prometheus 是由 SoundCloud 开源监控告警解决方案,从 ...

最新文章

  1. PHP中文件操作基础:目录操作,文件操作
  2. Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) E. DNA Evolution 树状数组
  3. java workerdone_【架构】Java并发编程——线程池的使用
  4. Androd开发之通过ComponentName和setComponent以及scheme打开外部应用 | 打开任意页面 | 打开指定页面
  5. table tr省略后鼠标移入显示相应信息_中考来了,人机对话、信息技术考试要求看过来...
  6. 简单有趣的c语言小程序,一个有趣的小程序
  7. php秒数怎么转换为时间格式,php将秒数转换为时间(年、月、日、小时…)
  8. 红帽linux 6.5下载地址,红帽linux系统下载|红帽linux(RHEL) v6.5 beta 官方版 - 软件下载 - 绿茶软件园|33LC.com...
  9. [转]批处理详细教程
  10. Docker和Jenkins构建项目总结
  11. 科研萌新成长记8——我不是不接受上帝,我只是不接受上帝创造的这个世界
  12. H3C无线网络优化指导——经验之谈
  13. Vue3 京东到家项目实战第二篇(商家详情页面及购物车完整逻辑开发) 进阶式掌握vue3完整知识体系
  14. 日订单量达到100万单后,我们做了订单中心重构
  15. MirSNP:miRNA相关SNP位点数据库
  16. 一次惨痛的线下机房上云的经历
  17. Hashcat的使用手册总结
  18. JS 实现GOOGLE地图线路规划
  19. 射雕英雄传ol显示服务器断开,射雕OL边移动边攻击,告别站桩输出
  20. 交叉验证的几个方法的解释(简单交叉验证、k折交叉验证、留一法)

热门文章

  1. html公历农历相互转换,JavaScript实现公历转换农历
  2. 对“努力就能成功”的一点思考
  3. 使用FlashFXP连接Linux乱码问题
  4. script标签中的 defer 和 async 属性
  5. HTML 修真录------深渊三君王
  6. Photoshop之渐变工具使用
  7. linux服务器安装杀毒软件
  8. 计算机中安装杀毒软件 的作用,360杀毒软件的功能及其使用方法介绍
  9. 照片放大模糊怎么变清晰?
  10. Oracle 10g 的后台进程