のいずれかでいくつかのゲージを公開するために、直接JSONエンドポイントの背後にある機能を呼び出すことができ、このコレクタは、ヒープサイズをフェッチ
prom-clientと私の独自のカスタムメトリックを構築します。同じことをするのに興味がある人のための例を以下に示します。のは、以下のJSONを返すヘルスチェックのエンドポイントがあることを言ってみましょう:私はに基づいた値を反映するために、エンドポイントへの呼び出しを行い、データを解析し、ゲージを作成するために、パッケージ要求を使用
{
"app": {
"message": "Service is up and running!",
"success": true
}
}
ヘルスチェックのステータス。以下は、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;
ありがとうございました。私は同様のことをするかもしれませんが、ノードクライアントでは –