暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Prometheus TSDB 时序数据库工作原理?

  




Prometheus TSDB(时序数据库)是 Prometheus 的内置数据库,专门用于存储和查询时间序列数据。

以下是 Prometheus TSDB 的工作原理:

  1. 数据模型指标(Metric):指标是 Prometheus 中的基本数据单元,每个指标由一个名称和一个可选的标签集(key/value 对)组成。

    1. 时间序列(Time series):每个独特的指标名称和标签集组合形成一个时间序列。

    2. 样本(Sample):时间序列由一系列样本组成,每个样本包含一个时间戳和一个浮点数。

  2. 数据收集Prometheus:通过 HTTP 拉取模式定期从目标(如服务的 metrics 端点)收集指标数据。

  3. 数据存储内存存储:收集到的数据首先存储在内存中,以便于快速访问和处理。

    1. 磁盘存储:为防止数据丢失,内存中的数据会定期刷新到磁盘上。

  4. 存储结构块结构:磁盘上的 Prometheus 数据存储在一个或多个块中,每个块包含特定时间范围内的数据。

    1. 块文件:每个块由多个文件组成,包括索引文件、块头文件、块数据文件等。

  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 能够处理大规模的时间序列数据。



往期推荐

复制
 


复制



后台回复“加群”,带你进入高质量技术交流群

本公众号主要分享云原生、大数据Hadoop、Linux、DevOps等技术,欢迎点击👇下方卡片关注“我“!!!


文章转载自大数据与云原生技术分享,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论