Metadata-Version: 2.0
Name: celery-prometheus-exporter
Version: 1.0.0
Summary: Simple Prometheus metrics exporter for Celery
Home-page: https://github.com/zerok/celery-prometheus-exporter
Author: Horst Gutmann
Author-email: horst@zerokspot.com
License: MIT
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Dist: celery (>=3,<4)
Requires-Dist: prometheus-client

==========================
celery-prometheus-exporter
==========================

celery-prometheus-exporter is a little exporter for Celery related metrics in
order to get picked up by Prometheus. As with other exporters like
mongodb\_exporter or node\_exporter this has been implemented as a
standalone-service to make reuse easier across different frameworks.

So far it provides access to the following metrics:

* ``celery_tasks`` exposes the number of tasks currently known to the queue
  seperated by ``state`` (RUNNING, STARTED, ...).
* ``celery_workers`` exposes the number of currently probably alive workers


How to use
==========

There are multiple ways to install this. The obvious one is using ``pip install
celery-prometheus-exporter`` and then using the ``celery-prometheus-exporter``
command::

  $ celery-prometheus-exporter
  Starting HTTPD on 0.0.0.0:8888

This package only depends on Celery directly, so you will have to install
whatever other dependencies you will need for it to speak with your broker 🙂

Alternatively, you can use the bundle Makefile and Dockerfile to generate a
Docker image.

If you want the HTTPD to listen to another port, use the ``--addr`` option.

By default, this will expect the broker to be available through
``redis://redis:6379/0``. If you're using AMQP or something else other than
Redis, take a look at the Celery documentation and install the additioinal
requirements 😊 Also use the ``--broker`` option to specify a different broker
URL.

If you then look at the exposed metrics, you should see something like this::

  $ http get http://localhost:8888/metrics | grep celery_
  # HELP celery_workers Number of alive workers
  # TYPE celery_workers gauge
  celery_workers 1.0
  # HELP celery_tasks Number of tasks per state
  # TYPE celery_tasks gauge
  celery_tasks{state="PENDING"} 0.0
  celery_tasks{state="STARTED"} 0.0
  celery_tasks{state="SUCCESS"} 0.0
  celery_tasks{state="FAILURE"} 0.0
  celery_tasks{state="RECEIVED"} 0.0
  celery_tasks{state="REVOKED"} 0.0
  celery_tasks{state="RETRY"} 0.0

Limitations
===========

* Among tons of other features celery-prometheus-exporter doesn't support stats
  for multiple queues. As far as I can tell, only the routing key is exposed
  through the events API which might be enough to figure out the final queue,
  though.
* This has only been tested with Redis so far.


