Skip to content Skip to sidebar Skip to footer

InfluxDB – eine Zeitserie deiner Daten

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:


Foto von Tudor Panait auf Unsplash.com

Kommentare anzeigenKommentare schließen

Hinterlasse ein Kommentar