prometheus libvirt exporter #7

Supports: xenial bionic focal


This exporter connects to any libvirt daemon and exports per-domain metrics related to CPU, memory, disk and network usage. By default, this exporter listens on TCP port 9177.

Juju prometheus libvirt exporter charm

This charm provides the Prometheus libvirt exporter


This directory needs to be create in the charm path prior to testing

mkdir -p report/lint


A typical deployment with nova and libvirt is as follows:

The metrics will be at http://nova-compute:9177

juju deploy nova-compute 
juju deploy prometheus-libvirt-exporter
juju add-relation nova-compute prometheus-libvirt-exporter

To avail of the metrics in grafana the following steps can be used

juju deploy grafana
juju deploy prometheus2
juju add-relation prometheus-libvirt-exporter:scrape prometheus2:target
juju add-relation prometheus-libvirt-exporter:dashboards grafana:dashboards

To setup reporting with nagios

juju deploy nrpe
juju add-relation nova-compute nrpe
juju add-relation prometheus-libvirt-exporter:nrpe-external-master nrpe:nrpe-external-master

Functional tests

Juju should be installed and bootstrapped on the system to run functional tests.

    export HTTPS_PROXY=http://<your_proxy
    export NO_PROXY=,localhost,<juju_controller_ips> 
    export MODEL_SETTINGS=<semicolon-separated list of "juju model-config" settings>
    make test

NOTE: If you are behind a proxy, be sure to export a MODEL_SETTINGS variable as described above. Note that you will need to use the juju-http-proxy, juju-https-proxy, juju-no-proxy and similar settings. Also you will need to export HTTPS_PROXY used in the test and export NO_PROXY that should include ips of controller subnet and model subnet.

Change or update dashboards

# The exporter is distributed with a standard dashboard
# To provide your own dashboards, create a zip file and attach it as a resource 
zip libvirt-simple.json libvirtadvanced.json
juju attach-resource prometheus-libvirt-exporter dashboards=./

Contact Information


(string) A string that will be prepended to instance name to set the host name in nagios. So for instance the hostname would be something like: juju-myservice-0 If you're running multiple environments with the same services in them this allows you to differentiate between them.
(string) Comma separated list of nagios servicegroups
(string) If install_method is set to "snap" this option controlls channel name. Supported values are: "stable", "candidate", "beta" and "edge"
(string) How often snapd handles updates for installed snaps. The default (an empty string) is 4x per day. Set to "max" to check once per month based on the charm deployment date. You may also set a custom string as described in the 'refresh.timer' section here: