prometheus相关概念

prometheus相关概念

在安装好Prometheus后,会暴露一个/metrics的http服务(相当于安装了prometheus_exporter),通过配置,Prometheus就可以采集到这个/metrics下的所有监控样本数据.

样本

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

在时间序列中的每一个点称为一个样本(sample),样本由以下三部分组成:

  • 指标(metric): 指标名和描述当前样本特征的标签集合
  • 时间戳(timestamp): 一个精确到毫秒的时间戳
  • 样本值(value): 一个float64的浮点型数据表示当前样本的值

image-20231215105623342.png

示例:
image-20231215165937644.png

前面一段为指标名,中间那段为标签后面那段为时间戳和样本值

指标(Metric)

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

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

指标的名称(metric name)可以反映被监控样本的含义(比如,process_open_fds-表示当前系统打开的文件描述),指标名称由ASCll字符,数字,下划线以及冒号组成必须符合正则表达式

[a-ZA_:][a-zA-Z0-9_]

标签(label)反映了当前样本的特征维度,通过这些维度Prometheus可以对样本数据进行过滤,聚合等.标签的名称只能由ASCll字符,数字,下划线以及冒号组成必须符合正则表达式.

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

process_open_fds{instance="Prometheus服务器", job="cadvisor"}

等同于:

{_name_="process_open_fds",instance="Prometheus服务器", job="cadvisor"}

指标(Metric)的四种类型

Prometheus底层存储上其实没有对指标做类型的区分,都是以时间序列的形式存储,但是为了方便用户的使用和理解不同监控指标之间的差异,Prometheus定义了counter(计数器),gauge(仪表盘),histogram(直方图),以及sunmmary(摘要)这四种指标类型.

Gauge/Counter是数值指标,代表数据的变化情况,Histogram/Summary是统计类型的指标,表示数据的分布情况

在Exporter返回的样本数据中,其注释中也包含了该样本的类型.例如:

# HELP go_info Information about the Go environment.
# TYPE go_info gauge
go_info{version="go1.19.3"} 1

Counter:只增不减的计数器

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

通过Counter指标可以统计HTTP请求数量,请求错误数,接口调用次数等单调递增的数据,同事可结合increase和rate等函数统计变化速率

例如,通过PromQL内置的聚合rate()函数获取HTTP请求量的评价增长率:

rate(promhttp_metric_handler_requests_total[5m])

查询当前系统中访问量前十的HTTP地址

topk(10,promhttp_metric_handler_requests_total)

image-20231218105932646.png

Gauge:可增可减的仪表盘

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

通过Gauge指标,通过ProQL可以直接查看系统的当前物理内存大小:

node_memory_MemFree_bytes

image-20231218111015457.png

对于Gauge类型的监控指标,通过PromQL内置函数delta()可以获取样本在一段时间返回内的变化情况.例如,计算CPU温度在俩个小时内的差异:

delta(cpu_temp_celsius{host="zeus"}[2h])

还可以使用deriv()计算样本的线性回归模型,甚至使用predict_linear()对数据的变化趋势进行预测.例如,预测系统磁盘空间在4个小时之后的剩余情况:

predict_linear(node_filesystem_avail_bytes{}[1h],4*3600)

image-20231219131808409.png

需要将最终结果78637829682.74074/1024/1024/1024得到最终GB为单位的空间大小

image-20231219132007591.png

也就是73GB左右

Histogram :直方图

Histogram 会在一段时间范围内对数据进行采样(通常是请求持续时间或响应大小等),并将其计入可配置的存储桶(bucket)中。但这句话还是不太好理解,下面通过具体的示例来说明。

假设我们想监控某个应用在一段时间内的响应时间,最后监控到的样本的响应时间范围为 0s~10s。现在我们将样本的值域划分为不同的区间,即不同的 bucket,每个 bucket 的宽度是 0.2s。那么第一个 bucket 表示响应时间小于等于 0.2s 的请求数量,第二个 bucket 表示响应时间大于 0.2s 小于等于 0.4s 的请求数量,以此类推。

image-20231219154417093.png

Prometheus 的 histogram 是一种累积直方图,与上面的区间划分方式是有差别的,它的划分方式如下:还假设每个 bucket 的宽度是 0.2s,那么第一个 bucket 表示响应时间小于等于 0.2s 的请求数量,第二个 bucket 表示响应时间小于等于 0.4s 的请求数量,以此类推。也就是说,每一个 bucket 的样本包含了之前所有 bucket 的样本,所以叫累积直方图。
image-20231219154441539.png

分位数计算

Prometheus 通过 histogram_quantile 函数来计算分位数(quantile),而且是一个预估值,并不完全准确,因为这个函数是假定每个区间内的样本分布是线性分布来计算结果值的。预估的准确度取决于 bucket 区间划分的粒度,粒度越大,准确度越低。

假设有 10000 个样本,第 9501 个样本落入了第 8 个 bucket。第 8 个 bucket 总共有 368 个样本,其中第 9501 个样本在该 bucket 中属于第 93 个样本。

Summary:摘要

摘要用于记录某些东西的平均大小,可能是计算所需的时间或处理的文件大小,摘要显示两个相关的信息:count(事件发生的次数)和 sum(所有事件的总大小)

例如,指标 prometheus_tsdb_wal_fsync_duration_seconds 的指标类型为 Summary,它记录了 Prometheus Server 中 wal_fsync 的处理时间,通过访问 Prometheus Server 的 /metrics 地址,可以获取到以下监控样本数据:

# HELP prometheus_tsdb_wal_fsync_duration_seconds Duration of WAL fsync.
# TYPE prometheus_tsdb_wal_fsync_duration_seconds summary
prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.5"} 0.012352463
prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.9"} 0.014458005
prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.99"} 0.017316173
prometheus_tsdb_wal_fsync_duration_seconds_sum 2.888716127000002
prometheus_tsdb_wal_fsync_duration_seconds_count 216

