prometheus监控实战--数据

1 prometheus数据存储方式

prometheus才用time-series(时间序列)的方式以一种自定义格式存储在本地硬盘,本地TSDB以每两小时为间隔来分block(块)存储,每一块又分为多个chunk文件,chunk文件存放着采集的T-S数据,metadata和索引文件(index)

index文件是对metrics(prometheus中一次K/V采集数据叫做一个metrics)和labels进行索引,之后存储在chunk,chunk作为存储的基本单位

prometheus平时将采集的数据先都存在内存中,以类似缓存的方式用于加快搜索和访问,当出现宕机时,prometheus的保护机制WAL可以将数据定期存入硬盘chunk中,并在重新启动时恢复到内存中

通过启动参数--storage.tsdb.path=“/data”指定tsdb路径,即采集数据存放路径,wal目录下数据相当于对存放在内存中的近期数据的冷备

2 prometheus数据采集方式

prometheus的客户端主要有两种采集方式

pull主动拉取和push被动推送

pull:被监控主机先安装各类exporters,exporter以守护进程方式运行,在主机系统上采集数据

exporter本身也是一个http_server,可以对htp请求作出相应,返回数据(K/V metrics)

prometheus server通过pull方式(HTTP get)去访问每个节点上的exporter并采样回需要的数据

push:客户端或者服务端安装pushgateway插件,使用运维自行开发的各种脚本把监控数据组织成K/V的形式 metrics形式发送给pushgateway,之后pushgateway再推送给prometheus

3 prometheus数据格式

prometheus监控中对于监控过来的数据统称为metrics数据

metrics是一种对采样数据的总称(metrics并不代表具体的数据格式,是一种对于度量计算单位的抽象)

metrics的几种数据类型:

gauges:最简单的度量指标,只有一个简单的返回值(瞬时状态)

例如监控磁盘或者内存的使用量,那么就应该使用gauges格式来度量

counts: 从数据量为0开始累积计算,在理想状态下只能永远增长,不会降低

例如对用户访问量的采样数据

histograms:统计数据的分布情况,比如最小值、最大值、中间值,还有中位数,75百分位,90百分位,95百分位,98百分位,99百分位,99.9百分位的值,代表的是一种近似的百分比估值

例如Http_response_time(http响应时间)代表是一次用户http请求在系统传输和执行过程中总共花费的时间

通过histogram类型可以分别统计出全部用户的响应时间中=0.05秒的有多少,00.05秒的有多少,>2秒的有多少

4 metrics

通过http访问监控节点端口可得到export采集到的实时metrics数据,以K/V的形式展现和保存

curl localhost:9100/metrics
go_gc_duration_seconds{quantile="0"} 2.1286e-05

prometheus的每条指标数据由指标名称和指标标签(键值对)来标识,如下:

api_http_requests_total{methodPOST", handler="/messages"}

转载请注明出处,谢谢!!!
原文地址:https://www.cnblogs.com/haijunzhang/p/14034674.html