目录
前言
本文对Prometheus的一些知识点进行介绍,并对它的配置应用作了解析。
一、Prometheus相关概念
1、内部存储机制
Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了200多G(引用官方PPT)。
Prometheus内部主要分为三大块:
- Retrieval是负责定时去暴露的目标页面上去抓取采样指标数据
- Storage是负责将采样数据写磁盘
- PromQL是Prometheus提供的查询语言模块。
2、数据类型
2.1 Counter(计数器)
一种累加的 metric,典型的应用如:请求的个数,结束的任务数, 出现的错误数等等。
【例如】查询 http_requests_total{method=“get”, job=“Prometheus”, handler=“query”} 返回 8,10 秒后,再次查询,则返回 14。
2.2 Gauge(仪表盘)
数据是一个瞬时值,如果当前内存用量,它随着时间变化忽高忽低。
【例如】go_goroutines{instance=“172.17.0.2”, job=“Prometheus”} 返回值 147,10 秒后返回 124。
2.3 Histogram(直方图)
Histogram 取样观测的结果(一般是请求持续时间或响应大小)并在一个可配置的分布区间(bucket)内计算这些结果。其也提供所有观测结果的总和。
Histogram 有一个基本 metric名称 <basename>,在一次抓取中展现多个时间序列:
累加的 counter,代表观测区间:<basename>_bucket{le=""}
所有观测值的总数:<basename>_sum
观测到的事件数量:<basenmae>_count
例如 Prometheus server 中prometheus_local_storage_series_chunks_persisted, 表示 Prometheus 中每个时序需要存储的 chunks 数量,我们可以用它计算待持久化的数据的分位数。
2.4 Summary(摘要)
和 histogram 相似,summary 取样观测的结果(一般是请求持续时间或响应大小)。但是它还提供观测的次数和所有值的总和,它通过一个滑动的时间窗口计算可配置的分位数。
Summary 有一个基本的 metric名称 <basename>,在一次抓取中展现多个时间序列:
观测事件的流式φ-分位数(0 ≤ φ ≤ 1):{quantile=“φ”}
所有观测值的总和:<basename>_sum
观测的事件数量:<basename>_count
例如 Prometheus server 中 prometheus_target_interval_length_seconds。