Grafana und Helm - Teil 1

Wer mit Kubernetes und Prometheus arbeitet, kennt wahrscheinlich auch die Visualisierungs-Software Grafana.
In diesem Artikel zeigen wir welche Möglichkeiten der Paketmanager Helm bietet Grafana auf Deinem Kubernetes Cluster zu konfigurieren und zu verwenden.

Dazu solltest Du dich vorher mit Helm auseinandergesetzt haben, hier erklären wir Dir die Grundlagen.

Ausgangssituation

Wir haben ein Kubernetes Cluster mit dem Namespace monitoring, worin ein whoami Service und Prometheus laufen.
Vom whoami werden Metriken exportiert, die wir gerne über Prometheus mit Grafana visualisieren wollen.

$ helm install -n prometheus --namespace monitoring stable/prometheus
$ git clone git@github.com:bee42/whoamI.git
$ cd whoamI/whoami/
$ helm dependencies update
$ helm install -n whoami --namespace monitoring --set image.tag=2.2.0 .


Das Deployment

Eine erste, einfache Version lässt sich mithilfe der Default-Konfiguration des Helm-Charts deployen.

$ helm install -n grafana --namespace monitoring stable/grafana



Dadurch werden alle nötigen Resourcen angelegt und eine einsatzbereite Version von Grafana gestartet.
Um von Deinem Client aus den Service erreichen zu können, bietet sich als kurzfristige Lösung ein port-forwarding an.

$ kubectl port-forward -n monitoring svc/grafana 3000:80
Forwarding from 127.0.0.1:3000 -> 3000
Forwarding from [::1]:3000 -> 3000



Für den Login werden Username und Passwort benötigt.
Der Standard User ist “admin” und das Passwort lässt sich aus dem automatisch erzeugten Secret entnehmen:

$ kubectl get secret -n monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
u7DtVthVmnuUV3zzhdUp53CMgEch6bSKo5XATvw9


Grafana ist dann unter 127.0.0.1:3000 erreichbar.



Grafana - Login Screen

Konfiguration von Grafana

Um Konfigurationen an Grafana selbst vorzunehmen gibt es den Chart Parameter “grafana.ini”.
Über diesen lassen sich Änderungen bspw. bezüglich der User- oder Security-Einstellungen vornehmen.
Auf der offiziellen Website von Grafana ist eine Liste aller Einstellungsmöglichkeiten zu finden.

Bsp. (values.yaml):

[...]
  grafana.ini:
    users:
      allow_sign_up: true
    security:
      admin_password: "mypassword"
[...]


Dashboards & Datasources

Da man sein Grafana üblicherweise mehr als ein einziges Mal deployen möchte (ohne jedes Mal die Dashboards und Datasources manuell setzen zu müssen), gibt es die Möglichkeit diese direkt mit auszuliefern.

Die sinnvollste Variante dafür ist das Sidecar Pattern zu nutzen. Pro Datenquelle und Dashboard wird eine ConfigMap angelegt und diese anhand eines Labels von Grafana automatisch importiert. Dafür müssen die Sidecars aktiviert und die Labels zur Identifizierung gesetzt werden.

values.yaml

[...]
  sidecar:
    dashboards:
      enabled: true
      label: grafana_dashboard
    datasources:
      enabled: true
      label: grafana_datasource
[...]


templates/my-dashboard-cm.yaml

templates/my-datasource-cm.yaml


Das Ergebnis ist ein einfaches Dashboard zur Überwachung unserer whoami Anwendung.
Hinweis: Damit das Dashboard Daten anzeigt, muss der whoami Service einige Male aufgerufen werden!

Grafana - Dashboard

Eine ausführliche Dokumentation zur Konfiguration der Dashboards und Datasources sowie alternative Methoden zum Einbinden dieser findest Du im Grafana Helm Chart Repository.

Im zweiten Teil der Serie geht es um die Dashboardentwicklung und worauf dabei zu achten ist.


- Jan

"Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung."