Prometheus plugin for egg framework
Prometheus plugin for egg framework
$ npm i egg-prometheus --saveChange ${app_root}/config/plugin.js to enable Prometheus plugin:
exports.prometheus = {
enable: true,
package: "egg-prometheus",
};exports.prometheus = {
timeout: 3000,
scrapePort: 3000,
scrapePath: '/metrics',
defaultHttpMetricsFilter: ({ method, status, routerName, path }) => true,
defaultLabels: { ... },
};timeout: metrics pull timeoutscrapePort: the port to scrape metrics fromscrapePath: the path to scrape metrics fromdefaultLabels: static labels may be applied to every metric emitted by a registrydefaultHttpMetricsFilter: can custom filter default http metrics, return false can prevent metrics
http_response_time_ms summary: ms to handle a requesthttp_request_rate counter: number of requests to a route
while egg-rpc-base is enabled
rpc_consumer_response_time_ms summary: ms of rpc time consumingrpc_consumer_request_rate counter: number of rpc callsrpc_consumer_fail_response_time_ms summary: ms of fail rpc time consumingrpc_consumer_request_fail_rate counter: number of fail rpc callsrpc_consumer_request_size_bytes summary: rpc request size in bytesrpc_consumer_response_size_bytes summary: rpc response size in bytesrpc_provider_response_time_ms summary: ms of request processed timerpc_provider_request_rate counter: number of rpc callsrpc_provider_fail_response_time_ms summary: ms of fail request processed timerpc_provider_request_fail_rate counter: number of fail rpc calls
const counter = new app.prometheus.Counter({
name: "xxx_total",
help: "custom counter",
labelNames: ["xxx"],
});
const gauge = new app.prometheus.Gauge({
name: "xxx_gauge",
help: "custom gauge",
labelNames: ["xxx"],
});
const histogram = new app.prometheus.Histogram({
name: "xxx_histogram",
help: "custom histogram",
labelNames: ["xxx"],
});
const summary = new app.prometheus.Summary({
name: "xxx_summary",
help: "custom summary",
labelNames: ["xxx"],
});Please let us know how can we help. Do check out issues for bug reports or suggestions first.
To become a contributor, please follow our contributing guide.