InfluxDB - Aufbewahrung der Daten managen

Wenn eine Datenbank in Influx erstellt wird gibt es eine default RETENTION POLICY (Aufbewahrungsrichtlinie) mit den Namen "autogen" die DURATION ist dort auf Unendlich und die shardGroupDuration auf 7 Tage konfiguriert . Dies kann man auch bei der Erstellung einer Datenbank mitgeben (allerdings darf man das nicht vergessen ;-)) DATABASE MANAGMENT
>SHOW RETENTION POLICIES
name              duration  shardGroupDuration replicaN default
----              --------  ------------------ -------- -------
autogen           0s        168h0m0s           1        true
lässt man eine größere Umgebung mit diesen default Werten monitoren ist die Datenbank recht schnell voll und wächst und wächst .......

Um realistische Aufbewahrungsfristen zu realisieren kann man eine neue Policy schreiben, es kommt natürlich immer auf den jeweiligen Anwendungsfall an !
CREATE RETENTION POLICY "twelve_weeks_only" ON "collectd" DURATION 12w SHARD DURATION 1d DEFAULT
nun sieht die Retention Policy schon anders aus
>SHOW RETENTION POLICIES
name              duration  shardGroupDuration replicaN default
----              --------  ------------------ -------- -------
autogen           0s        168h0m0s           1        false
twelve_weeks_only 2016h0m0s 24h0m0s            2        true
die Werte müssen natürlich je nach Anwendungsfall angepasst werden.

Zur Erklärung :

Erstellt eine neue RETENTION POLICY in der Datenbank collectd mit den Namen twelve_weeks_only
CREATE RETENTION POLICY "twelve_weeks_only" ON "collectd"
Die Aufbewahrungsfrist der Daten beträgt hier 12 Wochen -> Duration units
DURATION 12w
In einer einzelnen Shard-Group können mehrere Shards vorhanden sein. Jeder Shard enthält eine bestimmte Reihe von Serien. Alle Punkte, die auf eine bestimmte Serie in einer bestimmten Shard-Gruppe fallen, werden im selben Shard (TSM-Datei) auf der Festplatte gespeichert.(auszug InfluxDB Doku)
SHARD / SHARD Groups / SHARD Duration
SHARD DURATION 1d
Setzt die neue Policy als DEFAULT für die Datenbank collectd
DEFAULT
Um mir wieder Platz zu schaffen habe ich danach die Policy "autogen" aus der InfluxDB gelöscht
DROP RETENTION POLICY "autogen" ON "collectd"

Nach der Erstellung der neuen RETENTION POLICY begann die Aufzeichnung der Messwerte wieder bei Null, sollte das nicht gewünscht werden kann man auch die RETENTION POLICY ändern. Der Weg ist aber ungetestet !!
ALTER RETENTION POLICY "autogen" ON "collectd" DURATION 12w SHARD DURATION 7d DEFAULT

InfluxDB absichern & Standardbefehle

erstmal was ist Influx db eigentlich : Influxdb

Um eine InfluxDB absichern zu können muss als erstes ein Benutzer mit Admin Rechten angelegt werden, BEVOR man Auth aktiviert.

Anlegen eines Admin Users :
CREATE USER admin WITH PASSWORD 'SECUREPASSWORD' WITH ALL PRIVILEGES
Überprüfen / Anzeigen der User geht mit dem Befehl :
SHOW USERS
bzw für die Rechte
SHOW GRANTS FOR admin

Jetzt muss die Authentifizierung aktiviert werden. Dazu muss die Konfiguration unter /etc/influx/influx.conf angepasst werden.
Hier mal der entscheidende Block (Ohne Kommentare)
[http]
   enabled = true
   bind-address = ":8086"
   auth-enabled = true
   access-log-path = "/var/log/influxdb/access.log"
   write-tracing = false
   pprof-enabled = false
   https-enabled = false
   https-certificate = "/etc/ssl/influxdb.pem"

Ab jetzt könnt ihr euch mit dem folgenden Befehl verbinden
influx -username admin -password SECUREPASSWORD -database DATABASENAME
was auch funktioniert ist mit dem Befehl
influx
die cli starten und dann mit dem Befehl
auth
die Authentifizierung einleiten.


Weitere Standardbefehle

InfluxDB Datenbanken anzeigen :
SHOW DATABASES
InfluxDB Datenbank anlegen :
CREATE DATABASE "DATABASENAME"
InfluxDB User anlegen :
CREATE USER dev WITH PASSWORD 'SECUREPASSWORD'
InfluxDB Rechte vergeben auf Datenbank :
GRANT (READ,WRITE,ALL) ON DATABASENAME TO dev

Quelle : InfluxDB 1.5 documentation


Debian 9 : Installation - InfluxDB / Grafana und collectd

Eine kleiner Monitoring Umgebung mit InfluxDB / Grafana und collectd aufzubauen ist recht einfach. Man benötigt dazu eine Datenbank und ein Werkzeug das die Daten anzeigt, Grafana ist hier ganz schick.

