.. include:: ../global.rst.inc

.. _monitoring:

Monitoring
==========

Monitoring endpoints are configured in the ``global.monitoring`` section of the config file.

.. _monitoring-prometheus:

Prometheus & Grafana
--------------------

zrepl can expose `Prometheus metrics <https://prometheus.io/docs/instrumenting/exposition_formats/>`_ via HTTP.
The ``listen`` attribute is a `net.Listen <https://golang.org/pkg/net/#Listen>`_  string for tcp, e.g. ``:9091`` or ``127.0.0.1:9091``.
The ``listen_freebind`` attribute is :ref:`explained here <listen-freebind-explanation>`.
The Prometheus monitoring job appears in the ``zrepl control`` job list and may be specified **at most once**.

zrepl also ships with an importable `Grafana <https://grafana.com>`_ dashboard that consumes the Prometheus metrics:
see :repomasterlink:`dist/grafana`.
The dashboard also contains some advice on which metrics are important to monitor.

.. NOTE::

  At the time of writing, there is no stability guarantee on the exported metrics.

::

    global:
      monitoring:
        - type: prometheus
          listen: ':9091'
          listen_freebind: true # optional, default false