0
点赞
收藏
分享

微信扫一扫

Prometheus 时序数据

是她丫 2023-07-13 阅读 73

一 时序索引

        Prometheus 存储的是时序数据,时间戳(timestamp)来源于服务端本地的系 统时间。Prometheus 使用 Unix 时间戳(即自 1970 年 1 月 1 日 00:00:00 UTC 起经过的秒数)表示时间。

        数 据 格 式 :

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

({...}里的就是标签部分),显然数据格式就是 由指标名字和一组 KV 标签构成,其实还得加上时间戳,构成三元组(metric,label set,timestamp)。

二 时序格式的优缺点

优点:

        1)高灵活性 。Prometheus 的时序格式采用了 K-V 方式来描述指标数据,使得用户可使用任意数量和类型的标签来对数据进行分类和聚合。这种灵活性使得 Prometheus 可以适应多种场景和需求;

        2)高存储效率 。Prometheus 采用了块压缩和切分等技术,使得它在存储时序数据方面非常高效,可以 支持长期存储大量数据 ,且不会因数据规模增加而导致 性能下降;

        3)查询速度 快。基于 prometheus 的时序数据,Prometheus 的查询引擎使用了一些优化方法可 快速 地处理大量的时序数据。

缺点:

        1) 数据冗余 。在 Prometheus 的时序格式中,每条指标数据都包含了一个完整的 label set,这样可能会导致数据冗余问题。如果数据的标签数过多,则会增加 存储和传输的负担,降低效率;

        2)标签维护 麻烦,标签的数量和选择会影响到查询性能和存储空间的占用。 同时,如果标签的命名不规范或者标签值发生变化,可能会导致查询结果出现错误;

        3)不支持原始数据 :是由于 Prometheus 的时序格式采用了块压缩和切分等技术,这可能会导致一些高精度的计算或者统计分析无法进行。

三 时序概念

        标签:也来⾃ 采集数据 ,可 ⾃定义 ,也可直接使 默认的 exporter 提供的标签项,其中 instance 标签最为重要,因为与机器实例相关联。

        时序的名字即指标名字仅可由 ASCII 字符、数字、下划线及冒号构成,必须满足正则表达式 

[a-zA-Z_:][a-zA-Z0-9_:]*

且名字应具有清晰化语义化 。如 http_requests_total 即 HTTP 请求总数。 而标签能区分不同的实例,标签名称仅可由 ASCII 字符、数字及下划线构成, 其中“_”开头一般属于 prometheus 保留字。

        另外,Target 是一个监控目标,通常是一个 URL,比如想监测一个 Redis 实例,那么通过配置实例 URL 和端口就可以让这个实例成为一个 target。

        Job 是一组相关 Target 的集合。通常是针对不同特点应用、容器或服务,比 如监控一个 Redis 存储服务,那么就需要检测所有 Redis 实例的总体性能情况。

四 类型概念

        Prometheus 有 4 种指标数据类型,其中最常用的是 Gauge 和 Counter。即时序数据指标类型。

Counter

        中文意思为计数器,表示单调累增的指标数据,数值只能在重启或重置为零。

        通常记录服务的请求数、已完成的任务数等。这里的递增很关键,官网的建议不要用Counter 来显示可能减小的数值,如果有用 Gauge 类型。通常 Counter 类型数据会在命名上以 “_total”为后缀,但这并不是强制的。

Gauge

        中文意思是仪表,表⽰ 搜集的数据是 瞬时的值。不像 Counter 那样持续增长,而是比较无状态、无规律的、使用起来相对简单,通常适用:内存使用情况、并发请求等。 不需要increase()、rate()之类的函数计算单位时间段的增量。

 

Histogram

        中文意思为直方图,主要⽤ 于表 ⼀段时间序列范围 内对数据进 采样(通常是请求持

续时间、响应 ⼤ ⼩ 等)。常命名格式为由

<base_name>_bucket{le="<upper inclusive bound>"}, 
<base_name>_sum,<base_name>_count,<base_name>_bucket{le="+Inf"}

组成。不过 Histogram 计算基于线性分布,桶的区间越大数据会越不准确。

 

Summary

        要⽤ 于表 ⽰⼀ 段时间内数据采样结果(通常是请求持续时间、响应 ⼤⼩ 等),它直接存储了 quantile 数据,⽽ 不是根据统计区间计算出来的。由

<base_name>{quantile=" <φ>"}, <base_name>_sum, <base_name>_count

组成,Summary 和 Histogram 是比较类似的。相比于 Histogram 少了存储 bucket 的存储空间,但需要在计算上产生压力。

举报

相关推荐

0 条评论