:title: Monitoring Monitoring ========== .. _statsd: Statsd reporting ---------------- Zuul comes with support for the statsd protocol, when enabled and configured (see below), the Zuul scheduler will emit raw metrics to a statsd receiver which let you in turn generate nice graphics. Configuration ~~~~~~~~~~~~~ Statsd support uses the ``statsd`` python module. Note that support is optional and Zuul will start without the statsd python module present. Configuration is in the :attr:`statsd` section of ``zuul.conf``. Metrics ~~~~~~~ These metrics are emitted by the Zuul :ref:`scheduler`: .. stat:: zuul.event..event. :type: counter Zuul will report counters for each type of event it receives from each of its configured drivers. .. stat:: zuul.tenant..pipeline Holds metrics specific to jobs. This hierarchy includes: .. stat:: A set of metrics for each pipeline named as defined in the Zuul config. .. stat:: all_jobs :type: counter Number of jobs triggered by the pipeline. .. stat:: current_changes :type: gauge The number of items currently being processed by this pipeline. .. stat:: project This hierarchy holds more specific metrics for each project participating in the pipeline. .. stat:: The canonical hostname for the triggering project. Embedded ``.`` characters will be translated to ``_``. .. stat:: The name of the triggering project. Embedded ``/`` or ``.`` characters will be translated to ``_``. .. stat:: The name of the triggering branch. Embedded ``/`` or ``.`` characters will be translated to ``_``. .. stat:: job Subtree detailing per-project job statistics: .. stat:: The triggered job name. .. stat:: :type: counter, timer A counter for each type of result (e.g., ``SUCCESS`` or ``FAILURE``, ``ERROR``, etc.) for the job. If the result is ``SUCCESS`` or ``FAILURE``, Zuul will additionally report the duration of the build as a timer. .. stat:: current_changes :type: gauge The number of items of this project currently being processed by this pipeline. .. stat:: resident_time :type: timer A timer metric reporting how long each item for this project has been in the pipeline. .. stat:: total_changes :type: counter The number of changes for this project processed by the pipeline since Zuul started. .. stat:: resident_time :type: timer A timer metric reporting how long each item has been in the pipeline. .. stat:: total_changes :type: counter The number of changes processed by the pipeline since Zuul started. .. stat:: wait_time :type: timer How long each item spent in the pipeline before its first job started. .. stat:: zuul.executor. Holds metrics emitted by individual executors. The ```` component of the key will be replaced with the hostname of the executor. .. stat:: builds :type: counter Incremented each time the executor starts a build. .. stat:: running_builds :type: gauge The number of builds currently running on this executor. .. stat:: load_average :type: gauge The one-minute load average of this executor, multiplied by 100. As an example, given a job named `myjob` in `mytenant` triggered by a change to `myproject` on the `master` branch in the `gate` pipeline which took 40 seconds to build, the Zuul scheduler will emit the following statsd events: * ``zuul.tenant.mytenant.pipeline.gate.project.example_com.myproject.master.job.myjob.SUCCESS`` +1 * ``zuul.tenant.mytenant.pipeline.gate.project.example_com.myproject.master.job.myjob.SUCCESS`` 40 seconds * ``zuul.tenant.mytenant.pipeline.gate.all_jobs`` +1