Prometheus Metrics¶
Added in version 1.5.13
It is possible for Nautobot apps to provide their own Prometheus metrics. There are two general ways to achieve this:
- Use the
prometheus_client
library directly in your app code. Depending on whether that code runs in the web server or the worker context, the metric will show up in the respective/metrics
endpoint(s) (i.e. metrics generated in the worker context show up in the worker's endpoint and those generated in the web application's context show up in the web application's endpoint). - If the metric cannot be generated alongside existing code, apps can implement individual metric generator functions and register them into a list called
metrics
in a file namedmetrics.py
at the root of the app. Nautobot will automatically read these and expose them via its/metrics
endpoint. The following code snippet shows an example metric defined this way:
# metrics.py
from prometheus_client.metrics_core import GaugeMetricFamily
from nautobot_animal_sounds.models import Animal
def metric_animals():
gauges = GaugeMetricFamily("nautobot_noisy_animals_count", "Nautobot Noisy Animals Count", labels=[])
screaming_animal_count = Animal.objects.filter(loudness="noisy").count()
gauges.add_metric(labels=[], value=screaming_animal_count)
yield gauges
metrics = [metric_example]