Traineeship DevOps Engineer

Traineeship DevOps Engineer

TIG stack: Telegraf, InfluxDB en Grafana

Een TIG stack bestaat uit drie open source softwareproducten: Telegraf, InfluxDB en Grafana. Telegraf is een verzamelaar van data, InfluxDB een database gespecialiseerd in het opslaan van gegevens met tijdstempels en Grafana is een rapportagetool dat inzicht geeft in dataseries. De drie producten passen zo goed bij elkaar dat ze samen ook wel de TIG stack worden genoemd, hoewel dit geenszins betekent dat ze alleen met elkaar kunnen werken: Telegraf ontsluit iedere denkbare databron, InfluxDB kan door elke software (inclusief eigen Python programma’s) worden geopend en toegepast en Grafana ontsluit iedere database die er op de markt is.

Time series en grafieken

Het concept achter de gehele TIG stack zijn zogenaamde time series: reeksen homogene data met meetwaarden en tijdstempels die normaliter in grafieken en trendoverzichten worden getoond zoals hartslagmetingen, energieverbruik, temperatuur en luchtvochtigheid, gebruik van social media platforms, drukte bij de kassa van supermarkten, beschikbaarheid van taxi’s, benutting van apparaten of systeeminformatie van computers en serverparken. Een eigenschap van time series data is de periode waarin de data relevant is: time series data verliest na verloop van tijd zijn waarde en kan dan worden opgeschoond of op een hoger niveau worden geaggregeerd. De bijzondere eigenschappen van time series zijn ook de grote hoeveelheden data.

Telegraf is gespecialiseerd in het verbinden met een veelheid aan gegevensbronnen, van databases tot internet of things sensoren. Telegraf levert deze informatie aan InfluxDB, die voor de opslag ervan zorgt en een ingestelde bewaarperiode aanhoudt. Deze bewaarperiode kan van minuten tot oneindig worden ingesteld. Grafana is gespecialiseerd in het tonen van tijdgebaseerde datasets in de vorm van grafieken en trends, het geven van meldingen wanneer er een significante gebeurtenis optreedt en uitvragen en aggregeren van data van verschillende databronnen, zoals InfluxDB.

InfluxDB

InfluxDB is een open source time series database met SQL mogelijkheden en een HTTP front-end. Als database is het vergelijkbaar met een product als MariaDB maar met specifieke eigenschappen die het onderscheiden van andere databasesystemen, zoals het automatisch wissen van data na een bepaalde tijd.

Evenals MariaDB heeft InfluxDB geen externe afhankelijkheden: de installatie van het product volstaat om alle functionaliteiten toe te kunnen passen. InfluxDB luistert standaard op poort 8086 van de computer waarop het is geïnstalleerd. InfluxDB heeft ingebouwde voorzieningen voor het afvragen van data dat bestaat uit metingen, series of andere datapunten. Iedere datapunt bestaat uit sleutel-waardecombinaties (key-value pairs) die gecombineerd met een tijdstempel de fieldset worden genoemd. Fieldsets worden gegroepeerd tot een serie met een sleutel-waardecombinatie genaamd de tagset. Series kunnen worden gegroepeerd om een meting (measurement) te vormen. Een meting wordt met een string geïdentificeerd. Iedere datawaarde kan een 64-bit integer, 64-bit float, string of boolean zijn.

Een meting heeft een bewaarperiode (retention period) als eigenschap: de doorlooptijd waarna data wordt gewist. Deze bewaarperiode hangt samen met een retention policy waarmee wordt bepaald op welke manier data wordt geaggregeerd en verwijderd.

Telegraf

Telegraf is een automatische dataverzamelaar die verbindingen legt met databases zoals MySQL en MongoDB, systemen zoals cloud platformen, containers en besturingssystemen en internet of things sensoren voor druk, temperatuur, licht, vocht, beweging enzovoorts. Telegraf is een agent die gebruik maakt van plugins om gegevens te ontsluiten van databronnen. Standaard worden plugins meegeleverd voor het verbinden met databronnen via HTTP en het inlezen van bestand, maar de mogelijkheden zijn hier talrijk. Omdat Telegraf en InfluxDB door dezelfde teams worden ontwikkeld is InfluxDB in Telegraf voorgeconfigureerd.

