system-config/doc/source/grafana.rst
Ian Wienand b146181174 Grafana container deployment
This uses the Grafana container created with
Iddfafe852166fe95b3e433420e2e2a4a6380fc64 to run the
grafana.opendev.org service.

We retain the old model of an Apache reverse-proxy; it's well tested
and understood, it's much easier than trying to map all the SSL
termination/renewal/etc. into the Grafana container and we don't have
to convince ourselves the container is safe to be directly web-facing.

Otherwise this is a fairly straight forward deployment of the
container.  As before, it uses the graph configuration kept in
project-config which is loaded in with grafyaml, which is included in
the container.

Once nice advantage is that it makes it quite easy to develop graphs
locally, using the container which can talk to the public graphite
instance.  The documentation has been updated with a reference on how
to do this.

Change-Id: I0cc76d29b6911aecfebc71e5fdfe7cf4fcd071a4
2020-07-03 07:17:22 +10:00

2.3 KiB

title

Grafana

Grafana

Grafana is an open source, feature rich metrics dashboard and graph editor for Graphite, InfluxDB & OpenTSDB. OpenStack runs Graphite which stores all the metrics related to Nodepool and Zuul (to name a few).

At a Glance

Hosts
Projects
Bugs

Overview

Apache is configured as a reverse proxy to Grafana running in a container, listening on port 3000.

Local Development

To develop dashboards, you can run the OpenDev Grafana container. Firstly, get setup:

$ cd <work dir>
$ mkdir secrets
$ echo "password" > secrets/admin_password
$ echo "admin" > secrets/admin_user
$ echo "key" > secrets/secret_key

$ git clone https://opendev.org/openstack/project-config

Then run the container with the following options:

$ cd <work dir>
$ sudo podman run \
  -p 3000:3000 \
  -v ./secrets:/etc/grafana/secrets \
  -v ./project-config:/opt/project-config \
  -e GF_AUTH_ANONYMOUS_ENABLED=true \
  -e GF_USERS_ALLOW_SIGN_UP=false \
  -e GF_SECURITY_ADMIN_PASSWORD__FILE=/etc/grafana/secrets/admin_password \
  -e GF_SECURITY_ADMIN_USER__FILE=/etc/grafana/secrets/admin_user \
  -e GF_SECURITY_SECRET_KEY__FILE=/etc/grafana/secrets/secret_key \
 docker.io/opendevorg/grafana

At this point, Grafana will be running and listening on port 3000. You can log into as admin with password (or using your secrets above).

This is unconfigured and does not yet talk to the OpenDev Graphite instance. The dashboard definitions are kept in project-config/grafana. To load them exec the update-grafana script in the container (i.e. podman exec <running-container> update-grafana). That will run grafyaml and load in the updated dashboards (note it relies on things being mapped as above). To work on dashboards, update the yaml files in project-config and re-run update-grafana, then reload them in the Grafana UI.

Alternatively, you can use the Grafana editor to make the dashboards, and then under "Dashboard Settings" (gear icon) select "JSON Model" and commit that (it seems you have to cut-and-paste, there isn't currently a way to export the JSON as such).