egg-prometheus
Prometheus plugin for egg framework
Prometheus plugin for egg framework
Install
$ npm i egg-prometheus --save
Usage
Enable the plugin
Change ${app_root}/config/plugin.js
to enable Prometheus plugin:
exports.prometheus = {
enable: true,
package: "egg-prometheus",
};
Configuration
exports.prometheus = {
timeout: 3000
scrapePort: 3000,
scrapePath: '/metrics',
defaultHttpMetricsFilter: ({ method, status, routerName, path }) => true,
defaultLabels: { ... },
};
-
timeout
: metrics pull timeout -
scrapePort
: the port to scrape metrics from -
scrapePath
: the path to scrape metrics from -
defaultLabels
: static labels may be applied to every metric emitted by a registry -
defaultHttpMetricsFilter
: can custom filter default http metrics, return false can prevent metrics
Default Metrics
-
http_response_time_ms summary
: ms to handle a request -
http_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 consuming -
rpc_consumer_request_rate counter
: number of rpc calls -
rpc_consumer_fail_response_time_ms summary
: ms of fail rpc time consuming -
rpc_consumer_request_fail_rate counter
: number of fail rpc calls -
rpc_consumer_request_size_bytes summary
: rpc request size in bytes -
rpc_consumer_response_size_bytes summary
: rpc response size in bytes -
rpc_provider_response_time_ms summary
: ms of request processed time -
rpc_provider_request_rate counter
: number of rpc calls -
rpc_provider_fail_response_time_ms summary
: ms of fail request processed time -
rpc_provider_request_fail_rate counter
: number of fail rpc calls
Custom Metrics
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"],
});
How to Contribute
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.