Grafana is een open-source monitoring- en analyseplatform voor Kubernetes waarmee je metingen kunt opvragen (bijvoorbeeld van hardwaregebruik), bijvoorbeeld van Prometheus, deze eenvoudig kunt visualiseren en waarschuwingen versturen.
In deze handleiding laten we zien hoe je Grafana installeert op je Kubernetes-cluster.
Voor de stappen in deze handleiding heb je nodig:
Grafana installeren
Stap 1
Maak een nieuwe namespace aan voor Grafana:
kubectl create ns grafana
Stap 2
Voeg de officiële Grafana Helm-repository toe aan je cluster:
helm repo add grafana https://grafana.github.io/helm-charts helm repo update
Stap 3
Installeer vervolgens de Grafana in de Grafana-namespace met het commando:
helm install grafana grafana/grafana --namespace grafana
- helm install installeert de chart
- grafana (de eerste vermelding) is de naam die we zelf aan de Helm 'release' meegeven en je bent vrij deze te wijzigen
- grafana/grafana is de repository en chart die je installeert
- --namespace grafana installeert de Helm release in de Grafana-namespace
- optioneel kun je een eigen values.yaml file gebruiken om wijzigingen door te voeren en er bij de installatie naar verwijzen met de toevoeging -f values.yaml (zie ook onze documentatie over het bewerken van Helm-charts voor installatie voor meer opties)
Je krijgt nu een output te zien die vergelijkbaar is met de volgende:
NAME: grafana
LAST DEPLOYED: Mon Jun 12 14:37:52 2023
NAMESPACE: grafana
STATUS: deployed
REVISION: 1
NOTES:
1. Get your 'admin' user password by running:
kubectl get secret --namespace grafana grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
2. The Grafana server can be accessed via port 80 on the following DNS name from within your cluster:
grafana.grafana.svc.cluster.local
Get the Grafana URL to visit by running these commands in the same shell:
export POD_NAME=$(kubectl get pods --namespace grafana -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=grafana" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace grafana port-forward $POD_NAME 3000
3. Login with the password from step 1 and the username: admin
#################################################################################
###### WARNING: Persistence is disabled!!! You will lose your data when #####
###### the Grafana pod is terminated. #####
#################################################################################
Daarmee is de installatie van Grafana voltooid! Op de informatie die je in de output hierboven ziet gaan we in de volgende paragraaf op in.
Informatie over je Helm-release kun je opvragen met het commando:
helm list -n grafana
Grafana gebruiken
Stap 1
First things first. Na de installatie van Grafana zag je in de output onder note 2 dat je Grafana lokaal kunt hosten. Wij gaan er voor deze handleiding echter vanuit dat je ook remote gebruik wil kunnen maken van Grafana door een (sub)domein te gebruiken. Zo niet, ga dan door naar stap 3.
Om Grafana te kunnen gebruiken via een subdomein. Is het belangrijk eerst een Nginx Ingress Controller te installeren op je Kubernetes-cluster. Maak hiervoor gebruik van onze Nginx Ingress handleiding en voeg in stap 5 nog een subdomein toe voor Grafana, bijvoorbeeld grafana.voorbeeld.nl en verwijs die naar het IP-adres van de loadbalancer zoals dat wordt uitgelegd in de handleiding.
Stap 2
Natuurlijk wil je je Grafana-website ook veilig houden. Installeer daarom ook Cert-Manager zoals beschreven in onze Cert-manager handleiding en genereer een Let's Encrypt certificaat. De paragraaf 'Cert-manager gebruiken' laat een voorbeeld hiervan voor Grafana zien.
Let wel dat je het (sub)domein gebruikt uit stap 1 van deze paragraaf en niet het gebruikte subdomein.voorbeeld.nl.
Stap 3
In de output van het installatie-commando voor Grafana zag je een commando om het wachtwoord op te vragen voor de admin-gebruiker. Vraag deze nu op met het genoemde commando:
kubectl get secret --namespace grafana grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Stap 4
Inmiddels is er waarschijnlijk genoeg tijd verstreken zodat het Let's Encrypt certificaat aan je (sub)domein voor Grafana is gekoppeld. Ga in je browser naar het betreffende (sub)domein. Je krijgt de inlogpagina hieronder te zien. Log hierop in met de gebruiker 'admin' en het in stap 3 verkregen wachtwoord.
Stap 5
Je wordt gegroet door het scherm hieronder. Als eerste stap voeg je een 'Data Source' toe, oftewel de bron waar Grafana zijn data vandaan haalt en visualiseert.
Klik op 'Data Sources'.
Stap 6
Grafana ondersteunt veel bronnen om data van te verkrijgen, maar voor deze handleiding gebruiken we Prometheus. Klik op 'Prometheus' om verder te gaan.
Stap 7
Voor de visualisatie laten we eerst zien hoe je eenvoudig zelf een data source visualiseert. Vanaf stap 9 laten we zien hoe je een dashboard importeert vanuit een grote database van kant en klare dashboards.
Ga terug naar het welkomstscherm en selecteer deze keer 'dashboards'.
Stap 8
Klik op 'Add visualization'.
Stap 9
Als je geen andere data sources gebruikt is Prometheus standaard geselecteerd. Neem eerst een kijkje onder 'Select metric' (links onder) om een beeld te krijgen van de vele beschikbare opties. Voor deze handleiding maken we een simpel overzicht van het CPU-gebruik van je Kubernetes-cluster.
- Klik op 'Code' (1) om een PromQL-query op te kunnen geven (dit is de query-taal die Prometheus gebruikt).
- Geef vervolgens het volgende commando op (2):
100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
- Geef je dashboard een titel (4).
- Pas eventueel naar wens de andere beschikbare opties onder 'Panel options' aan (3).
- Klik tot slot rechtsboven op 'Save' (5)
Stap 10
Geef je Dashboard een naam en pas optioneel de map aan (je kan dit ook achteraf doen). Klik vervolgens op 'Save'.
Gefeliciteerd! Je hebt nu je eerste dashboard gemaakt waarmee je het CPU-gebruik van je cluster kunt monitoren.
Stap 11
Een andere handige optie binnen Grafana is dat je gebruik kunt maken van bestaande dashboards. Je vindt deze op de website https://grafana.com/grafana/dashboards/ maar een behoorlijk complete is bijvoorbeeld de Kube state metrics dashboard.
Ga terug naar het overzicht van je dashboards onder 'Home' > 'Dashboards' en klik op 'New' > 'Import'.
Stap 12
Geef het Dashboard ID op van de Dashboard die je wil importeren en klik op 'Load'.
Op de website met het overzicht van de Grafana dashboards uit de vorige stap vind je bij ieder dashboard een knop om de ID te kopiëren.
Stap 13
Selecteer 'Prometheus' als data source en klik op 'Import'. Je wordt nu meteen naar je nieuwe dashboard gebracht!
Dit brengt ons aan het eind van onze Grafana-handleiding. Voor verdere verdieping in de mogelijkheden raden we aan een kijkje te nemen in de documentatie van Grafana.