Export metrics about requests in your ASGI apps to statsd or Datadog
Project description
statsd-asgi
An ASGI middleware to emit metrics to statsd for requests
Mostly designed to work with Datadog, but should work with any statsd metric
# Config
statsd_client: Pass along your own statsd client. Must implement increment and timing methods
statsd_options: Options to configure the datadog statsd client
service: Name of your service, prepended to all metrics. Defaults to asgi
logger: optional logger
# Metric naming pattern
{service_name}.path
i.e.
myservice.api.v1.foo
# TimingMiddleware
Emits timing metrics for each endpoint for requests. Will emit clock time and cpu time. ## Tags =======
type: wall or cpu, depending on time source
status_code: The status code of the http request
method: the http method (get, post, put, delete) # StatusCodeMetricsMiddleware =============================
Emits counter metrics for each endpoint ## Tags =======
status_code: The status code of the http request
method: the http method (get, post, put, delete)
Usage with FastAPI
This ASGI middleware should work with any Starlette app, but I work with FastAPI so that’s the example I’ve got for you. PRs welcome for more examples
from fastapi import FastAPI
app = FastAPI()
from statsd_asgi import TimingMiddleware, StatusCodeMetricsMiddleware
from logging import getLogger
statsd*options = {'statsd*host': os.environ.get("STATSD_HOST"),
'statsd\_port': os.environ.get("STATSD\_PORT")
}
app.add*middleware(TimingMiddleware, service="testapi", statsd*options=statsd_options)
app.add*middleware(StatusCodeMetricsMiddleware, service="testapi", statsd*client=statsd_options)
@app.get("/api")
async def root():
return {"message": "Hello World"}
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 statsd_asgi-0.1.0b1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ed4fe156d728ddace4be3b6080eb495d485d6ba151782887a8d62ab6a797c083 |
|
MD5 | 6cadf44fa3801c3dd9acc2a579564ce3 |
|
BLAKE2b-256 | 000b495de5af9093cbf15fb8564f238769902775d9743bc9fbe8cd65a0bc9186 |