Prometheus TSDB 时序数据库工作原理?
connygpt 2024-10-14 09:14 10 浏览
Prometheus TSDB(时序数据库)是 Prometheus 的内置数据库,专门用于存储和查询时间序列数据。
以下是 Prometheus TSDB 的工作原理:
1、数据模型
指标(Metric):指标是 Prometheus 中的基本数据单元,每个指标由一个名称和一个可选的标签集(key/value 对)组成。
时间序列(Time series):每个独特的指标名称和标签集组合形成一个时间序列。
样本(Sample):时间序列由一系列样本组成,每个样本包含一个时间戳和一个浮点数。
2、数据收集
Prometheus 通过 HTTP 拉取模式定期从目标(如服务的 /metrics 端点)收集指标数据。
3、数据存储
内存存储:收集到的数据首先存储在内存中,以便于快速访问和处理。
磁盘存储:为防止数据丢失,内存中的数据会定期刷新到磁盘上。
4、存储结构块结构:磁盘上的 Prometheus 数据存储在一个或多个块中,每个块包含特定时间范围内的数据。 块文件:每个块由多个文件组成,包括索引文件、块头文件、块数据文件等。
5、保留策略:
Prometheus 允许设置数据的保留时间(如7天、30天等),过期的数据将被自动删除。
保留策略基于时间序列的最新样本时间来确定数据是否过期。
6、压缩
为了节省磁盘空间,Prometheus 使用 Snappy 压缩算法压缩磁盘上的数据。
7、查询
Prometheus 支持 PromQL(Prometheus 查询语言),允许用户编写查询来检索和聚合时间序列数据。
查询时,Prometheus 利用内存中的索引快速定位到相关的数据块和时间序列。
8、索引
Prometheus 为每个时间序列的指标名称和标签集构建索引,加速查询过程。
9、副本和高可用性
Prometheus TSDB 不支持原生的副本和高可用性。但可以通过其他工具(如 Thanos)来实现跨多个 Prometheus 实例的数据复制和查询。
10、数据恢复
在 Prometheus 重启后,它会从磁盘加载所有未过期的块,恢复到内存中以供查询使用。
11、远程读取和写入
Prometheus 支持远程读取(Remote Read)和远程写入(Remote Write)API,允许将数据导出到或从其他系统导入。
Prometheus TSDB 的设计目标是简单、高效和可靠,特别适用于监控和记录基础设施和应用的性能指标。通过其高效的数据模型和查询机制,Prometheus 能够处理大规模的时间序列数据。
往期推荐:
- 一文带你了解什么是CNCF&云原生
- Kubernetes(k8s)从入门到实战全套教程
- 全网最全 docker 和 k8s 工作中常用命令手册
- Hadoop HA on k8s 快速部署
- 【云原生】zookeeper + kafka on k8s 环境部署
- 【云原生】Presto/Trino on k8s 环境部署
- 【云原生】Azkaban on k8s 讲解与实战操作
- 【云原生】Flink on k8s 讲解与实战操作
- 【云原生】Spark on k8s 讲解与实战操作
- 【云原生】Elasticsearch + Kibana on k8s 讲解与实战操作
- 【云原生】k8s 管理平台 rancher
- 【云原生】Prometheus+Grafana on K8s 环境部署
- 通过 docker-compose 快速部署 Hadoop 集群极简教程
- 通过 docker-compose 快速部署 Hive 详细教程
- 【大数据】通过 docker-compose 快速部署 Presto(Trino)保姆级教程
- 通过 docker-compose 快速部署 Apache Ambari 保姆级教程
- 通过 docker-compose 快速部署 DolphinScheduler 保姆级教程
关注我微信公众号:大数据与云原生技术分享,获取大数据、k8s等整套学习资料,如本篇文章对您有所帮助,麻烦帮忙一键三连(点赞、转发、收藏)~
相关推荐
- 自学Python,写一个挨打的游戏代码来初识While循环
-
自学Python的第11天。旋转~跳跃~,我~闭着眼!学完循环,沐浴着while的光芒,闲来无事和同事一起扯皮,我说:“编程语言好神奇,一个小小的循环,竟然在生活中也可以找到原理和例子”,同事也...
- 常用的 Python 工具与资源,你知道几个?
-
最近几年你会发现,越来越多的人开始学习Python,工欲善其事必先利其器,今天纬软小编就跟大家分享一些常用的Python工具与资源,记得收藏哦!不然下次就找不到我了。1、PycharmPychar...
- 一张思维导图概括Python的基本语法, 一周的学习成果都在里面了
-
一周总结不知不觉已经自学Python一周的时间了,这一周,从认识Python到安装Python,再到基本语法和基本数据类型,对于小白的我来说无比艰辛的,充满坎坷。最主要的是每天学习时间有限。只...
- 三日速成python?打工人,小心钱包,别当韭菜
-
随着人工智能的热度越来越高,许多非计算机专业的同学们也都纷纷投入到学习编程的道路上来。而Python,作为一种相对比较容易上手的语言,也越来越受欢迎。网络上各类网课层出不穷,各式广告令人眼花缭乱。某些...
- Python自动化软件测试怎么学?路线和方法都在这里了
-
Python自动化测试是指使用Python编程语言和相关工具,对软件系统进行自动化测试的过程。学习Python自动化测试需要掌握以下技术:Python编程语言:学习Python自动化测试需要先掌握Py...
- Python从放弃到入门:公众号历史文章爬取为例谈快速学习技能
-
这篇文章不谈江流所专研的营销与运营,而聊一聊技能学习之路,聊一聊Python这门最简单的编程语言该如何学习,我完成的第一个Python项目,将任意公众号的所有历史文章导出成PDF电子书。或许我这个Py...
- 【黑客必会】python学习计划
-
阅读Python文档从Python官方网站上下载并阅读Python最新版本的文档(中文版),这是学习Python的最好方式。对于每个新概念和想法,请尝试运行一些代码片段,并检查生成的输出。这将帮助您更...
- 公布了!2025CDA考试安排
-
CDA数据分析师报考流程数据分析师是指在不同行业中专门从事行业数据搜集、整理、分析依据数据作出行业研究评估的专业人员CDA证书分为1-3级,中英文双证就业面广,含金量高!!?报考条件:满18...
- 一文搞懂全排列、组合、子集问题(经典回溯递归)
-
原创公众号:【bigsai】头条号:程序员bigsai前言Hello,大家好,我是bigsai,longtimenosee!在刷题和面试过程中,我们经常遇到一些排列组合类的问题,而全排列、组合...
- 「西法带你学算法」一次搞定前缀和
-
我花了几天时间,从力扣中精选了五道相同思想的题目,来帮助大家解套,如果觉得文章对你有用,记得点赞分享,让我看到你的认可,有动力继续做下去。467.环绕字符串中唯一的子字符串[1](中等)795.区...
- 平均数的5种方法,你用过几种方法?
-
平均数,看似很简单的东西,其实里面包含着很多学问。今天,分享5种经常会用到的平均数方法。1.算术平均法用到最多的莫过于算术平均法,考试平均分、平均工资等等,都是用到这个。=AVERAGE(B2:B11...
- 【干货收藏】如何最简单、通俗地理解决策树分类算法?
-
决策树(Decisiontree)是基于已知各种情况(特征取值)的基础上,通过构建树型决策结构来进行分析的一种方式,是常用的有监督的分类算法。决策树算法是机器学习中的一种经典算法,它通过一系列的规则...
- 面试必备:回溯算法详解
-
我们刷leetcode的时候,经常会遇到回溯算法类型题目。回溯算法是五大基本算法之一,一般大厂也喜欢问。今天跟大家一起来学习回溯算法的套路,文章如果有不正确的地方,欢迎大家指出哈,感谢感谢~什么是回溯...
- 「机器学习」决策树——ID3、C4.5、CART(非常详细)
-
决策树是一个非常常见并且优秀的机器学习算法,它易于理解、可解释性强,其可作为分类算法,也可用于回归模型。本文将分三篇介绍决策树,第一篇介绍基本树(包括ID3、C4.5、CART),第二篇介绍Ran...
- 大话AI算法: 决策树
-
所谓的决策树算法,通俗的说就是建立一个树形的结构,通过这个结构去一层一层的筛选判断问题是否好坏的算法。比如判断一个西瓜是否好瓜,有20条西瓜的样本提供给你,让你根据这20条(通过机器学习)建立起...
- 一周热门
- 最近发表
- 标签列表
-
- kubectlsetimage (56)
- mysqlinsertoverwrite (53)
- addcolumn (54)
- helmpackage (54)
- varchar最长多少 (61)
- 类型断言 (53)
- protoc安装 (56)
- jdk20安装教程 (60)
- rpm2cpio (52)
- 控制台打印 (63)
- 401unauthorized (51)
- vuexstore (68)
- druiddatasource (60)
- 企业微信开发文档 (51)
- rendertexture (51)
- speedphp (52)
- gitcommit-am (68)
- bashecho (64)
- str_to_date函数 (58)
- yum下载包及依赖到本地 (72)
- jstree中文api文档 (59)
- mvnw文件 (58)
- rancher安装 (63)
- nginx开机自启 (53)
- .netcore教程 (53)