Prometheus plugin for egg framework
NPM version CI Test coverage npm download
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 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
// 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.