docs | |
---|---|
tests | |
package |
nameko-prometheus
is a dependency for the nameko microservice framework
which allows application metrics collection with Prometheus.
- automatic collection of request latency metrics for RPC methods, event handlers and HTTP requests
- custom application metrics are also exposed automatically
- HTTP endpoint exposing metrics to be scraped by Prometheus
pip install nameko-prometheus
You can also install the in-development version with:
pip install https://github.com/emplocity/nameko-prometheus/archive/master.zip
Define your application metrics using types from prometheus_client, such as
Counter
, Gauge
, Histogram
, etc. Add a
PrometheusMetrics
dependency provider to your service class. Then add a
HTTP entrypoint (usually routed under /metrics
URL) that forwards the
request to expose_metrics()
method of the provider. That's it!
from nameko.rpc import rpc
from nameko.web.handlers import http
from nameko_prometheus import PrometheusMetrics
from prometheus_client import Counter
work_units = Counter(
"my_service_work_units_total", "Total number of work units", ["work_type"]
)
class MyService:
metrics = PrometheusMetrics()
@rpc
def say_hello(self):
work_units.labels(work_type="hard").inc()
return "Hello!"
@http("GET", "/metrics")
def serve_metrics(self, request):
return self.metrics.expose_metrics(request)
There are a few automatically defined metrics as well. See the documentation of
PrometheusMetrics
for more.
See also the full stack example in example/
directory in this repo.
https://nameko-prometheus.readthedocs.io/
To run the all tests run:
tox
Note, to combine the coverage data from all the tox environments run:
Windows | set PYTEST_ADDOPTS=--cov-append tox |
---|---|
Other | PYTEST_ADDOPTS=--cov-append tox |
Things we'd like to have in the future:
- automatic registration of
/metrics
HTTP endpoint- decorator to exclude specific methods from tracing
nameko-prometheus
is developed and maintained by Emplocity.
This work is released under the Apache 2.0 license.