Meiner Meinung nach ist Grafana nur dazu geeignet Metriken der laufenden Systeme anzuzeigen. Wer ein funktionales (notifications/business intelligence/usw...) Monitoring benötigt ist bei check_mk besser aufgehoben.
Ich möchte hier aber nur die Metriken anzeigen damit unsere Kunden einen Überblick über die Systeme haben.

Das Beispiel hier ist auf Debian 9 entstanden. Für mich haben sich folgende Pakete für das tägliche arbeiten bewährt.
Zu allererst werden wir root um die Packete zu installieren.
su - root
apt install ccze htop vim mc wget curl w3m screen net-tools -y
dann installieren wir collectd, dieser sammelt die Informationen auf dem System ein und schreibt diese in die InfluxDB, das kann mit dem Befehl
apt install collectd
erledigt werden. Keinen Schreck bekommen das bringt einiges an Abhängigkeiten mit. Bei mir waren das ca. 280MB
Jetzt muß man collectd natürlich konfigurieren.
vi /etc/collectd/collectd.conf
Hier ist jetzt natürlich nur eine kleine Grundkonfiguration es gibt einige collectd-plugins die man aktivieren kann.
Hier meine kleine Beispielkonfiguration :
FQDNLookup  true
BaseDir     "/var/lib/collectd"
PIDFile     "/var/run/collectd.pid"
PluginDir   "/usr/lib/collectd"
TypesDB     "/usr/share/collectd/types.db"
LoadPlugin  syslog
LoadPlugin cpu
LoadPlugin df
LoadPlugin  interface
LoadPlugin  load
LoadPlugin memory
LoadPlugin  network

<Plugin cpu>
        ReportByCpu true
        ReportByState true
        ValuesPercentage false
</Plugin>

<Plugin df>
#       Device "/dev/sda1"
#       Device "192.168.0.2:/mnt/nfs"
#       MountPoint "/home"
#       FSType "ext3"

        # ignore rootfs; else, the root file-system would appear twice, causing
        # one of the updates to fail and spam the log
        FSType rootfs
        # ignore the usual virtual / temporary file-systems
        FSType sysfs
        FSType proc
        FSType devtmpfs
        FSType devpts
        FSType tmpfs
        FSType fusectl
        FSType cgroup
        IgnoreSelected true

#       ReportByDevice false
#       ReportInodes false

#       ValuesAbsolute true
#       ValuesPercentage false
</Plugin>

<Plugin interface>
        Interface "enp0s3"
        # hier muss natürlich der Interface Name 
        # eurer Netzwerkkarte rein
        IgnoreSelected false
        ReportInactive true
        UniqueName false
</Plugin>

<Plugin load>
        ReportRelative true
</Plugin>

<Plugin memory>
        ValuesAbsolute true
        ValuesPercentage false
</Plugin>

<Plugin load>
    ReportRelative true
</Plugin>

<Plugin network>
    Server "192.168.2.180" "25251"
    # um die Konfiguration dann auf alle Server 
    # im Netz kopieren zu können gebe ich 
    # hier immer die wirklich IP an
</Plugin>
jetzt stellen wir sicher das collectd aktiviert ist und starten es neu
systemctl enable collectd.service
systemctl restart collectd.service

Jetzt laden wir das Paket für die InfluxDB herunter und installieren es.
wget https://dl.influxdata.com/influxdb/releases/influxdb_1.4.3_amd64.deb && dpkg -i influxdb_1.4.3_amd64.deb
Install InfluxDB
Install InfluxDB

Jetzt kommt die Konfiguration
vi /etc/influxdb/influxdb.conf
jetzt passen wir die Werte für den collectd deamon an. Hier wieder meine Beispiel Konfiguration , sucht den Bereich collectd und setzt diese Werte
[[collectd]]
   enabled = true
   bind-address = ":25251"
   database = "collectd"
  # retention-policy = ""
  #
  # The collectd service supports either scanning a directory for multiple types
  # db files, or specifying a single db file.
   typesdb = "/usr/share/collectd/types.db"
dann stellen wir wieder sicher das influxdb automatisch startet und machen einen neustart
systemctl enable influxdb.service
systemctl restart influxdb
Jetzt kann man schonmal testen ob Daten rein kommen.
Influx DB
Influx DB

Wenn es so aussieht bei euch wie auf meinem Screenshot ist alles richtig.

Jetzt fehlt nur noch Grafana das installieren wir mir dem Befehl :
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_4.6.3_amd64.deb && dpkg -i grafana_4.6.3_amd64.deb
dann stellen wir wieder sicher das grafana automatisch startet.
systemctl enable grafana-server.service
systemctl start grafana-server.service
Grafana systemctl
Jetzt können wir uns in Grafana anmelden (admin/admin) dazu öffnen wir die Adresse im webbrowser http://192.168.2.180:3000.
Direkt nach dem anmelden klicken wir auf add datasource grafana und fügen unsere Datenquelle hinzu. Die Einstellungen entnehmt bitte dem Screenshot.data source influxdb
Hier mal zur Erinnerung diese Anleitung dient nur zum spielen in einer produktiven Umgebung muss natürlich mehr Wert auf Sicherheit genommen werden

Jetzt könnt ihr loslegen und euer erstes Dashboard zusammen bauen. Das mach ich in einem anderen Artikel.

“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)