【博客645】prometheus监控体系中的重要概念

news/2024/5/18 22:53:28 标签: prometheus, linux

Key Concepts in Monitoring Systems

Time Series

时间序列是按时间戳排序的一系列 (timestamp, value) 对。每个时间序列的对数可以是任意的——从一到数千亿。时间戳具有毫秒精度,而值是 64 位浮点数。每个时间序列都有一个名称。例如:

  • node_cpu_seconds_total — the total number of CPU seconds used
  • node_filesystem_free_bytes — free space on filesystem mount point
  • go_memstats_sys_bytes — the amount of memory used by Go app

此外,为了命名每个时间序列可以有任意数量的 label=”value” 标签。例如:

  • go_memstats_sys_bytes{instance=”foobar:1234",job=”node_exporter”}
  • prometheus_http_requests_total{handler=”/api/v1/query_range”}

每个时间序列都由其名称和一组标签唯一标识。例如,这些都是不同的时间序列:

  • temperature{city=”NY”}
  • temperature{city=”SF”}
  • temperature{city=”SF”, unit=”Celsius”}

Data Point or Sample

来自任何时间序列的每个(timestamp, value)对都称为数据点或样本。

High Cardinality

存储在 TSDB 中的unique time series 的数量称为cardinality。
“High cardinality” means high number of series. Prometheus tsdb 存储针对处理相对较少数量的时间序列进行了优化。
当大量时间序列存储在其中时,它可能开始工作缓慢或在摄取、查询或压缩期间使用大量 RAM、CPU 或磁盘 IO。 Prometheus 的高基数从几百万个时间序列开始

Active time series

如果 Prometheus 最近为它抓取了新数据,则时间序列被认为是活跃的。 Prometheus 提供了 prometheus_tsdb_head_series 指标,它显示了活动时间序列的数量。 Prometheus 在 RAM 中保存最近添加的活动时间序列样本,因此其 RAM 使用率在很大程度上取决于活动时间序列的数量。活动时间序列的数量通过流失率与基数相关联。

Churn rate

如果活动时间序列停止接收新样本,则活动时间序列将变为非活动状态。新的时间序列可以在标签值变化上替代旧的时间序列。例如,在 Kubernetes 中每次部署后,pod_name 标签值可能会针对大量时间序列发生变化。旧时间序列被新时间序列替代的速率称为流失率。显然,高流失率会增加基数。这可能会导致性能下降、高 RAM 使用率和内存不足错误(也称为 OOM)。

Prometheus 公开了 prometheus_tsdb_head_series_created_total 指标,可用于使用以下 PromQL 查询估算流失率:

rate(prometheus_tsdb_head_series_created_total[5m])

从 v2.10 开始,Prometheus 公开了每个目标的 scrape_series_added 指标,可用于确定高系列流失率的来源:

sum(sum_over_time(scrape_series_added[5m])) by (job)

Ingestion rate

摄取率是每秒放入 tsdb 存储的数据点数。

可以使用以下 PromQL 查询从 Prometheus 公开的 scrape_samples_scraped 指标计算摄取率:

sum_over_time(scrape_samples_scraped[5m]) / 300

此外,可以使用以下公式估算摄取率:

ingestion_rate = targets_count * metrics_per_target / scrape_interval
ingestion_rate = active_time_series / scrape_interval

Scrape interval

Prometheus 以配置的时间间隔抓取目标,称为抓取间隔。默认情况下,它为所有抓取目标设置1分钟的抓取间隔。它可以通过 Prometheus 配置中的 global->scrape_interval 选项覆盖。虽然可以为每个目标设置不同的抓取间隔,但不建议这样做。

较低的抓取间隔会导致更高的摄取率和更高的 Prometheus RAM 使用率,因为在将更多数据点刷新到磁盘之前必须将它们保存在 RAM 中。

Retention

Prometheus 提供 --storage.tsdb.retention.time 命令行标志,用于配置存储数据的生命周期。保留之外的数据将自动删除。默认情况下,保留配置为 15 天。磁盘上存储的数据量取决于保留时间——更高的保留时间意味着磁盘上的数据更多。

Prometheus 支持的最低保留时间为 2 小时 (2h)。在为 Prometheus 配置远程存储时,这种保留可能很有用。在这种情况下,Prometheus 同时将所有抓取的数据复制到本地存储和所有配置的远程存储后端。这意味着本地存储的保留可以是最小的,因为所有数据都已经复制到远程存储,并且远程存储可用于从 Grafana 和任何其他具有 Prometheus 查询 API 支持的客户端进行查询。

请注意,配置的保留时间必须涵盖警报和记录规则的时间范围。

Relabeling

Prometheus 支持重新标记,可用于操作每个指标的标签、过滤抓取目标和样本。这是一个相当复杂但非常强大的机制


http://www.niftyadmin.cn/n/407766.html

相关文章

外包呆了5年终上岸,劝各位别去了...

有些测试员朋友找工作过程中问我,或者网上问有外包公司的offer,要不要去外包公司?在这里我结合我自己的经历和身边一些朋友的情况来谈谈这个问题。首先我呆过两家外包公司,并且身边有不少朋友是在外包公司工作。所以我只是尽量客观的分析这个…

cpython编译与运行

一.配置环境 python 本身不能运行 cpython 的语法,需要 编译 后引用 需要 gcc 编译器 和 cython 编译器 gcc编译器 把 c语言 编译成扩展模块 Cython 编译器是一种源到源的编译器 python 语法编译成 c语法 1.安装gcc 编译器 gcc 编译器可以下载 Visual Studio 或者…

煤炭价格学习

大佬发表时间在2022.11.17 神华月线,因为没有送配股,所以肯定是除权看的(前复权看的不要跟我谈技术,因为你不配) 除权,前复权,后复权 理解这三者区别之前,首先我们要简单了解 除权和…

std::function和std::bind怎么联合使用

std::function 是 C++ 标准库提供的一个通用函数封装器,它可以包装任意可调用对象(函数、函数指针、成员函数指针、Lambda 表达式等),并提供统一的接口进行调用。 std::bind 是 C++ 中的一个函数模板,用于创建函数对象(也称为绑定对象)并绑定参数。 std::bind 的基本语…

在读Phd如何准备公派访学?

在目前国内高校、科研机构等用人单位对海归背景的看重,在读博士出国访学已然成为一种趋势。在读博士出国访学有哪些优势?在读博士出国访学的工作日常是什么?如果申请公派出国,在读博士这一群体会遇到哪些挑战? 一、在读博士出国访学的时代…

HashMap 的底层原理和源码分析

tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 推荐:体系化学习Java(Java面试专题) 文章目录 一、HashMap…

tb6612电机驱动与JGB37-520减速直流电机

tb6612电机驱动与JGB37-520减速直流电机 文章目录 tb6612电机驱动与JGB37-520减速直流电机电机驱动模块TB6612TB6612的引脚说明真值表(直流电机的驱动状态)TB6612的正转反转原理 直流电机原理减速器编码器一、关于编码器的介绍二、编码器的工作原理&…

信息竞赛笔记(2)––快速幂

目录 快速幂 定义 分析 代码 递归实现 非递归实现(通用方法) 模意义下取幂 快速幂 定义 快速幂,二进制取幂(Binary Exponentiation,也称平方法),是一个在的时间内计算的小技巧,而暴力的计算需要的时间。 这个技巧也常常用在非计算的场景,因为它可…