Prometheus学习系列(三)之Prometheus 概念:数据模型、metric类型、任务、实例
前言
本文来自Prometheus官网手册1、Prometheus官网手册2 和 Prometheus简介
说明
metrics和labels(度量指标名称和标签)
每一个时间序列数据由metric度量指标名称和它的标签labels键值对集合唯一确定。
这个metric度量指标名称指定监控目标系统的测量特征(如:http_requests_total- 接收http请求的总计数)。
注意:冒号保留用于用户定义的录制规则。 它们不应被exporter或直接仪表使用。
labbels开启了Prometheus的多维数据模型:对于相同的度量名称,通过不同标签列表的结合, 会形成特定的度量维度实例。(例如:所有包含度量名称为/api/tracks的http请求,打上method=POST的标签,则形成了具体的http请求)。这个查询语言在这些度量和标签列表的基础上进行过滤和聚合。改变任何度量上的任何标签值,则会形成新的时间序列图。
metric度量指标可能包含ASCII字母、数字、下划线和冒号,他必须配正则表达式[a-zA-Z_:][a-zA-Z0-9_:]*。
label标签名称可以包含ASCII字母、数字和下划线。它们必须匹配正则表达式[a-zA-Z_][a-zA-Z0-9_]*。
带有_下划线的标签名称被保留内部使用,标签labels值包含任意的Unicode码。
具体详见metrics和labels命名最佳实践。
样本
样本形成了实际的时间序列数据列表。每个采样值包括:
- 一个64位的浮点值
- 一个精确到毫秒级的时间戳
Notation(符号)
表示一个度量指标和一组键值对标签,需要使用以下符号:
[metric name]{[label name]=[label value], ...}
例如,度量指标名称是api_http_requests_total, 标签为method="POST", handler="/messages" 的示例如下所示:
api_http_requests_total{method="POST", handler="/messages"}
这些命名和OpenTSDB使用方法是一样的。
度量指标类型
Prometheus客户端库提供了四种核心的metrics类型,这四种类型目前仅在客户端库和wire协议中区分。Prometheus服务还没有充分利用这些类型,将来可能会发生改变。
Counter(计数器)
counter 是表示单个单调递增计数器的累积度量,其值只能在重启时增加或重置为零。 例如,您可以使用计数器来表示所服务的请求数,已完成的任务或错误。
不要使用计数器来暴露可能减少的值。例如,不要使用计数器来处理当前正在运行的进程数,而是使用gauge。
客户端使用计数器的文档:
Gauge(测量器)
gauge是一个度量指标,它表示一个既可以递增, 又可以递减的值。
测量器主要测量类似于温度、当前内存使用量等,也可以统计当前服务运行随时增加或者减少的Goroutines数量
客户端使用计量器的文档:
Histogram(柱状图)
直方图对观察结果进行采样(通常是请求持续时间或响应大小等),并将其计入可配置存储桶中。它还提供所有观察值的总和。基本度量标准名称为<basename>的直方图在scrape期间显示多个时间序列:
- 暴露的观察桶的累积计数器:
<basename>_bucket{le="<upper inclusive bound>"} - 所有观测值的总和:
<basename>_sum - 已观察到的事件数:
<basename>_count,和<basename>_bucket{le="+Inf"}相同
使用histogram_quantile函数, 计算直方图或者是直方图聚合计算的分位数阈值。 一个直方图计算Apdex值也是合适的, 当在buckets上操作时,记住直方图是累计的。详见直方图和总结
客户库的直方图使用文档:
Summary
类似histogram柱状图,summary是采样点分位图统计(通常是请求持续时间和响应大小等)。虽然它还提供观察的总数和所有观测值的总和,但它在滑动时间窗口上计算可配置的分位数。基本度量标准名称<basename>的summary在scrape期间公开了多个时间序列:
- 流φ-quantiles (0 ≤ φ ≤ 1), 显示为
<basename>{quantiles="[φ]"} <basename>_sum, 是指所有观察值的总和<basename>_count, 是指已观察到的事件计数值
有关φ-分位数,Summary用法和histogram图差异的详细说明,详见histogram和summaries
有关summaries的客户端使用文档:
任务与实例
例如, 一个被称作api-server的任务有四个相同的实例。
job: api-server
instance :1.2.3.4:
instance :1.2.3.4:
instance :5.6.7.8:
instance :5.6.7.8:
自动化生成的标签和时间序列
当Prometheus拉取一个目标,会自动地把两个标签添加到度量名称的标签列表中,分别是:
job: 目标所属的配置任务名称。
instance: 被抓取的目标网址的一部分: host:port
如果以上两个标签二者之一存在于采样点中,这个取决于honor_labels配置选项。详见文档
对于每个采样点所在服务instance,Prometheus都会存储以下的度量指标采样点:
up{job="[job-name]", instance="instance-id"}:,表示采样点所在服务健康;,标识抓取失败
scrape_duration_seconds{job="[job-name]", instance="[instance-id]"}: 抓取的持续时间
scrape_samples_post_metric_relabeling{job="<job-name>", instance="<instance-id>"}: 应用度量标准重新标记后剩余的样本数。
scrape_samples_scraped{job="<job-name>", instance="<instance-id>"}: 目标暴露的样本数量。
运行时间序列对于实例可用性监视很有用。
Prometheus学习系列(三)之Prometheus 概念:数据模型、metric类型、任务、实例的更多相关文章
- prometheus学习系列十一: Prometheus和AlertManager的高可用
前面的系列中, prometheus和alertmanager都是单机部署的,会有单机宕机导致系统不可用情况发生.本文主要介绍下prometheus和alertmanager的高可用方案. 服务的高可 ...
- prometheus学习系列十一: Prometheus 安全
prometheus安全 我们这里说的安全主要是基本认证和https2种, 目前这2种安全在prometheus中都没有的, 需要借助第三方软件实现, 这里以nginx为例. 基本认证 配置基本认证 ...
- prometheus学习系列十一: Prometheus pushgateway的使用
由于网络问题或者安全问题,可能我们的数据无法直接暴露出一个entrypoint 给prometheus采集. 这个时候可能就需要一个pushgateway来作为中间者完成中转工作. promethe ...
- prometheus学习系列九: Prometheus AlertManager使用
在Prometheus的报警系统中,是分为2个部分的, 规则是配置是在prometheus中的, prometheus组件完成报警推送给alertmanager的, alertmanager然后管理这 ...
- prometheus学习系列五: Prometheus配置文件
在prometheus监控系统,prometheus的职责是采集,查询和存储和推送报警到alertmanager.本文主要介绍下prometheus的配置文件. 全局配置文件简介 默认配置文件 [ro ...
- prometheus学习系列三:node_exporter安装部署
node_exporter简介 node_exporter安装部署 [root@node00 ~]# cd /usr/src/ [root@node00 src]# wget https://gith ...
- prometheus学习系列四: Prometheus详述
数据模型 Prometheus 是将所有数据存为时序数据. 每个时序数据是由指标名称和可选的键值对(称之为标签)唯一标识. 度量类型 counter: 单调递增的计数器,如果标识已经服务的请求数量可以 ...
- prometheus学习系列十一: Prometheus exporter详解
exporter详解 前面的系列中,我们在主机上面安装了node_exporter程序,该程序对外暴露一个用于获取当前监控样本数据的http的访问地址, 这个的一个程序成为exporter,Expor ...
- prometheus学习系列十一: Prometheus 采集器的编写
在前面的文章已经写了官方的几个exporter的使用了. 在实际使用环境中,我们可能需要收集一些自定义的数据, 这个时候我们一般是需要自己编写采集器的. 快速入门编写一个入门的demo 编写代码 fr ...
- prometheus学习系列十一: Prometheus 报警规则配置
prometheus监控系统的的报警规则是在prometheus这个组件完成配置的. prometheus支持2种类型的规则,记录规则和报警规则, 记录规则主要是为了简写报警规则和提高规则复用的, 报 ...
随机推荐
- ASI和AFN的区别
ASI总结 发送请求的2个对象 1.发送GET请求 ASIHttpRequest 2.发送POST请求 ASIFormDataRequest 二发送请求 1.同步请求 startSynchronous ...
- webpack 4.x 从零开始初始化一个vue项目
创建目录 项目名称: vue-init app css reset.sass js home index.vue router index.js main.js App.vue views index ...
- ubuntu下仅仅获取网卡一的ip地址 && shell中字符串拼接
问题描述: ubuntu下仅仅获取网卡一的ip地址 问题背景: eth0,eth1,eth2……代表网卡一,网卡二,网卡三…… lo代表127.0.0.1,即localhost | 问题描述: 已知字 ...
- 利用etcd实现服务注册和服务发现
文章目录 服务注册 服务发现 协议编写 服务端实现 客户端实现 实验结果 参考文章 服务注册 主要逻辑在go func函数里面,先是去etcd获取一下服务,没有获取到的话就注册进去. package ...
- ARTS-S gitlab与jenkins实现持续集成
jenkins配制 系统管理->管理插件->可选插件->选择安装 Gitlab Hook Plugin和Build Authorization Token Root Plugin插件 ...
- GitHub Actions 完成CI CD
在之前我的部署.版本控制.CI.CD都是在Jenkins 下来完成的 在前几天看到github上的一个新玩具actions,简直惊为天人 它能在你的仓库触发事件(Push,Pull,issue,... ...
- 【HTML5】296- 重新复习 HTML5 的 5大存储方式
点击上方"前端自习课"关注,学习起来~ 一.介绍 在 HTML5 规范之前,存储主要是用 cookies . cookies 的缺点有: 在请求头上带着数据: 大小是 4k 之内: ...
- [Python]实现字符串倒序的三种方法
a=" 1: print(a[::-1]) 2: b=list(a) b.reverse() print(''.join(b)) 3: c=len(a)-1 str_1=[] while(c ...
- 利用用阿里云API实现DDNS
前言 之前动态域名解析是用的是腾达路由器上集成的第三方动态解析服务花生壳,解析费用一年40元.后来觉得域名前缀不好,想换掉,花生壳需要重新购买新的域名解析费用,增加1条或者2条动态解析无所谓,万一以后 ...
- 在C#中将对象序列化成Json格式
在C#中将对象转换为Json格式的字符串. //匿名对象 var dataObj = new { Number = 1, Name = "Json" }; //将返回的时间格式解析 ...