Install the Grafana dashboards
This guide publishes Grafana and the four dashboards the repository provisions into the folder Tally. At the end the hostname answers, the dashboards are there, and an edit to a provisioned file reaches the pod. What the datasource may reach and what the route refuses is in Grafana and the read-only proxy.
Before you start
- A cluster with VictoriaMetrics running, which every panel queries through the datasource.
- An overlay that patches the Grafana route hostname, or a dev cluster, which the dev overlay already patches.
kubectlagainst that cluster, and a shell at the repository root formake upandmake -s ca.- The Grafana dashboards reference page, which states the four dashboards, their panels and their variables.
Publish Grafana
Bring the cluster up:
shmake upIt publishes Grafana on the dev overlay's hostname:
texthttps://grafana.tally.127-0-0-1.nip.io:8443Patch the HTTPRoute hostname in the overlay and set
GF_SERVER_ROOT_URLto that same URL including the:8443host port, which is where kind publishes https. A link Grafana renders without the port sends the browser to a closed port. The dev overlay carries both, which is whymake upis enough on a dev cluster:yamlenv: - name: GF_SERVER_ROOT_URL value: https://grafana.tally.127-0-0-1.nip.io:8443Expect a login page from the base alone. It sets no
GF_AUTH_ANONYMOUS_*variable and leaves the hostname at the placeholdergrafana.tally.example.com, so Grafana serves one until an overlay says otherwise.
Sign in
Set the two anonymous variables in the overlay, so that a request without a session renders every dashboard and saves nothing:
yamlenv: - name: GF_AUTH_ANONYMOUS_ENABLED value: "true" - name: GF_AUTH_ANONYMOUS_ORG_ROLE value: ViewerSign in as
adminto change anything. On a dev cluster the password istally-dev-grafana-password, theadmin-passwordkey of the generatedtally-grafanaSecret inoverlays/dev/kustomization.yaml.
Edit a provisioned file
Edit the datasource, the provider or a dashboard in the tree. The three are
configMapGeneratorentries inkustomization.yaml, and kustomize appends a content hash to each generated ConfigMap name.Apply the overlay and watch the pod roll. The changed name changes the pod spec that mounts it, so Grafana is never left serving a datasource or a dashboard that no longer matches the file in the tree:
shkubectl -n tally rollout status deployment/grafanatextdeployment "grafana" successfully rolled out
Check the result
Ask Grafana for its health. The call needs the dev CA that signed the Gateway's certificate:
shmake -s ca > tally-ca.crt curl --cacert tally-ca.crt https://grafana.tally.127-0-0-1.nip.io:8443/api/healthIt answers 200 with a JSON body whose
databasemember isok.Open
https://grafana.tally.127-0-0-1.nip.io:8443and go to the folderTally. The four dashboards it carries, with every panel and the expression the panel reads, are on the Grafana dashboards page.On a cluster nothing has reported to, every panel backed by an exporter series or a collector series shows "No data" rather than a query error. The
platformandcloudvariables readlabel_values(tally_current_resources, ...), which resolves to nothing while the projection is empty. What keeps an empty variable from breaking a panel is its "All" value.*: a selectorcloud=~".*"matches whatever the store holds, including nothing.The scrape-health stat on Tally / Ingestion Health reports
up == 0forceilometer, a static target for an exporter that runs beside an OpenStack control plane rather than in this cluster, and foropenstack-db-exporterandopenstack-collectorbetween simulator runs. While a run publishes a month, those two jobs scrape the simulator's inventory and the compose collector. That is the designed dev state, described under replace the scrape targets, and not a fault to chase.To put values on all four dashboards without a cloud behind them, follow fill the dashboards on a dev cluster.