Generic metrics and context bases monitoring
Project description
jetblack-metrics
Generic metric classes and context based monitoring.
Installation
Install from the pie store.
pip install jetblack-metrics
Usage
First you need to implement a metric which interacts with an actual
instrumentation implementation. The following provides an HTTP request
metric using Prometheus to gather the metrics and the TimedMetric
to
provide a latency metric.
from jetblack_metrics import monitor, TimedMetric
from prometheus_client import Counter, Gauge, Histogram
class HttpRequestMetric(TimedMetric):
"""
A metric which holds HTTP information.
"""
def __init__(self, name: str, method: str, path: str) -> None:
super().__init__()
self.name = name
self.scope = method
self.info = path
self.status = 500
REQUEST_COUNT = Counter(
"http_request_count",
"Number of requests received",
["name", "method", "path", "status"]
)
REQUEST_LATENCY = Histogram(
"http_request_latency",
"Elapsed time per request",
["name", "method", "path"]
)
REQUEST_IN_PROGRESS = Gauge(
"http_requests_in_progress",
"Requests in progress",
["name", "method", "path"]
)
def on_enter(self):
super().on_enter()
self.REQUEST_IN_PROGRESS.labels(
self.name,
self.scope['method'],
self.scope['path']
).inc()
def on_exit(self) -> None:
super().on_exit()
self.REQUEST_COUNT.labels(
self.name,
self.scope['method'],
self.scope['path'],
self.status
).inc()
self.REQUEST_LATENCY.labels(
self.name,
self.scope['method'],
self.scope['path']
).observe(self.elapsed)
self.REQUEST_IN_PROGRESS.labels(
self.name,
self.scope['method'],
self.scope['path']
).dec()
Once we have the metric we can use the monitor
function to manage the process
of gathering the statistics.
def some_http_middleware(request, next_handler):
"""Some kind of HTTP middleware function"""
with monitor(HttpRequestMetric('MyApp', request.method, request.path)) as metric:
# Call the request handler
response = next_handler(request)
metric.status = response.status
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
File details
Details for the file jetblack-metrics-1.0.2.tar.gz
.
File metadata
- Download URL: jetblack-metrics-1.0.2.tar.gz
- Upload date:
- Size: 7.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.1 CPython/3.8.10 Linux/5.10.0-1033-oem
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5a09a7a87406e6b8b731bea0596e6ea3ff2aa03168a9e4cf6df4124634fa4f5 |
|
MD5 | c5c18956dbd4cc63e99686141bbbb38f |
|
BLAKE2b-256 | 5967a8616049ae4441df44a244ac930681bc9eb40b9e87db3ed766625b3c6b5f |
File details
Details for the file jetblack_metrics-1.0.2-py3-none-any.whl
.
File metadata
- Download URL: jetblack_metrics-1.0.2-py3-none-any.whl
- Upload date:
- Size: 8.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.1 CPython/3.8.10 Linux/5.10.0-1033-oem
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 497c70a3e3c8bef092f2c1009c077af83fe0a4be03249f2c8c3f17a220e09547 |
|
MD5 | e8b1f212a4e851c1e27488b4dff2678d |
|
BLAKE2b-256 | 74dcf75b359c8157d814374fc8595517649dd3f24c6a1547f6c0a80d3f1b9560 |