-
Huishoudelijk
Dit deel bevat de locatie van de cursus en de contactgegevens van de docent. De agenda die in dit deel beschikbaar is bevat verwijzingen naar de lessen.
-
Week 1
Lessen, naslag en opdrachten voor week 1 van het traineeship.
-
Week 2
Lessen, naslag en opdrachten voor week 2 van het traineeship.
- Software ontwerptechnieken (1 dag)
- ISTQB Certified Tester Foundation Level (CTFL-2018, 2 dagen)
- ISTQB Foundation Level Syllabus, woordenlijst en vertaaltabel
- Studieplan voor het succesvol behalen van het ISTQB Certified Tester Foundation Level (CTFL-2018) examen
- Programmeren in Python (2 dagen)
- Huiswerkopdrachten uit de Python cursus
-
Week 3
Lessen, naslag en opdrachten voor week 3 van het traineeship.
- Opfriscursus HTML, CSS, JavaScript en Bootstrap (zelfstudie)
- Opfriscursus SQL (zelfstudie)
- Doe de SQL Quiz Test op W3Schools en deel je score!
- Servertoepassingen met de Raspberry Pi (1 dag)
- Raspberry Pi remote programmeren met Visual Studio Code
- Netwerktechnologie in de praktijk
- Web development met Python, SQLAlchemy, SQLite en Flask (2 dagen)
-
Week 4
Lessen, naslag en opdrachten voor week 4 van het traineeship.
- De Thuisbezorgd multimedia koerier van het internet
- Introductie van Postman met installatie en eerste gebruik
- Gegevens van een webservice uitvragen met Postman
- Introductie van JMeter met installatie en eerste gebruik
- Performancetesten uitvoeren met JMeter
- Webtesten met Cucumber en Python (2 dagen)
- Opdrachten webtesten met Cucumber, Splinter en Request
- Unittesten met het Python 3 Unittest framework
- Unittesten voor bubblesort
- Terugkeer van de Waar is de kat geweest simulatie
- Unittesten toevoegen voor de Flask onderdelen webservice
- Versiebeheer met Git en gebruik van GitHub in Visual Studio Code
- Bijdragen aan open source projecten in GitHub
- Werken met Jira
- Gebruik van GitLab als online projectserver
- Inleiding in Apache Maven
-
Week 5
Lessen, naslag en opdrachten voor week 5 van het traineeship.
-
Week 6
Lessen, naslag en opdrachten voor week 6 van het traineeship.
-
Week 7
Lessen, naslag en opdrachten voor week 7 van het traineeship.
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.
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
Je moet inloggen om een reactie te kunnen plaatsen.
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.