aiohttp icon indicating copy to clipboard operation
aiohttp copied to clipboard

Gunicorn and StatsD metrics

Open Gr1N opened this issue 5 years ago • 11 comments

Long story short

Hi,

Gunicorn provides an optional instrumentation of the arbiter and workers using the StatsD protocol. Details can be found at https://docs.gunicorn.org/en/latest/instrumentation.html

But there is no way to get metrics because we need to use worker class from AIOHTTP (aiohttp.GunicornWebWorker) and it does not use access method of the logger (https://github.com/benoitc/gunicorn/blob/master/gunicorn/instrument/statsd.py#L90). It's uses info (https://github.com/aio-libs/aiohttp/blob/master/aiohttp/web_log.py#L233) for access logs.

I'm very interested in that feature and I like to help with development. I see two ways of implementation:

  1. Somehow refactor current code-base to use access method of the logger.
  2. Provide optional instrumentation logic using the StatsD protocol in aiohttp.GunicornWebWorker, something like Gunicorn already have.

Expected behaviour

Run application using Gunicorn and specify StatsD configuration parameters:

$ gunicorn -w 4 -b "0.0.0.0:4000" --worker-class=aiohttp.GunicornWebWorker --statsd-host="0.0.0.0:9125" --statsd-prefix=aiohttp app_aiohttp:get_application

Check StastD logs and see metrics with names gunicorn.requests and gunicorn.request.duration.

Actual behaviour

Run application using Gunicorn and specify StatsD configuration parameters:

$ gunicorn -w 4 -b "0.0.0.0:4000" --worker-class=aiohttp.GunicornWebWorker --statsd-host="0.0.0.0:9125" --statsd-prefix=aiohttp app_aiohttp:get_application

Check StastD logs. You can see metric with name gunicorn.workers, but not with names gunicorn.requests and gunicorn.request.duration.

Your environment

MacOS 10.14.4 aiohttp 3.5.4 gunicorn 19.9.0

Gr1N avatar May 16 '19 15:05 Gr1N