不用采集规则就可以采集(Prometheusmetrics的入门介绍(二)-k/v的数据形式)
优采云 发布时间: 2021-10-20 18:19不用采集规则就可以采集(Prometheusmetrics的入门介绍(二)-k/v的数据形式)
1、Prometheus 度量的概念
2、k/v 数据格式
3、Prometheus 导出器的使用(拉取表单 采集 数据)
4、Prometheus pushgateway介绍(推送表单采集数据)
在Prometheus监控中,来自采集的数据统称为metrics数据
度量,熟悉大数据系统的人,从来没有听说过度量。当我们需要对某个系统中的某个服务进行监控和统计时,就需要用到Metrics。
Metrics是采样数据的总称(metrics不代表特定的数据格式,而是度量单位的抽象)
几种主要类型的指标
最简单的指标是简单的返回值或瞬时状态。例如,我们想以更简单的方式衡量一个处理队列中的任务数量。
例如:如果我想监控硬盘容量或内存使用情况,我应该使用 Gauges 的度量格式来衡量
因为硬盘的容量或使用的内存量会随着时间的推移而不断地、瞬间地发生变化。
这种变化是不规律的,目前是多少,采集又是多少
不确定会不会继续增长,也不确定会不会继续减少。
就这样了。这是所用仪表类型的代表。
如图,CPU的波动是采集 Gauge形式的metrics数据不规则
计数器类型指标
计数器是一个计数器。它从数据量 0 开始,累加计算。理想状态下,只能永远增持,不会减持(某些特殊情况另说)
例如
例如,用户访问的抽样数据
我们的产品被用户访问一次,10分钟后为1,累计到100
一天后累积到20000
一周后累积到100000-150000
如下图所示。计数器数据从0开始,不断累加,不断累加,所以在理想状态下,没有任何减少的可能。
最多只能保持一个不变(例如:用户不再访问,那么当前累计总访问量将保持为一条水平线,直到再次访问)
下图显示了一个计数器类型的指标数据采集。采集 为用户累计访问量
直方图
直方图统计的分布。例如,最小值、最大值、中位数、中位数、第 75 个百分位数、第 90 个百分位数、第 95 个百分位数、第 98 个百分位数、第 99 个百分位数和第 99.9 个百分位数。
这是一种特殊的度量数据类型,它代表一个
近似百分比估计
这是最难理解的指标类型(但它非常实用)。估计大部分数学家都会看上面几行的定义,header会很大。
介绍什么是直方图数据
直方图类型(prometheus其实提供了一个基于直方图算法的函数,可以直接使用),可以分别统计所有用户的响应时间~=0.05秒,多少个0~0. 05 多少秒,> 2 秒,> 10 秒 => 1%
可以清楚地看到在当前系统中,有多少用户(或请求)处于基本正常状态,有多少是极速用户,有多少是慢速或有问题的请求
k/v 数据格式
Prometheus的数据类型是根据metric的类型计算的
对于采集返回的数据类型,必须以特定的数据格式查看和使用
看一个exporter采集服务器上的k/v格式metrics数据
当导出器 (node_exporter) 安装并在受监控服务器上运行时
使用简单的curl命令查看exporter采集的metrics数据,以k/v的形式显示并保存curl localhost:9100/metrics
curl后输出的结果如上图
Prometheus_server
带#的那一行是注释行,解释下面的k/v值是什么采样数据
而真正关心的是数据
用空格分隔 KEY/Value 数据
第一个代表采集的当前最大文件句柄数为65535
第二个代表采集当前打开的文件句柄数为10。
也看看这里
第二行#告诉我们这个数据的metrics类型属于gaugeexporter的使用
官网提供了丰富的成型导出器插件,可以使用
举几个例子
pushgateway的概念介绍
导出器首先安装在被监控的服务器上并在后台运行
然后自动采集系统数据,它本身是一个HTTP_server,可以由Prometheus服务器定期发送到HTTP GET以pull的形式获取数据
如果你逆转这个过程
push 18 pushgatewat 的形式是安装在客户端还是服务器上(其实安装在哪里都无所谓)
pushgateway 本身也是一个 http 服务器
运维用自己的脚本抓取自己想要的监控数据,然后push到pushgateway再pushgateway到prometheus服务器是反向的被动模式
已经有了node_exporter采集这么强大的pull形式,为什么还需要pushgateway形式呢?
1、 虽然出口商采集的类型已经很丰富了,但是我们还是需要大量的自制监测数据,不定期的自行定制
2、exporter 由于采集的数据类型比较多,其实很多数据或者大部分数据其实并没有用到我们的监控中。使用pushgateway就是定义一段数据。采集着一节约资源
3、 开发一个新的自定义pushgateway脚本比开发一个全新的exporter更简单、更快捷!!!(exporter的开发需要使用真正的编程语言,shell等快速脚本不行,需要了解很多Prometheus自定义编程格式才能开始做大量工作)
4、虽然exporter已经很丰富了,但是我们需要的采集的形式还有很多,exporter不能提供,或者现有expoter不支持,但是如果用pushgateway的话可以随心所欲 灵活,可以随心所欲,而且非常快