Job(任务)和instances(实例)

概述

在Prometheus中,任何被采集的目标,即每一个暴露监控样本数据的HTTP服务都被称为一个实例,例如在当前主机上运行的node exporter可以被称为一个实例.而具有相同采集目的的实例集合称为任务.

Job(任务)

例如,一下2个复制实例的node

* job: node* instances 2:1.2.3.4:9100* instances 4:5.6.7.8:9100

instances(实例)

通过在Prometheus.yml配置文件中,添加如下配置,我们让Prometheus可以从node exporter暴露的服务中获取监控指标数据.

  - job_name: 'node-exporter'scrape_interval: 15sstatic_configs:- targets: ['node_exporter:9100']labels:instance: Prometheus服务器

可以在targets处配置多个地址进行监控

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

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

相关文章

MySQL数据库 约束

目录 约束概述 外键约束 添加外键 删除外键 删除/更新行为 约束概述 概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 目的&#xff1a;保证数据库中数据的正确、有效性和完整性。 分类: 注意&#xff1a;约束是作用于表中字段上…

2023 英特尔On技术创新大会直播 | 边云协同加速 AI 解决方案商业化落地

目录 前言边云协同时代背景边缘人工智能边缘挑战英特尔边云协同的创新成果最后 前言 最近观看了英特尔On技术创新大会直播&#xff0c;学到了挺多知识&#xff0c;其中对英特尔高级首席 AI 工程张宇博士讲解的边云协同加速 AI 解决方案商业化落地特别感兴趣。张宇博士讲解了英…

深度学习中常见的激活函数

前文介绍 我们在前面了解到了线性回归模型&#xff0c;其实我们可以把线性回归看成一个单个的神经元&#xff0c;它实际上就完成了两个步骤 1.对输入的特征的加权求和 2.将结果通过传递函数&#xff08;或者激活函数&#xff09;输出 这里我们提到了传递函数&#xff08;或者…

一篇文章带你了解SpringBoot目录结构

前言 SpringBoot是整合Spring技术栈的一站式框架&#xff0c;是简化Spring技术栈的快速开发脚手架&#xff0c;是一个能够快速构建生产级别的Spring应用的工具。SpringBoot是目前流行的微服务框架&#xff0c;倡导“约定优于配置”&#xff0c;简化Spring项目搭建及开发过程。…

【lesson20】MySQL复合查询(1)基本查询回顾、多表查询和自连接

文章目录 基本查询回顾建表插入数据实例 多表查询建表插入数据实例 自连接建表插入数据实例 基本查询回顾 建表 插入数据 实例 查询工资高于500或岗位为MANAGER的雇员&#xff0c;同时还要满足他们的姓名首字母为大写的J 按照部门号升序而雇员的工资降序排序 使用年薪进行降…

[论文分享]TimeDRL:多元时间序列的解纠缠表示学习

论文题目&#xff1a;TimeDRL: Disentangled Representation Learning for Multivariate Time-Series 论文地址&#xff1a;https://arxiv.org/abs/2312.04142 代码地址&#xff1a;暂无 关键要点&#xff1a;多元时间序列&#xff0c;自监督表征学习&#xff0c;分类和预测 摘…

基于红外传感的野外变压站生物入侵检测系统(论文+源码)

1. 系统设计 本课题为基于红外传感的野外变压站生物入侵检测系统&#xff0c;主要是针对野外变压站生物入侵的问题进行设计&#xff0c;整个系统的框图如图经过上述的功能需求分析和各个关键模块的选型后&#xff0c;最终得到了如图2.1所示的&#xff0c;采用STC89C52单片机为…

Linux中history使用(过滤,显示时间,查找)

显示历史命令 history 显示最后几条执行命令 history 5 显示history记录中命令执行时间 export HISTTIMEFORMAT"%F %T " 显示命令中有某些内容的最后几条执行命令 history | grep key | tail -n 2

适用于车载电动升窗器的解决方案

升窗器是指避免车主忘记关窗的自动关窗装置&#xff0c;主要通过电子模块加认组合&#xff0c;利用主机上的芯片里面设定的程序完成检测功能&#xff0c;使自动升窗步骤顺利完成。 ■ 基于ACM32F403系列MCU ■ 高性价比软件控制方案&#xff0c;高算力 ■ MCU内置2路CAN总线&a…

【Unity 实用工具篇】✨| I2 Localization 实现本地化及多种语言切换,快速上手

前言【Unity 实用工具篇】| I2 Localization 实现本地化及多种语言切换,快速上手一、多语言本地化插件 I2 Localization1.1 介绍1.2 效果展示1.3 使用说明及下载二、插件资源简单介绍三、通过示例快速上手3.1 添加 Languages语种3.2 添加 Term资源3.3 静

应用容器化转型 - 容器镜像怎么做

「执笔人」品高股份 cloud native 资深架构师&#xff1a;继承 随着云计算和容器技术的迅速发展&#xff0c;越来越多的企业选择进行应用容器化转型&#xff0c;以提高应用交付效率和灵活性。在这个转型过程中&#xff0c;制作高效的容器镜像成为关键一环。 那么什么是容器镜…

Jmeter分布式性能测试,80%资深测试都会遇到这个坑!

在做后端服务器性能测试中&#xff0c;我们会经常听到分布式。哪你&#xff0c;是否了解分布式呢&#xff1f;今天&#xff0c;我们就来给大家讲讲&#xff0c;在企业实战中&#xff0c;如何使用分布式进行性能测试&#xff0c;实战过程中&#xff0c;又有哪些地方要特别注意&a…