Telegraf in relatie tot InfluxDB en Grafana (illustratie InfluxData.com)

Grafana

Grafana is een analyse- en rapportagetool dat meldingen kan geven wanneer ingestelde waarden worden overschreden. Grafana is misschien wel het coolste datavisualisatietool dat er beschikbaar is, met prachtige complexe en vloeiende grafieken, eenvoudige instellingen en fantastische uitgebreide mogelijkheden.

Voorbereiding voor de installatie

De apt indexen voor de installatie van de meest recente versie van Telegraf, InfluxDB en Grafana lopen vaak wat achter op de Raspberry Pi OS versies. Om de laatste versie te verkrijgen werken we de apt indexen bij (voer de onderstaande regels regel voor regel uit):

curl -sL https://packages.grafana.com/gpg.key | sudo apt-key add -
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list

sudo apt-get update

Installeren van de TIG stack

Het installeren van de gehele TIG stack is nu een kwestie van de installatie van de delen en de koppelingen hiertussen. De gehele installatie neemt een paar minuten in beslag. Voer de commando’s regel voor regel uit:

sudo apt-get install -y grafana influxdb telegraf

sudo systemctl enable influxdb grafana-server telegraf
sudo systemctl start influxdb grafana-server telegraf

De werking van de stack kan worden gecontroleerd met de volgende commando’s:

sudo systemctl status telegraf.service
sudo systemctl status influxdb.service
sudo systemctl status grafana-server.service

Inrichten van InfluxDB

Omdat Telegraf verschillende informatiebronnen ontsluit en zelf de series en metingen zal aanmaken is het nodig om speciaal voor Telegraf een database en een gebruiker met alle rechten op die database aan te maken. We kiezen er in onderstaand voorbeeld voor om de volgende gegevens te gebruiken:

  • Telegraf databasenaam is telegraf
  • Telegraf gebruikersnaam op de database telegraf is telegrafroot
  • Wachtwoord van de telegrafroot gebruiker is $ecret1
  • Naam van een nieuwe 4-weekse bewaarperiode is 4weken

Verbind met InfluxDB om toegang te creëren voor Telegraf en voer de volgende commando’s in om de database en gebruiker aan te maken, de gebruiker alle rechten op de database te geven en een 4-weekse bewaarperiode in te stellen:

pi@raspberrypi:~ $ influx
Connected to http://localhost:8086 version 1.8.3
InfluxDB shell version: 1.8.3
> create database telegraf
> use telegraf
Using database telegraf
> create user telegrafroot with password '$ecret1' with all privileges
> grant all privileges on telegraf to telegrafroot
> create retention policy "4weken" on "telegraf" duration 4w replication 1 default
> exit

Inrichten van Telegraf

Telegraf leest standaard de verbruiksgegevens in van de server waarop Telegraf is geïnstalleerd. Om deze gegevens aan InfluxDB aan te kunnen leveren moet Telegraf worden voorzien van de inloggegevens die we voor dit doel in InfluxDB hebben ingesteld. Hiervoor wordt het Telegraf configuratiebestand /etc/telegraf/telegraf.conf aangepast:

pi@raspberrypi:~ $ sudo nano /etc/telegraf/telegraf.conf

