In einer Welt, die zunehmend von Daten angetrieben wird, sind Zeitreihendaten zu einer unverzichtbaren Ressource geworden. Ob es um die Überwachung von Servern, IoT-Geräten, Finanzmärkten oder die Analyse von Benutzerverhalten geht – die Fähigkeit, Datenpunkte im Zeitverlauf effizient zu speichern, abzufragen und zu analysieren, ist entscheidend. Hier kommt InfluxDB ins Spiel, eine spezialisierte Zeitreihendatenbank, die genau für diesen Zweck entwickelt wurde.
InfluxDB zeichnet sich durch seine hohe Leistung, Skalierbarkeit und eine spezielle Abfragesprache namens Flux aus, die das Arbeiten mit Zeitreihendaten revolutioniert. Für Entwickler, Systemadministratoren und Datenwissenschaftler, die eine robuste Lösung für ihr Monitoring oder ihre Analyseprojekte suchen, ist InfluxDB oft die erste Wahl.
Dieser Artikel führt Sie durch eine schrittweise Installation von InfluxDB 2.x auf einem frischen Ubuntu 22.04-System. Ubuntu 22.04 (Codename „Jammy Jellyfish”) ist eine beliebte und stabile Linux-Distribution, die eine hervorragende Basis für den Betrieb von InfluxDB bietet. Wir werden jeden Schritt detailliert behandeln, von der Systemvorbereitung bis zur ersten Datenaufnahme und Abfrage, um sicherzustellen, dass Sie InfluxDB 2.x erfolgreich in Betrieb nehmen können.
Vorbereitung: Ihr Ubuntu 22.04 System
Bevor wir mit der Installation von InfluxDB beginnen, ist es wichtig, dass Ihr Ubuntu 22.04-System ordnungsgemäß vorbereitet ist. Eine saubere Ausgangsbasis minimiert potenzielle Probleme und gewährleistet eine reibungslose Installation. Stellen Sie sicher, dass Sie als Benutzer mit sudo
-Rechten angemeldet sind oder direkten Root-Zugriff haben.
System aktualisieren
Beginnen Sie immer damit, Ihr System auf den neuesten Stand zu bringen. Dies stellt sicher, dass alle Pakete aktuell sind und mögliche Abhängigkeitsprobleme vermieden werden. Öffnen Sie ein Terminal und führen Sie die folgenden Befehle aus:
sudo apt update
sudo apt upgrade -y
Der Befehl sudo apt update
aktualisiert die Paketliste, und sudo apt upgrade -y
installiert alle verfügbaren Updates, wobei -y
die Bestätigungsfragen automatisch mit „Ja” beantwortet. Dies kann je nach dem letzten Update Ihres Systems einige Minuten dauern.
Notwendige Tools installieren
Für die kommenden Schritte benötigen wir einige grundlegende Tools, die meistens bereits auf einem frischen Ubuntu-System vorhanden sind, aber zur Sicherheit überprüft oder installiert werden sollten. Dazu gehören curl
und wget
, die zum Herunterladen von Dateien und GPG-Schlüsseln verwendet werden:
sudo apt install curl wget -y
Diese Tools sind entscheidend, um das InfluxData-Repository sicher zu Ihrem System hinzuzufügen.
Schritt 1: Das InfluxData APT Repository hinzufügen
InfluxDB wird nicht standardmäßig in den Ubuntu-Repositories angeboten. Um die neueste Version von InfluxDB 2.x zu installieren und zukünftige Updates einfach zu erhalten, fügen wir das offizielle InfluxData APT-Repository hinzu. Dies ist der empfohlene Weg, um die Software zu verwalten.
GPG-Schlüssel importieren
Zuerst müssen wir den GPG-Schlüssel von InfluxData importieren. Dieser Schlüssel wird verwendet, um die Authentizität der Pakete aus dem Repository zu überprüfen. Dies ist ein wichtiger Sicherheitsschritt, der sicherstellt, dass Sie nur vertrauenswürdige Software installieren.
wget -qO- https://repos.influxdata.com/influxdata-archive_compat.key | sudo gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata.gpg > /dev/null
Lassen Sie uns diesen Befehl aufschlüsseln:
wget -qO- https://repos.influxdata.com/influxdata-archive_compat.key
lädt den GPG-Schlüssel herunter und gibt ihn auf die Standardausgabe aus (-O-
).-q
unterdrückt die Ausgabe vonwget
.| sudo gpg --dearmor
leitet die Ausgabe angpg
weiter, das den Schlüssel in ein Binärformat umwandelt, das von APT verwendet werden kann.| sudo tee /etc/apt/trusted.gpg.d/influxdata.gpg > /dev/null
speichert den dearmorierten Schlüssel in der Datei/etc/apt/trusted.gpg.d/influxdata.gpg
. Das Verzeichnis/etc/apt/trusted.gpg.d/
ist der standardmäßige und sicherere Ort für GPG-Schlüssel unter modernen Ubuntu-Versionen.> /dev/null
leitet die Standardausgabe vontee
um, um unnötige Konsolenausgaben zu vermeiden.
InfluxData Repository hinzufügen
Nachdem der GPG-Schlüssel importiert wurde, können wir das Repository zu unserer APT-Quellenliste hinzufügen:
echo "deb [signed-by=/etc/apt/trusted.gpg.d/influxdata.gpg] https://repos.influxdata.com/ubuntu jammy stable" | sudo tee /etc/apt/sources.list.d/influxdata.list
Dieser Befehl fügt eine neue Zeile zur Datei /etc/apt/sources.list.d/influxdata.list
hinzu. Die Zeile definiert das InfluxData-Repository für Ubuntu „Jammy Jellyfish” (22.04) und weist APT an, die Pakete mit dem zuvor importierten GPG-Schlüssel zu signieren. Dies ist ein wichtiger Schritt für die Repository-Verwaltung.
APT-Cache aktualisieren
Damit APT das neu hinzugefügte Repository erkennt und die darin verfügbaren Pakete auflisten kann, müssen Sie den Paketindex aktualisieren:
sudo apt update
Sie sollten nun Einträge sehen, die auf das InfluxData-Repository verweisen.
Schritt 2: InfluxDB 2.x installieren
Jetzt, da das Repository erfolgreich hinzugefügt und der APT-Cache aktualisiert wurde, können Sie InfluxDB 2.x mit einem einzigen Befehl installieren:
sudo apt install influxdb2 -y
Dieser Befehl lädt das InfluxDB 2.x-Paket und alle seine Abhängigkeiten herunter und installiert sie. Der Prozess sollte relativ schnell abgeschlossen sein.
Installation überprüfen
Nach der Installation können Sie überprüfen, ob InfluxDB korrekt installiert wurde, indem Sie die Versionsnummer abfragen:
influxd version
Sie sollten eine Ausgabe ähnlich wie InfluxDB v2.x.x (git: <commit>) build_type=oss
sehen, die bestätigt, dass InfluxDB 2.x erfolgreich installiert ist.
Schritt 3: InfluxDB starten und aktivieren
InfluxDB wird als Systemdienst ausgeführt. Nach der Installation muss es gestartet und so konfiguriert werden, dass es bei jedem Systemstart automatisch hochfährt. Dies geschieht mithilfe von systemd
.
InfluxDB-Dienst starten
Starten Sie den InfluxDB-Dienst mit dem folgenden Befehl:
sudo systemctl start influxdb
InfluxDB beim Systemstart aktivieren
Damit InfluxDB auch nach einem Neustart des Servers automatisch gestartet wird, aktivieren Sie den Dienst:
sudo systemctl enable influxdb
Status überprüfen
Um zu überprüfen, ob InfluxDB erfolgreich gestartet wurde und aktiv läuft, können Sie den Status des Dienstes abfragen:
sudo systemctl status influxdb
Sie sollten eine Ausgabe sehen, die anzeigt, dass der Dienst „active (running)” ist. Drücken Sie q
, um die Statusansicht zu verlassen.
Schritt 4: Erste Konfiguration von InfluxDB 2.x
InfluxDB 2.x bringt eine integrierte Benutzeroberfläche (UI) und einen vereinfachten Setup-Prozess mit sich. Die Erstkonfiguration umfasst die Erstellung eines Administrators, einer Organisation, eines Buckets und eines API-Tokens. Sie können dies entweder über die Weboberfläche oder über die Kommandozeile tun.
Option A: Konfiguration über die Weboberfläche (Empfohlen)
Die Weboberfläche ist der intuitivste Weg, um InfluxDB 2.x zu konfigurieren. InfluxDB lauscht standardmäßig auf Port 8086.
- Firewall-Regel hinzufügen: Bevor Sie auf die Weboberfläche zugreifen können, müssen Sie möglicherweise den Port 8086 in Ihrer Firewall öffnen. Wenn Sie UFW (Uncomplicated Firewall) verwenden, lautet der Befehl:
sudo ufw allow 8086/tcp
Vergessen Sie nicht, UFW zu aktivieren, falls es nicht bereits aktiv ist:
sudo ufw enable
. - Auf die Weboberfläche zugreifen: Öffnen Sie Ihren Webbrowser und navigieren Sie zu
http://<Ihre_Server_IP>:8086
. Wenn Sie InfluxDB lokal auf Ihrem Arbeitsrechner installiert haben, verwenden Siehttp://localhost:8086
. - Initiales Setup: Sie werden von einem Begrüßungsbildschirm empfangen. Klicken Sie auf „Get Started” oder „Erste Schritte”.
- Benutzerkonto erstellen: Geben Sie einen Benutzernamen (z.B.
admin
) und ein sicheres Passwort ein. - Organisation erstellen: Geben Sie einen Namen für Ihre Organisation ein (z.B.
MeineOrganisation
). Organisationen helfen, Ressourcen in InfluxDB zu isolieren. - Initiales Bucket erstellen: Geben Sie einen Namen für Ihr erstes Bucket ein (z.B.
mein_bucket
). Ein Bucket ist der Ort, an dem Ihre Zeitreihendaten gespeichert werden. - Retention Policy: Legen Sie die Aufbewahrungsrichtlinie (Retention Policy) für Ihr Bucket fest, d.h., wie lange Daten gespeichert werden sollen. Standardmäßig ist dies „Forever” (unendlich), aber Sie können dies an Ihre Bedürfnisse anpassen (z.B. 7 Tage, 30 Tage).
- Benutzerkonto erstellen: Geben Sie einen Benutzernamen (z.B.
- Klicken Sie auf „Continue” oder „Weiter”, um den Einrichtungsprozess abzuschließen. Sie werden zum InfluxDB-Dashboard weitergeleitet.
Option B: Konfiguration über die Kommandozeile (CLI)
Wenn Sie lieber die Kommandozeile verwenden oder keinen grafischen Zugriff haben, können Sie den Befehl influx setup
verwenden:
influx setup
Der Befehl wird Sie durch eine Reihe von Fragen führen:
Please type your primary username:
(z.B.admin
)Please type your password:
(Geben Sie ein sicheres Passwort ein)Please type your password again:
(Bestätigen Sie das Passwort)Please type your primary organization name:
(z.B.MeineOrganisation
)Please type your primary bucket name:
(z.B.mein_bucket
)Please type your retention period in hours. 0 for infinite.:
(Geben Sie0
für unendlich oder eine Zahl für die Stunden ein, z.B.168
für 7 Tage).Please confirm the above with a 'y':
(Geben Siey
ein und drücken Sie Enter).
Nach Abschluss des Setups werden ein Administratorbenutzer, ein API-Token, eine Organisation und ein Bucket erstellt. Das erzeugte API-Token ist sehr wichtig. Speichern Sie es an einem sicheren Ort, da es für alle zukünftigen Interaktionen mit der InfluxDB-API benötigt wird.
Verifizierung der Konfiguration
Sie können Ihre Organisationen, Buckets und Benutzer über die CLI überprüfen. Stellen Sie sicher, dass Sie dafür den richtigen API-Token verwenden (entweder aus der Web-UI oder der CLI-Einrichtung). Exportieren Sie das Token als Umgebungsvariable, um es nicht bei jedem Befehl eingeben zu müssen:
export INFLUX_TOKEN="<Ihr_API_Token>"
export INFLUX_ORG="MeineOrganisation" # Oder den Namen, den Sie gewählt haben
export INFLUX_HOST="http://localhost:8086" # Wenn InfluxDB auf einem Remote-Server läuft, ersetzen Sie localhost durch die IP-Adresse
Listen Sie dann die Organisationen auf:
influx org list
Listen Sie die Buckets auf:
influx bucket list
Diese Befehle sollten die von Ihnen erstellten Einträge anzeigen.
Schritt 5: Daten schreiben und abfragen
Nachdem InfluxDB 2.x installiert und konfiguriert ist, können wir nun Daten schreiben und abfragen. InfluxDB verwendet das „Line Protocol” zum Schreiben von Daten und die Flux-Abfragesprache zum Abrufen und Transformieren von Daten.
Daten schreiben (InfluxDB Line Protocol)
Das Line Protocol ist ein textbasiertes Format zum Senden von Zeitreihendaten an InfluxDB. Es hat folgendes Format:
<measurement>[,<tag_key>=<tag_value>...] <field_key>=<field_value>[,<field_key>=<field_value>...] [timestamp]
measurement
: Der Name der Messung (z.B.cpu_usage
).tag_key=tag_value
: Metadaten, die zur Filterung verwendet werden können (z.B.host=server01
,region=us-west
). Tags sind immer Strings und werden indiziert.field_key=field_value
: Die eigentlichen Datenpunkte (z.B.value=85.5
,temp=23.1
). Fields können verschiedene Datentypen haben und sind nicht indiziert.timestamp
: Optional. Der Zeitstempel des Datenpunkts. Wenn weggelassen, verwendet InfluxDB die aktuelle Serverzeit.
Sie können Daten über die influx write
CLI oder über Client-Bibliotheken schreiben. Für den Anfang verwenden wir die CLI:
influx write --bucket mein_bucket --org MeineOrganisation 'cpu_usage,host=server01 value=85.5 1678886400000000000'
influx write --bucket mein_bucket --org MeineOrganisation 'cpu_usage,host=server02 value=72.1 1678886400000000000'
influx write --bucket mein_bucket --org MeineOrganisation 'memory_usage,host=server01 free=1024,total=4096 1678886460000000000'
Hinweis: Die Timestamps sind in Nanosekunden seit der Unix-Epoche angegeben. Wenn Sie den Timestamp weglassen, wird die aktuelle Zeit verwendet:
influx write --bucket mein_bucket --org MeineOrganisation 'cpu_usage,host=server03 value=91.0'
Daten abfragen (Flux-Sprache)
InfluxDB 2.x verwendet Flux, eine leistungsstarke funktionale Skriptsprache, die speziell für Abfragen, Analysen und Transformationen von Zeitreihendaten entwickelt wurde. Flux ist nicht nur eine Abfragesprache, sondern auch eine komplette Data Scripting Language, die es ermöglicht, komplexe Datenflüsse zu erstellen.
Eine grundlegende Flux-Abfrage besteht typischerweise aus drei Teilen:
from()
: Definiert das zu abfragende Bucket.range()
: Definiert den Zeitbereich, in dem nach Daten gesucht werden soll.filter()
: Filtert die Daten nach spezifischen Kriterien (Messung, Tags, Felder).
Hier sind einige Beispiele für Abfragen über die influx query
CLI:
Alle Daten aus Ihrem Bucket der letzten Stunde abfragen:
influx query --org MeineOrganisation 'from(bucket: "mein_bucket") |> range(start: -1h)'
CPU-Auslastung von ‘server01’ der letzten 5 Minuten abfragen:
influx query --org MeineOrganisation 'from(bucket: "mein_bucket")
|> range(start: -5m)
|> filter(fn: (r) => r._measurement == "cpu_usage")
|> filter(fn: (r) => r.host == "server01")'
Die durchschnittliche CPU-Auslastung pro Host der letzten Stunde abfragen:
influx query --org MeineOrganisation 'from(bucket: "mein_bucket")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "cpu_usage")
|> filter(fn: (r) => r._field == "value")
|> aggregateWindow(every: 1m, fn: mean, createEmpty: false)
|> yield(name: "mean_cpu_usage")'
Sie können auch das „Data Explorer”-Fenster in der InfluxDB-Weboberfläche verwenden, um visuell Abfragen zu erstellen und die Ergebnisse grafisch darzustellen. Dies ist eine hervorragende Möglichkeit, Flux zu lernen und Ihre Daten zu visualisieren.
Sicherheitshinweise und Best Practices
Eine sichere und gut verwaltete Zeitreihendatenbank ist entscheidend für den reibungslosen Betrieb Ihrer Anwendungen.
- Firewall konfigurieren: Stellen Sie sicher, dass nur vertrauenswürdige IP-Adressen auf Port 8086 zugreifen können. Wenn InfluxDB nur intern verwendet wird, beschränken Sie den Zugriff auf lokale Netzwerke oder bestimmte Server-IPs. Wenn Sie Zugriff aus dem Internet benötigen, erwägen Sie die Verwendung eines Reverse-Proxys (z.B. Nginx oder Apache) mit SSL/TLS-Verschlüsselung.
- API-Token sorgfältig verwalten: Die API-Tokens gewähren Zugriff auf Ihre InfluxDB-Instanz. Behandeln Sie sie wie Passwörter. Speichern Sie sie nicht in unverschlüsselten Dateien und verwenden Sie keine Tokens mit zu weitreichenden Berechtigungen. Erstellen Sie bei Bedarf spezifische Tokens mit eingeschränkten Lese- oder Schreibrechten.
- Datenaufbewahrungsrichtlinien (Retention Policies): Definieren Sie für Ihre Buckets sinnvolle Aufbewahrungsrichtlinien. Das Speichern von Daten für immer kann schnell zu hohen Speicherkosten führen. Löschen Sie alte Daten, die nicht mehr benötigt werden, um Speicherplatz freizugeben und die Abfrageleistung zu verbessern.
- Backups: Implementieren Sie eine regelmäßige Backup-Strategie für Ihre InfluxDB-Instanz. InfluxDB bietet Tools zum Sichern und Wiederherstellen von Daten.
- Ressourcenüberwachung: Überwachen Sie die Ressourcennutzung (CPU, RAM, Speicherplatz) Ihres Servers, auf dem InfluxDB läuft. Eine überlastete Datenbank kann zu Performance-Engpässen führen.
- InfluxDB-Updates: Halten Sie Ihre InfluxDB-Instanz durch regelmäßige Updates auf dem neuesten Stand, um von neuen Funktionen, Leistungsverbesserungen und Sicherheitspatches zu profitieren.
Fehlerbehebung
Auch bei sorgfältigster Installation können manchmal Probleme auftreten. Hier sind einige grundlegende Schritte zur Fehlerbehebung:
- Dienststatus überprüfen: Wenn InfluxDB nicht erreichbar ist, überprüfen Sie zuerst den Status des Dienstes:
sudo systemctl status influxdb
Suchen Sie nach Fehlermeldungen oder Hinweisen, warum der Dienst nicht gestartet werden konnte oder abgestürzt ist.
- Log-Dateien einsehen: InfluxDB schreibt detaillierte Log-Meldungen. Sie können diese mit
journalctl
überprüfen:sudo journalctl -u influxdb -f
Dies zeigt die letzten Log-Einträge und bleibt aktiv, um neue Einträge anzuzeigen. Suchen Sie nach
ERROR
– oderWARN
-Meldungen. - Firewall-Probleme: Wenn Sie von einem anderen Rechner nicht auf die InfluxDB-Weboberfläche zugreifen können, überprüfen Sie Ihre Firewall-Regeln (z.B.
sudo ufw status
). Stellen Sie sicher, dass Port 8086 für TCP-Verbindungen erlaubt ist. - API-Token überprüfen: Wenn CLI-Befehle fehlschlagen, stellen Sie sicher, dass Ihr
INFLUX_TOKEN
(oder der explizit angegebene Token mit-t
) korrekt ist und die erforderlichen Berechtigungen besitzt. - Speicherplatz: Überprüfen Sie, ob der Server ausreichend Speicherplatz hat, insbesondere für das Verzeichnis, in dem InfluxDB seine Daten speichert (standardmäßig
/var/lib/influxdb
).
Fazit
Herzlichen Glückwunsch! Sie haben erfolgreich InfluxDB 2.x auf Ubuntu 22.04 installiert und die Grundlagen für das Schreiben und Abfragen von Zeitreihendaten gemeistert. Diese Anleitung hat Ihnen einen soliden Startpunkt gegeben, um die Leistungsfähigkeit dieser spezialisierten Datenbank zu nutzen.
InfluxDB ist ein mächtiges Werkzeug, das Ihnen hilft, wertvolle Einblicke aus Ihren zeitbasierten Daten zu gewinnen, sei es für Systemüberwachung, IoT-Anwendungen oder komplexe Datenanalysen. Von hier aus können Sie tiefer in die Welt von InfluxDB eintauchen:
- Flux erweitern: Experimentieren Sie mit komplexeren Flux-Abfragen und -Funktionen, um Ihre Daten zu transformieren und aggregieren.
- Integration mit Grafana: Verbinden Sie InfluxDB mit Grafana, einem führenden Tool zur Datenvisualisierung, um beeindruckende Dashboards zu erstellen.
- Client-Bibliotheken nutzen: Verwenden Sie die offiziellen Client-Bibliotheken (für Python, Go, Node.js, Java und mehr), um Daten aus Ihren Anwendungen direkt in InfluxDB zu schreiben und abzufragen.
- Telegraf: Erkunden Sie Telegraf, den Agenten von InfluxData, um Metriken von Servern, Systemen und IoT-Geräten automatisch zu sammeln und an InfluxDB zu senden.
Die Beherrschung von InfluxDB wird Ihnen helfen, die Kontrolle über Ihre Zeitreihendaten zu übernehmen und datengesteuerte Entscheidungen zu treffen. Viel Erfolg bei Ihren Projekten!