Nadat de Kubernetes Cluster ‘up-and-running’ is en er pods met applicaties op draaien, willen we de status van het cluster gaan monitoren. Datgene dat gemonitored kan worden dient ‘gescraped‘ te worden en voor Kubernetes is Prometheus daar de uitgelezen tool voor. Scrapen van de systeem-eigenschappen van de node(s) zelf kan heel goed met ‘node-exporter‘.
Prometheus
Om Prometheus te installeren is het meest eenvoudige om deze in een docker container te draaien. Voer daarvoor de volgende commando’s uit:
$ docker create --name prom_empty prom/prometheus $ docker cp prom_empty:/etc/prometheus/prometheus.yml ./prometheus.yml
Wijzig het bestand prometheus.yml zodanig dat de ‘targets’ in de ‘scrape_configs’ naar de localhost, de master en de nodes van het Kubernetes-cluster verwijzen waar node-exporter straks op geïnstalleerd wordt:
scrape_configs:
# The job name is added as a label job=<job_name>
to any timeseries scraped from this config.
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'master'
static_configs:
- targets: ['master:9100']
- job_name: 'node1'
static_configs:
- targets: ['node1:9100']
- job_name: 'node2'
static_configs:
- targets: ['node2:9100']
Plaats het bestand terug in de docker image door een nieuwe image te bouwen. Maak een Dockerfile met de volgende inhoud:
FROM prom/prometheus COPY ./prometheus.yml /etc/prometheus/prometheus.yml
Vervolgens bouwen en starten we de nieuwe image met:
$ docker build -t prometheus/rpi-cluster . $ docker run -p 9090:9090 --restart=always --name prometheus-rpi -d prometheus/rpi-cluster
Controle kan door een browser te starten naar localhost op poort 9090
http://localhost:9090
Node Exporter
Node-exporter voegt extra informatie toe om te monitoren (scrapen). Denk hierbij aan CPU, geheugen, netwerk en disk statistieken. Om node-exporter te installeren, voer de volgende commando’s uit op alle nodes waarvan deze informatie ‘gescraped‘ dient te worden.:
$ wget https://github.com/prometheus/node_exporter/releases/download/v0.14.0/node_exporter-0.14.0.linux-armv7.tar.gz $ sudo tar -xvf node_exporter-0.14.0.linux-armv7.tar.gz -C /usr/local/bin/ --strip-components=1 $ sudo vi /etc/systemd/system/nodeexporter.service
Wijzig dit bestand alsvolgt:
[Unit] Description=NodeExporter [Service] TimeoutStartSec=0 ExecStart=/usr/local/bin/node_exporter [Install] WantedBy=multi-user.target
en vervolg de installatie met:
$ sudo systemctl daemon-reload $ sudo systemctl enable nodeexporter $ sudo systemctl start nodeexporter
Controle kan met curl naar één van de K8s-nodes:
curl node_name:9100/metrics | less
Prometheus UI
Ga wederom met een browser naar localhost op poort 9090:
De user-interface ziet er alsvolgt uit:
Om te zien of en welke nodes ‘gescraped’ worden, ga naar Status -> Targets. Dat ziet op mijn cluster dan zo uit:
Via de menu-optie ‘Graph‘ kun je in het Expression veld een metric opvragen, bijvoorbeeld ontvangen netwerk verkeer. Na “Execute” ziet dat er bv. zo uit:
Grafana
Om een dashboard te maken met informatie uit Prometheus is er het programma ‘Grafana‘. Dit geeft via een Web-interface op een grafische wijze de metrics weer vanuit o.a. Prometheus. Installeren gaat alsvolgt:
$ wget https://dl.grafana.com/oss/release/grafana-rpi_6.2.5_armhf.deb $ sudo dpkg -i grafana-rpi_6.2.5_armhf.deb $ sudo apt install libfontconfig1 $ sudo apt --fix-broken install $ sudo /bin/systemctl daemon-reload $ sudo /bin/systemctl enable grafana-server $ sudo /bin/systemctl start grafana-server
Hierna draait de Grafana server op poort 3000. Bijvoorbeeld http://grafana:3000 Met een browser kan ingelogd worden in de Grafana portal en als eerste dien je aan te melden als user ‘admin‘. Na registratie en wachtwoord wijziging wordt het standaard dashboard getoond. Kies hier voor ‘Create your first data source‘ en selecteer ‘Prometheus‘. Als dat dezelfde host is, kies dan voor http://localhost:9090 als URL.
Na een import van Dashboard 1860 ziet dat er alsvolgt uit: