Exposes applipy metrics in prometheus format
Project description
Applipy Prometheus Metrics
pip install applipy_prometheus
Exposes applipy metrics in prometheus format as an HTTP endpoint with path /metrics
.
Usage
Add the applipy_prometheus.PrometheusModule
to your application. Optionally,
define through which http server to expose the /metrics
endpoint, if no name
is given it defaults to the anonymous server:
# dev.yaml
app:
name: demo
modules:
- applipy_prometheus.PrometheusModule
http:
internal:
host: 0.0.0.0
port: 8080
prometheus.server_name: internal
To run this test just install applipy_prometheus
and pyyaml
and run the applipy application:
pip install applipy_prometheus pyyaml
python -m applipy
You can now query http://0.0.0.0:8080/metrics and you should see some metrics for that endpoint (you'll have to query it twice to see metrics).
This module uses
applipy_metrics
's registry to
load the metrics and generate the Prometheus document.
Metrics Endpoint Wrapper
This library also comes with MetricsWrapper
. It is an
applipy_http.EndpointWrapper
that can be bound to your APIs and will automatically measure the request time
and store it as a summary with name applipy_web_request_duration_seconds
.
The wrapper has priority 100
.
The metrics are tagged by default with:
method
: HTTP request method (i.e.GET
,POST
, etc.)path
: path of the endpoint handling the requestserver
: name of the server handling the request (anonymous server is empty string)status
: status code of the response
On top of that, a dictionary is added to the Context
with the key
metrics.tags
where you can add custom tags to the metric.
Example
from aiohttp import web
from applipy import Module
from applipy_http import Api, HttpModule, Endpoint, EndpointWrapper, PathFormatter
from applipy_inject import with_names
from applipy_prometheus import MetricsWrapper
class MyEndpoint(Endpoint):
async def get(self, req, ctx):
ctx['metrics.tags']['custom_tag'] = 'value'
return web.Response(body='Ok')
class MyModule(Module):
def configure(self, bind, register):
bind(Endpoint, MyEndpoint, name='myApi')
bind(PathFormatter, name='myApi')
# Register the MetricsWrapper to my Api
bind(EndpointWrapper, MetricsWrapper, name='myApi')
bind(with_names(Api, 'myApi'))
@classmethod
def depends_on(cls):
return HttpModule,
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for applipy_prometheus-0.11.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3513c302697c7ac6505b8d3241a809ef41907db451cd45d6209e1295cfa65647 |
|
MD5 | 3f73396ef4cf74951d12684d1a82ed19 |
|
BLAKE2b-256 | c2e9c6af7d42f616c1017bf5e4cffecec1b2cbdf165aa5b77c34f92ff24af245 |
Hashes for applipy_prometheus-0.11.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f56dbb4b74b304d47e619f62edb8084b07fdafb6a5f6dd41251826b5279fc8d8 |
|
MD5 | 9720fae9bc9bfc4965ec4c48f11efe22 |
|
BLAKE2b-256 | cd7f4efb06480c769393586afbdce880bd91cbc4de4419d19cc99f3971d18a71 |