Skip to content

release-engineering/django-kobo-exporter

Repository files navigation

django-kobo-exporter

Prometheus exporter for kobo hub.

tests PyPI version

Overview

The kobo framework provides, among other things, a Django-based "hub" web service which is used to manage tasks and workers.

django-kobo-exporter is a Django app which may be installed to a kobo hub in order to add a prometheus-compatible metrics endpoint exposing kobo metrics.

Usage

  1. Ensure django-kobo-exporter is installed, e.g.
pip install django-kobo-exporter
  1. In your app's settings, add kobo_exporter to INSTALLED_APPS, e.g.
INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'kobo.django.auth',
    'django.contrib.messages',
    'django.contrib.admin',
    'django.contrib.staticfiles',
    'kobo.django.xmlrpc',
    'kobo.hub',
    # added here
    'kobo_exporter',
    # your app's own stuff below...
    ...,
]
  1. Mount kobo_exporter.urls somewhere in your project.

/kobo_exporter/ is recommended; for example, in your root urlpatterns:

from django.urls import include, path

urlpatterns = [
    # ... snip ...
    path('kobo_exporter/', include('kobo_exporter.urls')),
    # ... snip ...
]
  1. Access metrics at <your_service>/kobo_exporter/metrics.

The metrics endpoint will provide basic information on workers, as in example:

# HELP kobo_worker_enabled 1 if worker is enabled
# TYPE kobo_worker_enabled gauge
kobo_worker_enabled{worker="localhost"} 1.0
kobo_worker_enabled{worker="pub-dev-pubd7"} 1.0
# HELP kobo_worker_ready 1 if worker is ready
# TYPE kobo_worker_ready gauge
kobo_worker_ready{worker="localhost"} 1.0
kobo_worker_ready{worker="pub-dev-pubd7"} 1.0
# HELP kobo_worker_load Current load of worker (sum of task weights)
# TYPE kobo_worker_load gauge
kobo_worker_load{worker="localhost"} 0.0
kobo_worker_load{worker="pub-dev-pubd7"} 0.0
# HELP kobo_worker_max_load Maximum permitted load of worker
# TYPE kobo_worker_max_load gauge
kobo_worker_max_load{worker="localhost"} 60.0
kobo_worker_max_load{worker="pub-dev-pubd7"} 60.0
# HELP kobo_worker_open_tasks Current number of OPEN tasks for worker
# TYPE kobo_worker_open_tasks gauge
kobo_worker_open_tasks{worker="localhost"} 0.0
kobo_worker_open_tasks{worker="pub-dev-pubd7"} 0.0
# HELP kobo_worker_last_seen_seconds Time of worker's last communication with hub
# TYPE kobo_worker_last_seen_seconds gauge
kobo_worker_last_seen_seconds{worker="localhost"} 1.625644554e+09
kobo_worker_last_seen_seconds{worker="pub-dev-pubd7"} 0.0

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.