配置 Prometheus 资源使用说明
存储和数据保留
Prometheus 所需的存储空间与您存储的时间序列和标签的数量以及您配置的数据保留量直接相关。需要注意的是,Prometheus 并不是用来作为长期指标存储的。数据保留时间通常只有几天,而不是几周或几个月。原因是,Prometheus 不会对其存储的指标进行任何聚合。这很好,因为聚合会稀释数据,但这也意味着所需的存储空间随着时间的推移线性增长而没有保留。
计算所需存储空间的一种方法是通过以下查询来查看 Prometheus 中存储块的平均大小:
rate(prometheus_tsdb_compaction_chunk_size_bytes_sum[1h]) / rate(prometheus_tsdb_compaction_chunk_samples_sum[1h])
接下来,找出你每秒的数据摄取率:
rate(prometheus_tsdb_head_samples_appended_total[1h])
然后与保留时间相乘,并添加几个百分点作为缓冲区:
平均块大小(以字节为单位) * 每秒的摄取速率 * 保留时间(以秒为单位) * 1.1 = 必需的存储空间(以字节为单位)
你可以在这篇博客文章中找到更多关于如何计算必要存储的信息。
https://www.robustperception.io/how-much-disk-space-do-prometheus-blocks-use
你可以在Prometheus 文档中阅读更多关于 Prometheus 存储概念的内容。
https://prometheus.io/docs/prometheus/latest/storage
CPU 和内存的请求和限制
在较大的 Kubernetes 集群中,Prometheus 会消耗大量内存。 Prometheus 需要的内存直接与它存储的时间序列和标签的数量以及填充这些标签的 scrape 间隔有关。
你可以在这个博客文章中找到更多关于如何计算所需内存的信息。
https://www.robustperception.io/how-much-ram-does-prometheus-2-x-need-for-cardinality-and-ingestion
所需的 CPU 数量与您正在执行的查询数量相关。
长期储存
Prometheus 并不是为了长期存储指标,而只用于短期存储。
为了长期存储一些或所有的指标,你可以利用 Prometheus 的远程读/写功能将其连接到存储系统,如Thanos、InfluxDB、M3DB或其他系统。你可以在这篇博客文章中找到一个示例设置。
https://prometheus.io/docs/prometheus/latest/storage/#remote-storage-integrations
https://thanos.io/
https://www.influxdata.com/
https://www.m3db.io/
https://rancher.com/blog/2020/prometheus-metric-federation
原文地址:https://www.cnblogs.com/varden/p/15018616.html
- iOS学习——Xcode9上传项目到GitHub
- 手把手教你编写一个简单的PHP模块形态的后门
- 如何将简单的Shell转换成为完全交互式的TTY
- 如何使用HackRF做一个简单的IMSI捕获器
- 联想Z470黑化之路:硬件升级还能刷苹果Mac系统!
- 渗透测试TIPS之删除、伪造Linux系统登录日志
- 1分钟懂awk-技不在深,够用就行
- RChain节点通信机制
- Spark源码系列(一)spark-submit提交作业过程
- Android安全几道入门题目
- 挖洞经验 | 看我如何通过子域名接管绕过Uber单点登录认证机制
- Spark源码系列(二)RDD详解
- Spark源码系列(三)作业运行过程
- Spark源码系列(四)图解作业生命周期
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法