gpt4 book ai didi

javascript - Prometheus summary.observe 方法有什么作用?

转载 作者:搜寻专家 更新时间:2023-10-31 23:22:53 25 4
gpt4 key购买 nike

我正在尝试使用摘要指标,但不太清楚应该在哪里调用 summary.observe?这是 prom-client 示例(您可以在 npm 上找到):

    const client = require('prom-client');
const summary = new client.Summary({
name: 'metric_name',
help: 'metric_help'
});
summary.observe(10);

但是没有足够的信息如何使用它。

  1. observe(10) 是什么意思?

  2. 我应该在哪里调用 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 是什么是:摘要指标从事件中捕获单个观察结果并将它们汇总为许多相关指标:

  1. 值的总和(又名观察值)
  2. 观察次数
  3. 分位数

举个例子:如果你正在测量一个服务的响应时间:

  • 首先,您创建一个摘要指标,提供

    • 名称和标签(通常用于标识指标)- 例如: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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com