Wijzig in het configuratiebestand de volgende regels (verwijder het #-teken dat de regel voorafgaat en stel de juiste url, username en password in):

[[outputs.influxdb]]
 urls = ["http://127.0.0.1:8086"]
 database = "telegraf"
 username = "telegrafroot"
 password = "$ecret1"

Bewaar de wijzigingen met Ctrl-O, Enter en verlaat Nano met Ctrl-X. Telegraf moet het configuratiebestand opnieuw inlezen en daarna zijn de wijzigingen actief:

pi@raspberrypi:~ $ sudo systemctl reload telegraf.service
pi@raspberrypi:~ $ sudo systemctl status telegraf.service

Inrichten van Grafana

De inrichting van Grafana vindt plaats via de web-frontend van Grafana. Open een webbrowser op de machine zelf of op een op hetzelfde netwerk aangesloten computer en navigeer naar de url http://ip-adres-van-de-Raspberry-Pi:3000. Het Grafana inlogscherm wordt nu getoond. Het default account is admin met als wachtwoord admin. Het wachtwoord moet na de eerste inlog worden gewijzigd:

In het hoofdscherm wordt aangegeven dat de configuratie uit twee stappen bestaat: het verbinden met een gegevensbron (data source) en het aanmaken van een eerste dashboard:

Klik op Add your first data source (of klik op het configuratie icoon linksonder en kies Data Sources). Het Configuration scherm wordt getoond. Klik op Add data source en klik op Select bij de InfluxDB data source. Het configuratiepaneel voor de nieuw toe te voegen InfluxDB data source wordt nu getoond.

Stel voor het adres van de InfluxDB installatie de url http://localhost:8086 in. Vul de gegevens in waarmee Grafana de InfluxDB database kan openen: Database is telegraf, Username is telegrafroot, Password is $ecret1 en HTTP Method is GET. Klik op Save & Test. Een groene bevestiging met de tekst Data source is working wordt nu getoond.

Klik op het Grafana logo linksboven om terug te gaan naar het hoofdscherm.

De hele TIG stack is nu klaar om gebruikt te worden. Telegraf haalt met regelmaat informatie van de Raspberry Pi zoals geheugen- en cpugebruik en zet deze gegevens met een tijdstempel in InfluxDB en Grafana kan op commando time series uit InfluxDB gebruiken om hiervan grafieken te maken of meldingen te geven. De laatste stap is het maken van een dashboard met grafieken en meldingen.

Klik op New Dashboard en Add new panel. Een lege grafiek wordt getoond met daaronder de mogelijkheid tot het invullen van één of meerdere queries. Voor dit voorbeeld maken we een grafiek van het cpu gebruik van systeemprocessen waarbij we de meetpunten middelen per 5 minuten en gebruik maken van de bron 4weken:

MySQL toevoegen als gegevensbron

Hoewel MySQL geen tijdreeksdatabase is, zijn de gegevens hierin prima te gebruiken voor dashboards in Grafana. Voeg op dezelfde manier als je voor InfluxDB hebt gedaan een database toe en kies voor MySQL. Voer gebruikersnaam en wachtwoord in. Vanaf nu kun je ook gebruik maken van de data in MySQL.

Raspberry Pi Dashboard

Grafana dashboards kunnen worden geëxporteerd via de Share knop. Een Dashboard kan vervolgens op een andere Grafana implementatie worden geïmporteerd. Het is dan nog wel nodig om de juiste gegevens uit de InfluxDB te kunnen halen. Onderstaand dashboard is een uitgebreide Raspberry Pi systeemmonitor, met vele informatieve grafieken die een indruk geven van het gebruik van de Raspberry Pi.

Het dashboard bestaat uit twee delen: het Grafana dashboard en toevoegingen voor het telegraf.conf configuratiebestand. De toevoegingen voor het configuratiebestand kunnen aan het eind van het configuratiebestand worden opgenomen (Telegraf moet dan het bestand opnieuw inlezen met het commando reload). Het Grafana dashboard kan worden geïmporteerd met Dashboards > Manage > Import.

Download het Raspberry Pi dashboard hier.

 

Geef een reactie

Één gedachte over “Traineeship DevOps Engineer”

  1. Bedankt voor een goed georganiseerd traineeship. TIjdens dit traineeship heb ik alles geleerd wat ik nodig heb voor het begin van mijn DevOps carièrre. Docenten en organisatie heel erg bedankt voor de fijne en leerzame weken.

Reacties zijn gesloten.