普罗米修斯是否允许您从terminal中删除JSON信息?

我正在使用Prometheus来监视一个Node.js应用程序。 我正在使用下面的Node.js客户端进行检测:

舞会客户端

我已经configuration了一切,从我的Node.js应用程序收集和收集默认度量标准,监测工作正常。 我想知道普罗米修斯是否有可能从我的应用程序暴露的端点中删除JSON。

例如,Node.js应用程序有一个运行状况检查端点(/ health),它返回有关应用程序整体运行状况以及依赖关系的简单JSON数据(布尔值或0/1)。 我可以configurationPrometheus和/或prom-client从健康端点中删除JSON,然后根据这些信息logging指标吗?

我相信你可以。

下面链接的博文详细介绍了如何使用Prometheus Python客户端将JSON格式的指标摄入Prometheus。

https://www.robustperception.io/writing-a-jenkins-exporter-in-python/ https://www.robustperception.io/writing-json-exporters-in-python/

如果你想让prom-client收集这些信息,你可以看一看作为库的一部分的堆大小收集器。

在这个收集器获取堆大小的地方,你可以改变JSON端点,或者直接调用JSON端点后面的function来发布一些0或1的测量。

我能够使用prom-clientfind解决scheme并构build我自己的自定义指标。 下面将为任何可能对此做出贡献的人提供一个示例。 假设有一个运行状况检查端点返回以下JSON:

{ "app": { "message": "Service is up and running!", "success": true } } 

我使用包请求来调用端点,parsing数据并创build一个表来反映基于健康检查状态的值。 以下是JavaScript中/ metrics端点的示例:

 const express = require('express'); const router = express.Router(); const request = require('request'); // Config for health check endpoint const healthCheckURL = 'https://SOME_ENDPOINT/health'; const zone = 'DEV'; // Initialize Prometheus const Prometheus = require('prom-client'); const collectDefaultMetrics = Prometheus.collectDefaultMetrics; collectDefaultMetrics({ timeout: 5000 }); router.get('/', (req, res) => { res.end(Prometheus.register.metrics()); }); const serviceHealthGauge = new Prometheus.Gauge({ name: 'service_health', help: 'Health of service component', labelNames: ['zone'] }); setInterval(() => { request({ url: healthCheckURL, method: "GET", }, function(error, response, body) { if (!error && response.statusCode == 200) { const JSONBody = JSON.parse(body); // check service health if (JSONBody.app && JSONBody.app.success) { serviceHealthGauge.set({ zone: zone }, 1); } else { serviceHealthGauge.set({ zone: zone }, 0); } } else { serviceHealthGauge.set({ zone: zone }, 0); } } ); }, 10000); module.exports.metricNames = ['service_health']; module.exports = router; 

不是直接的,因为普罗米修斯只能理解他们的文本格式或GRPC格式。 请参阅https://prometheus.io/docs/instrumenting/exposition_formats/

当然,也可以编写一个翻译“桥”或导出器来翻译这种格式的JSON结构,就像他在答案中描述的@ConorB一样。

Interesting Posts