Prometheus plugin for egg framework
Prometheus plugin for egg framework
npm i egg-prometheus --save
Change ${app_root}/config/plugin.js
to enable Prometheus plugin:
exports.prometheus = {
enable: true,
package: "egg-prometheus",
};
exports.prometheus = {
timeout: 5000,
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
-
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
// Here's an example senario:
// Some metric called 'pv' stands for 'page view'
// We are going to know its total count.
// To ensure that we know the pv of each visit source
// We define a label called from.
const counter = new app.prometheus.Counter({
name: "pv_total",
help: "custom counter",
labelNames: ["from"],
});
// To use the from label, we do as the following.
counter.labels(['google_com']).inc();
counter.labels(['facebook_com']).inc();
// Gauge
const gauge = new app.prometheus.Gauge({
name: "xxx_gauge",
help: "custom gauge",
labelNames: ["xxx"],
});
// Histogram
const histogram = new app.prometheus.Histogram({
name: "xxx_histogram",
help: "custom histogram",
labelNames: ["xxx"],
});
// Summary
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.
gxcsoccer |
xujihui1985 |
popomore |
nightink |
sjfkai |
jgchenu |
---|
This project follows the git-contributor spec, auto updated at Fri Dec 15 2023 17:58:23 GMT+0800
.