【问题标题】:How to call Prometheus Histogram.observe() on serveral Functions at once in NodeJS如何在 NodeJS 中一次在多个函数上调用 Prometheus Histogram.observe()
【发布时间】:2021-02-17 21:39:33
【问题描述】:

我正在使用 Prometheus 监控 NodeJS 应用程序。

创建这样的直方图

const histogram = new client.Histogram({
    name: 'node_request_duration_seconds',
    help: 'Histogram for the duration in seconds.',
    buckets: [1, 2, 5, 6, 10]
});

现在我像这样调用 histogram.observe() 来监控对路径'/'的请求

const app = express();
app.get('/', (req, res) => {

    //Simulate a sleep
    var start = new Date()
    var simulateTime = 1000

    setTimeout(function(argument) {
        // execution time simulated with setTimeout function
        var end = new Date() - start
        histogram.observe(end / 1000); //convert to seconds
    }, simulateTime)

    counter.inc();

    res.send('Hello world\n');
});

现在的问题是我在 NodesJS 应用程序中有许多其他请求路径,所以为了监控每个请求路径,我是否应该手动编辑每个为请求提供服务的函数。

有没有其他方法可以让我们从外部对每个函数调用 histogram.observe() 而无需手动编辑?

【问题讨论】:

    标签: javascript node.js prometheus grafana prom-client


    【解决方案1】:

    可能的解决方案:

    1. 请参阅 Express Prom Bundle 库以跨不同路径自动衡量指标。 https://github.com/jochen-schweizer/express-prom-bundle

    2. 请求处理完成后使用 onFinished 回调调用 Histogram.Observe() https://github.com/jshttp/on-finished

    【讨论】:

      猜你喜欢
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 2017-11-10
      相关资源
      最近更新 更多