20221101 Install InfluxDB
Missie:
We gaan een database installeren.
In deze Raspberry Pi InfluxDB tutorial laten we je zien hoe je InfluxDB installeert en instelt op een Raspberry Pi.
We gaan je ook laten zien hoe je authenticatie op uw InfluxDB-server kunt inschakelen om de beveiliging te verbeteren,
en laten je ook zien hoe je via de opdrachtregel met de database kunt communiceren.
Voor degenen die zich afvragen wat InfluxDB is, InfluxDB is een op tijdreeksen gebaseerd databasesysteem.
Dit betekent dat elk data punt in de database een tijdstempel zal bevatten.
Omdat het op tijdreeksen is gebaseerd, is InfluxDB een van de beste databases voor het bewaken van statistieken en gebeurtenissen.
Je kunt InfluxDB eenvoudig gebruiken om informatie zoals de temperatuur in een kamer of het CPU-gebruik van een systeem op te slaan.
InfluxDB is de perfecte databasesoftware naast het populaire visualisatietool Grafana.
Grafana heeft ingebouwde ondersteuning voor het weergeven van gegevens uit een InfluxDB-database.
Stap 1 - Breng het besturingssysteem op de laatste stand.
Open een terminal venster en type de volgende commando’s:
sudo apt update && sudo apt upgrade
Stap 2 - InfluxDB repository sleutel installeren.
Nu het besturingssysteem up-to-date is kunnen we verder gaan met de installatie van InfluxDB.
We moetn de InfluxDB repository sleutel aan de Raspberry Pi toevoegen.
het toevoegen van de sleutel geeft de pakket manager van Raspbian de mogelijkheid de repositories installeren
en het pakket up-to-date te houden.
De sleutel wordt geïnstalleerd met het volgende commando:
curl https://repos.influxdata.com/influxdb.key | gpg --dearmor | sudo tee /usr/share/keyrings/influxdb-archive-keyring.gpg >/dev/null
Dit commando haalt de sleutel op met curl
en zet het direct in het gpg programma middels een pipe |.
Als de sleutel is ontwapend via de-armor
wordt hij in de folder /usr/share/keyrings/ gezet.
Stap 3 - Influx repository installeren.
Nadat de InfluxDB repository sleutel is geïnstalleerd moeten we de repository toevoegen aan de sources lijst.
Doe dit met het volgende commando:
echo "deb [signed-by=/usr/share/keyrings/influxdb-archive-keyring.gpg] https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
Met de repository toegevoegd, gaan we de package lijst updaten.
Dit is nodig zodat de apt package manager de repository zoekt die we zo net hebben toegevoegd.
Het systeem doet dit niet automatisch.
Gebruik het volgende commando om de package lijst te updaten:
sudo apt update
Stap 4 - InfluxDB installeren.
Nu alles up-to-date is en de package manager InfluxDB kan vinden, kunnen we InfluxDB installeren.
Gebruik het volgende commando:
sudo apt install influxdb
Hierna moeten we er voor zorgen dat InfluxDB gestart wordt bij het starten van de Raspberry Pi. Doe dat met de volgende opdrachten:
sudo systemctl unmask influxdb
sudo systemctl enable influxdb
Met het eerste commando wordt de InfluxDB service gedemaskeerd. Dit zorgt ervoor dat InfluxDB opgestart kan worden.
Het tweede commando schakelt de InfluxDB service in. Dit commando zorgt ervoor dat de service manager een oogje houdt
op het influxdb.service bestand.
Stap 5 - InfluxDB opstarten.
Alles staat nu klaar om de InfluxDB software op te starten.
We doen dat met het volgende commando:
sudo systemctl start influxdb
Stap 6 - InfluxDB gebruiken.
Nu kunnen we een database aanmaken.
We doen dit met het InfluxDB CLI-tool (Command LIne tool) door het onderstaande commando in te voeren:
Standaard heeft InfluxDB geen gebruikers geïnstalleerd. We gaan dit in een later stadium doen.
influx
Influx heeft standaard ook geen database, dus deze moeten we ook aanmaken.
Dat kan met het commando CREATE DATABASE NAME,
bijvoorbeeld kunnen we een database met de naam TESTDB
aanmaken met:
CREATE DATABASE TESTDB
Daarna moeten we InfluxDB duidelijk maken dat hij deze database moet gebruiken met:
USE TESTDB
Stap 7 - Data in de database zetten.
De volgende stap is om wat gegevens naar onze nieuw gecreëerde InfluxDB-database te schrijven.
Om dit te doen, moeten we eerst basiskennis verkrijgen van de datastore van InfluxDB.
Gegevens in InfluxDB zijn gesorteerd binnen tijdreeksen. Deze tijdreeksen kunnen zo veel of zo weinig gegevenspunten
bevatten als je nodig hebt. Elk van deze gegevenspunten vertegenwoordigt een enkel voorbeeld van die metriek.
Een gegevenspunt bestaat uit de tijd, een meetnaam zoals bijvoorbeeld temperatuur en ten minste eenn veld.
Je kunt ook tags gebruiken die geïndexeerde stukjes gegevens zijn die alleen een tekenreeks zijn.
Tags zijn essentieel voor het optimaliseren van database-lookups.
Als je bekend bent met de algemene lay-out van een SQL data bases, kunt je tijd beschouwen als de primaire index,
meting als de tabelnaam en de tags en field als de kolomnamen.
De tijdstempel hoef je niet op te geven, tenzij u een specifieke tijd en datum voor het gegevenspunt wilt opgeven.
Hieronder hebben we het basisformaat van een InfluxDB-datapunt opgenomen.
<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]
Als je meer wilt weten van de InfluxDB synstax, kun je op deze officiele documentatie.
Nu de basis kennis er is, gaan we verder om gegevns in de database te zetten.
We gaan temperaturen voor diverse locaties toevoegen.
Dat doen we door een meting met de naam temp met een tag voor location en een field-key met value toe te voegen.
Ons eerste datapunt wordt een temperatuur van 20.2℃ voor de woonkamer (living room).
INSERT temperature,location=living_room value=20.2
We gaan nog meer data toevoegen.
INSERT temperature,location=living_room value=10
INSERT temperature,location=bedroom value=34
INSERT temperature,location=bedroom value=23
We hebben nu een aantal data punten in de database ingevoegd.
Die zouden we weer "boven water" moeten kunnen halen.
Gebruik het commando:
SELECT * FROM temperature
Dat brengt de volgende lijst:
name: temperature
time location value
---- -------- -----
1574055049844513350 living_room 20.2
1574055196564029842 living_room 10
1574055196576516557 bedroom 34
1574055197188117724 bedroom 23
Indien we nu alleen de temperaturen voor de slaapkamer willen zien gebruiken we WHERE naast SELECT
.
We specificeren de tags/field die we uit de database willen halen.
De query ziet er dan als volgt uit:
SELECT value FROM temperature WHERE location='bedroom'
Dat brengt de volgende lijst:
name: temperature
time location value
---- -------- -----
1574055196576516557 bedroom 34
1574055197188117724 bedroom 23
Op deze manier kunnen we een gesorteerde lijst krijgen.
Het CLI-tool afsluiten doen we met de volgende opdracht:
exit
De locaties van de database en zijn bestanden is:
Path Default
Data directory /var/lib/influxdb/data/
WAL directory /var/lib/influxdb/wal/
Metastore directory /var/lib/influxdb/meta/
Stap 8 - Authenticatie toevoegen.
De volgende stap is om extra authenticatie toe te voegen aan onze InfluxDB-installatie op de Raspberry Pi.
Zonder authenticatie kan iedereen met de database(ses) communiceren.
Eerst een gebruiker maken die als beheerder optreedt.
Om deze gebruiker aan te maken, moeten we eerst de InfluxDB CLI-tool laden door de volgende opdracht uit te voeren.
influx
Binnen deze interface kunnen we een gebruiker aanmaken die volledige toegang heeft tot de database.
Deze gebruiker zal fungeren als ons beheerdersaccount, de admin.
Om deze admin-gebruiker aan te maken, voer je de volgende opdracht uit in de CLI-tool van InfluxDB.
Zorg ervoor dat <password> vervangen wordt door een veilig wachtwoord naar keuze.
CREATE USER admin WITH PASSWORD '<password>' WITH ALL PRIVILEGES
Dit commande maakt een gebruiker met de naam admin aan, met het gekozen wachtwoord en deze heeft alle previleges.
Verlaat nu het CLI tool met:
exit
Vervolgens moeten we het InfluxDB configuratie bestand aanpassen om deze authenticatie toe te laten.
We gaan het bestand editeren via de volgende commando regel in het terminal venster:
sudo nano /etc/influxdb/influxdb.conf
Binnen de editor zoeken we naar de term [HTTP] met de toetsencombinatie Ctrl+W en dan de term [HTTP].
Onder deze regel voegen we de volgende reles in:
auth-enabled = true
pprof-enabled = true
pprof-auth-enabled = true
ping-auth-enabled = true
Als deze regels zijn toegevoegd kun je de editor afsluiten met de volgende toetsenvolgorde:
Ctrl+X, dan Y en daarna ENTER.
We hebben nu aanpassingen aan de InfluxDB configuratie gedaan, dus is het zaak de InfluxDB service opnieuw op te starten met:
sudo systemctl restart influxdb
De autenticatie is nu ingeschakeld.
Om nu opnieuw in de database in te loggen moeten we de gebruikersnaam en het wachtwoord toevoegen.
Voorbeeld:
influx -username admin -password '<password>'
Gebruik je gebruikersnaam en wachtwoord niet, dan kijg je toegang, maar kunt geen data zien.
Probeer eens in te loggen zonder de inloggegevens en gebruik het commando om de aangemaakte gebruikers te zien.
Dat levert niks op.
show users
Verlaat InfluxDB en log in met de juiste inloggegevens en geef bovenstaan commando opnieuw. Zie het verschillende resultaat.
Probeer een datapunt toe te voegen en probeer een lijst op te roepen.
Indien dit lukt sluit je het CLI tool af.
Als er problemen zijn, lees dan de voorgaande stappen nog eens na en kijk waar het fout is gegaan.
De InfluxDB versie die hier geïnstalleerd is, is versie 1.8.10.
De volledige documentatie vind je hier.
De huidige InfluxDB versie is 2.5. Die zou sneller moeten zijn.
Wil je de aangemaakte database verwijderen, doe je dat met:
drop database <db-naam>
Waar <db-naam> vervangen wordt door de naam van de database.
Let op: de database namen zijn hoofdletter gevoelig!
Of de database verwijderd is kun je zien met het commando:
show databases
De database _internal is een interne database.
InfluxDB verwijderen.
InfluxDB verwijderen met al zijn data en met al zijn configuratie bestanden.
InfluxDB kun je verwijderen met het volgende commando:
sudo apt-get purge --auto-remove influxdb