我已经仔细阅读了普罗米修斯的文档,但对我来说仍然有点不清楚,所以我来这里是为了确认我的理解
(请注意,为了尽可能简单的示例,我使用1秒作为刮取间隔,时间范围-即使在实践中不可能)
尽管我们在每秒钟刮取一个计数器,计数器的值现在是30。为此,我们有以下时间序列:
second counter_value increase calculated by hand(call it ICH from now)
1 1 1
2 3 2
3 6 3
4 7 1
5 10 3
6 14 4
7 17 3
8 21 4
9 25 4
10 30 5
我们想在此数据集上运行一些查询。
1.rate()
官方文件声明:
“rate(v范围向量):计算范围向量中时间序列每秒的平均增长率。”
用外行的术语来说,这意味着我们每秒钟都会得到增量,给定秒的值将是给定范围内的平均增量?
以下是我的意思:
速率(计数器[1s]):将匹配ICH,因为平均值将仅从一个值计算。
速率(计数器[2s]):将在2秒内从增量中获得平均值,并将其分布在秒之间前2秒我们得到了总增量3,这意味着平均是1.5/秒。
second result
1 1,5
2 1,5
3 2
4 2
5 3,5
6 3,5
7 3,5
8 3,5
9 4,5
10 4,5
速率(计数器[5s]):将从5秒内的增量中获得平均值,并将其分布在各秒之间
与[2s]相同,但我们从5秒的总增量中计算平均值。
second result
1 2
2 2
3 2
4 2
5 2
6 4
7 4
8 4
9 4
10 4
因此,时间范围越大,我们得到的结果就越平滑。这些增加的总和将与实际计数器相匹配。
2.增加()
官方文件声明:
“增加(v范围向量):计算范围向量中时间序列的增加。”
对我来说,这意味着它不会在秒之间分配平均值,而是显示给定范围内的单个增量(使用外推)
增加(计数器[1s]):在我看来,这将与ICH和速率匹配1s,因为总范围和速率的基本粒度匹配<增加(计数器[2s]):前2秒我们总共增加了3,所以增加了2。秒将得到3的值,依此类推。。。
second result
1 3*
2 3
3 4*
4 4
5 7*
6 7
7 7*
8 7
9 9*
10 9
*用我的术语来说,这些值是指每秒的外推值
我理解得很好,还是我离那很远?
**反方向解释分析问题**
让我们假设我们有
rate(some_metric_name_count [3m]) = 2
这意味着在时间点计数器之前的3分钟间隔内,每秒增加2个,在这3分钟之后,此计数器增加2*180(秒)=360。
这也意味着在这种情况下:
increase(some_metric_name_count [3m]) ~ 360
发动机罩下主要针对第一个时间点有轻微的近似值,因此可能存在2的绝对误差,这意味着:
increase(some_metric_name_count [3m]) = 360 +/- 2
它涵盖了从[358,362]开始的间隔,包括间隔的结束
在理想情况下(样本的时间戳正好在第二秒,规则评估正好在第二秒进行)rate(计数器[1s])
将准确返回ICH值,rate(计数器[5s])
将返回ICH和前4个的平均值。除了第二个1的ICH是0,不是1,因为没有人知道你的计数器是0:可能它在那里增加了,可能昨天增加了,从那时起一直保持在1。(这就是为什么第一次出现值为1的计数器时不会看到增加的原因,因为您的代码刚刚创建并增加了它。)
增加(计数器[5s])
正好是速率(计数器[5s])*5
(和增加(计数器[2s])
正好是速率(计数器[2s])*2
)。
现在,在现实世界中发生的事情是,您的样本并不是完全每秒都在第二次采集,规则评估也不是完全在第二次采集。因此,如果你有一堆相隔(或多或少)1秒的样本,并且你使用普罗米修斯的速率(计数器[1s])
,你将不会得到任何输出。这是因为普罗米修斯所做的是,它获取1秒范围内的所有样本[now()-1s,now()]
(在绝大多数情况下都是单个样本),试图计算速率,但失败了。
如果您查询费率(计数器[5s])
oth,普罗米修斯将挑选范围[now()-5s,now]
内的所有样本(5个样本,平均覆盖约4秒,比如[t1,v1],[t2,v2],[t3,v3],[t4,v4],[t5,v5]
),并且(假设您的计数器在间隔内没有重置)将返回(v5-v1)/(t5-t1)
。也就是说,它实际计算的是~4s而不是5s的增长率。
增加(计数器[5s])
将返回(v5-v1)/(t5-t1)*5
,因此增加的速率超过〜4秒,外推为5秒。
由于样本的间隔不完全一致,的速率
和的增加
通常会返回整数计数器的浮点值(这对于的速率
来说很明显,但对于的增加
来说就不那么重要了)。
null 使用默认配置和轻微的定制。 我可以访问prometheus、grafana和alertmanager,查询度量标准并查看精美的图表。 但是prometheus-adapter在启动时不断抱怨它不能访问/发现度量: 在我的设置中,对于prometheus-adapter的正确值是什么?
我有一个启用了监视和日志记录的GKE集群(1.15)。到目前为止,我们一直使用metrics-server对StackDriver进行度量监控。对于其他自定义度量标准,我们使用了自定义度量标准适配器,该适配器使用Prometheus-to-SD将度量标准刮取并导出到stackdriver。 我想开始看看prometheus是否能给我们提供其他功能,比如HPA的聚合度量。 在GCP marketpl
我将我的GKE API服务器升级到1.6,并正在将节点升级到1.6,但遇到了一个障碍... 我有一个prometheus服务器(版本1.5.2),运行在一个由Kubernetes部署管理的pod中,其中两个节点运行版本1.5.4Kubelet,一个新节点运行版本1.6。 但普罗米修斯仍然得到401。 更新:就像乔丹所说的kubernetes认证问题。在这里看到新的、更集中的问题;https://s
我有一个应用程序,当它收到一个特定的HTTP请求时,它会增加一个Prometheus计数器。该应用程序在Kubernetes中运行,具有多个实例,并且每天重新部署多次。使用查询生成一个图形,显示每个实例的累积请求计数,如预期的那样。 我想创建一个Grafana图表,显示过去7天收到的请求的累积频率。 我的第一个想法是使用来说明从7天窗口(如图所示)之外开始的任何指标,然后对这些值进行
根据Micrometer的文档https://Micrometer.io/docs/concepts#_server_side,框架(Micrometer)应该处理将计时器度量从绝对量转换为速率 下面的代码模拟一个伪定时器: 然而,在Prometheus中,我只看到单调增加的度量和而不是将它们视为速率 也许我误解了或者忽略了文档中的某些内容?
我要监控的应用程序为健康检查提供了一个apiendpoint,该endpoint使用json中的指标进行响应。例如: 我已经设置了Prometheus blackbox\u exporter,以监视此endpoint是否返回200 Ok,但理想情况下,我也希望获得这些指标。我知道instrumentation直接从应用程序导出这些数据。但是,由于应用程序已经在导出json对象中我想要的内容,我更希