无论作什么事情,咱们都须要作好充足的准备。盖房子须要打地基,根基不稳地动山摇。咱们学习也同样,因此咱们想学好一个东西必须根基要打牢。好了废话很少说了,咱们来打下prometheus的根基。
##数据模型
prometheus存储是时序数据(time-series),即按照相同时许(相同的名字和标签),以时间维度存储连续的数据的集合。正则表达式
时序(time series)是由名字(metrice),以及一组key/value
标签订义的,具备相同的名字以及标签属于同一时间序列。
时序的名字有ASCLL字符,数字,下划线,以及冒号组成,它必须知足正则表达式[a-zA-Z_:][a-zA-Z0-9_:]*
,其名字因该具备语义化(看到名字就知道这个抓取的是什么值),通常表示一个能够度量的指标,例如:http_requset_total
,表示http的总请求数。
时序的标签可使prometheus的数据更加丰富,可以区分具体不一样的实例,例如http_requests_total{method="POST"}
,能够表示全部的POST请求。
标签名称有ASCLL字符,数字,以及下划线组成,其中_
开头的属于prometheus保留,标签的只能够是任何ubicode字符,支持中文ide
按照莫哥时序以时间维度采集的数据,称之为样本,其值包含:学习
prometheus 时序格式 与OPenTSDB类似
<metric name>{<label name>=<label value>,....}
其中包含时序名字以及时序的标签。unix
获取的数值,只增长(减小),理想状态下是不会减小(增长)的。咱们每每用它记录服务的请求总量,错误总数code
最简单的度量指标,只有一个简单的返回值,或者叫作瞬时状态,例如:监控硬盘或者内存的使用量,在当前时间只有一个值,由于硬盘的容量和内存的使用量是随着时间的推移不断变化,没有规律可循索引
统计数据的分布状况,好比最大值,最小值,中间值还有中位数,75百分位,这是一种特殊的metrics数据类型,表明的是一种近似百分比内存
summary和histogram相似,由<basename>{quantile="<>"}
,<basename>_sum
,<basename>_count
组成,主要用于表示一段时间内数据采样结果(一般是请求持续时间或响应大小),它直接存储了quantile数据,而不是根据统计出区间计算出来的requests