5207gelesen 0Kommentare
Mit InfluxDB hast du ein Tool an deiner Seite, das auf Verarbeitung von Daten in Zeitserien optimiert ist. Daher reiht es sich in die Datenbankmanagement-Systeme ein, wie Prometheus, Graphite und RRDtool. Ich verwende es aktuell unter anderem für die Datenspeicherung und Visualisierung von Daten aus sensu. Ich möchte dir in diesem Artikel zeigen, wie du ein InfluxDB installieren und konfigurieren kannst. Die Datenbank-Software ist ursprünglich im Jahr 2013 erschienen und wird seither kontinuierlich weiterentwickelt.
Installation
Kleine Anmerkung: Wie die meisten Installationen bisher, basiert diese ebenfalls auf Debian-basiertem Linux.
Zuerst fügst du das Repository von influxdata.com zu deinem System hinzu.
user@system: wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add - OK user@system: source /etc/lsb-release user@system: echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | tee -a /etc/apt/sources.list deb https://repos.influxdata.com/ubuntu bionic stable user@system: sudo apt update
Anschließend kannst du InfluxDB installieren:
user@system: sudo apt install influxdb influxdb-client Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: influxdb 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 63.4 MB of archives. After this operation, 172 MB of additional disk space will be used. Get:1 https://repos.influxdata.com/ubuntu bionic/stable amd64 influxdb amd64 1.8.0-1 [63.4 MB] Fetched 63.4 MB in 1s (60.8 MB/s) Selecting previously unselected package influxdb. (Reading database ... 62438 files and directories currently installed.) Preparing to unpack .../influxdb_1.8.0-1_amd64.deb ... Unpacking influxdb (1.8.0-1) ... Setting up influxdb (1.8.0-1) ... Created symlink /etc/systemd/system/influxd.service → /lib/systemd/system/influxdb.service. Created symlink /etc/systemd/system/multi-user.target.wants/influxdb.service → /lib/systemd/system/influxdb.service. Processing triggers for man-db (2.8.3-2ubuntu0.1) ... user@system:
Und schon ist influx installiert. Als Nächstes wird der Daemon aktiviert, dem Autostart hinzugefügt und gestartet:
user@system: sudo systemctl unmask influxdb user@system: sudo systemctl enable influxdb user@system: sudo systemctl start influxdb user@system: sudo systemctl status influxdb ● influxdb.service - InfluxDB is an open-source, distributed, time series database Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-05-10 16:26:29 CEST; 1s ago Docs: https://docs.influxdata.com/influxdb/ Main PID: 5809 (influxd) Tasks: 8 (limit: 2298) CGroup: /system.slice/influxdb.service └─5809 /usr/bin/influxd -config /etc/influxdb/influxdb.conf user@system:
Damit ist der Teil Installation abgeschlossen.
Konfiguration
Authentifizierung einschalten
Zuerst erstellst du einen Datenbank-Administrator mit Passwort:
user@system: influx Connected to http://localhost:8086 version 1.8.0 InfluxDB shell version: 1.8.0 > CREATE USER "admin" WITH PASSWORD '<EIN PASSWORT>' WITH ALL PRIVILEGES > exit
Jetzt muss die Authentifizierung auch in der Konfigurationsdatei aktiviert und der Service influxdb neugestartet werden:
user@system: vi /etc/influxdb/influxdb.conf ... [http] ... # Determines whether user authentication is enabled over HTTP/HTTPS. # auth-enabled = false auth-enabled = true ... user@system: systemctl restart influxdb
Kurzer Test (ohne Login-Daten):
user@system: influx Connected to http://localhost:8086 version 1.8.0 InfluxDB shell version: 1.8.0 > show users; ERR: unable to parse authentication credentials Warning: It is possible this error is due to not setting a database. Please set a database with the command "use <database>". > user@system:
Kurzer Test (mit Login-Daten):
user@system: influx -username admin -password <EIN PASSWORT> Connected to http://localhost:8086 version 1.8.0 InfluxDB shell version: 1.8.0 > show users; user admin ---- ----- sensu false admin true >
Weitere Benutzer und Datenbanken erstellen
Wie bereits oben beschrieben, verwende ich influx auch für sensu. Deshalb als Beispiel die Daten für sensu:
user@system: influx Connected to http://localhost:8086 version 1.8.0 InfluxDB shell version: 1.8.0 > CREATE DATABASE "sensu" > CREATE USER "sensu" WITH PASSWORD '<EIN PASSWORT>' > GRANT ALL ON "sensu" to "sensu" > exit
Mit den oberen Zeilen haben wir:
- Eine Datenbank angelegt (“sensu”)
- Einen Benutzer angelegt (“sensu”) und mit einem Passwort versehen (<EIN PASSWORT> mit einem Passwort tauschen)
Beachte: Beim Passwort eine Anführungszeichen zu verwenden - Der Benutzer “sensu” hat alle Berechtigungen auf die Datenbank “sensu” bekommen
Weitere Konfiguration
Zur oben genannten Konfiguration kannst du in der Datei /etc/influxdb/influxdb.conf
noch weitere Änderungen vornehmen.
Bind von Adresse und Port
Standardmäßig hört influxdb auf jede Anfrage über das Netzwerk auf dem TCP-Port 8086.
# The bind address used by the HTTP service. # bind-address = ":8086" bind-address = "127.0.0.1:8086"
Kleine Anmerkung: Wichtig ist, dass du diese Einstellung im [http]
Bereich der Konfiguration vornimmst, denn diese Eigenschaft gibt es auch in weiteren Bereichen.
Verschlüsselung der HTTP-Verbindung
Der Datenstrom von InfluxDB läuft über HTTP – somit ist es sinnvoll, diesen via SSL zu verschlüsseln. Dazu sind wenige Einstellungen notwendig:
# Determines whether HTTPS is enabled. # https-enabled = false https-enabled = true # The SSL certificate to use when HTTPS is enabled. # https-certificate = "/etc/ssl/influxdb.pem" https-certificate = "/etc/ssl/[xxx].crt" # Use a separate private key location. # https-private-key = "" https-private-key = "/etc/ssl/[xxx].key"
Protokollierung einschalten
Via dem nachfolgenden Parameter kannst du in der Konfiguration die Protokollierung einschalten:
# Determines whether HTTP request logging is enabled. # log-enabled = true log-enabled = true
pprof – Visualisierung und Analyse von Test-Daten
Für den Export von pprof-Daten sind mehrere Zeilen notwendig:
# Determines whether the pprof endpoint is enabled. This endpoint is used for # troubleshooting and monitoring. # pprof-enabled = true pprof-enabled = true # Enables authentication on pprof endpoints. Users will need admin permissions # to access the pprof endpoints when this setting is enabled. This setting has # no effect if either auth-enabled or pprof-enabled are set to false. # pprof-auth-enabled = false pprof-auth-enabled = true # Enables a pprof endpoint that binds to localhost:6060 immediately on startup. # This is only needed to debug startup issues. # debug-pprof-enabled = false # Enables authentication on the /ping, /metrics, and deprecated /status # endpoints. This setting has no effect if auth-enabled is set to false. # ping-auth-enabled = false ping-auth-enabled = true
Noch einige Quellen zu influxDB
Ich habe hier noch ein paar Quellen, in die du dich einlesen kannst:
- Github Repository von InfluxDB: GitHub.com/influxdata/influxdb
- Dokumentation zu InfluxDB Version 1.x
Foto von Tudor Panait auf Unsplash.com