我正在尝试使用摘要指标,但不太清楚应该在哪里调用 summary.observe?这是 prom-client 示例(您可以在 npm 上找到):
const client = require('prom-client');
const summary = new client.Summary({
name: 'metric_name',
help: 'metric_help'
});
summary.observe(10);
但是没有足够的信息如何使用它。
observe(10) 是什么意思?
我应该在哪里调用 summary.observe(10)?就在摘要指标声明之后或函数/端点调用结束时,例如:
const client = require('prom-client'); const summary = new client.Summary({ name: 'metric_name', help: 'metric_help' }); summary.observe(10); // do I put it here? async myFunc(){ await this.serviceCall(); summary.observe(10); // or here? }
有人有总结观察的好例子/解释吗?
最佳答案
首先,让我们澄清一下 summary 是什么是:摘要指标从事件中捕获单个观察结果并将它们汇总为许多相关指标:
- 值的总和(又名观察值)
- 观察次数
- 分位数
举个例子:如果你正在测量一个服务的响应时间:
首先,您创建一个摘要指标,提供
- 名称和标签(通常用于标识指标)- 例如:
foobar_request_duration_seconds
- 通常以某种方式指示测量窗口(观察次数或事件的最大年龄)
- 要计算的分位数列表 - 例如:0.1、0.5(中位数)、0.75、0.9
- 名称和标签(通常用于标识指标)- 例如:
对于每个请求,您将计算请求的响应时间 - 这是一个观察结果
- 然后将计算出的请求响应时间提供给摘要对象
当 Prometheus 抓取您的端点时,指标是根据观察到的响应时间度量计算的
foobar_request_duration_seconds_sum
:请求消耗的总秒数foobar_request_duration_seconds_count
:请求数(注意你可以用总和计算平均值)foobar_request_duration_seconds_seconds{quantile="0.1"}
:响应时间 10%(...所有配置的分位数都相同)
我希望这能帮助您理解 prom-client documentation :
第一个示例展示了如何指示要计算的分位数
new client.Summary({
name: 'metric_name',
help: 'metric_help',
percentiles: [0.01, 0.1, 0.9, 0.99]
});
第二个如何限制测量的窗口;在这里,测量是在过去 10 分钟内计算的(使用 5 个桶 - 这会影响值的平滑):
new client.Summary({
name: 'metric_name',
help: 'metric_help',
maxAgeSeconds: 600,
ageBuckets: 5
});
回到您的问题,observe()
方法应该针对您正在观察的内容调用。
如果您想测量 serviceCall()
返回的一些数据,您可以将其提供给摘要
number_bytes_exchanged = await this.serviceCall();
summary.observe(number_bytes_exchanged);
如果你想测量服务调用所花费的时间
const observe_response_time = summary.startTimer();
await this.serviceCall();
observe_response_time();
关于javascript - Prometheus summary.observe 方法有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56297842/