InfluxDB 0.9 auf dem Raspberry Pi installieren

Die Zeitreihendatenbank InfluxDB lässt sich in der Version 0.9 relativ einfach auf dem Raspberry Pi installieren. Als Basis der folgenden Beschreibung dient Raspbian in der aktuellen Fassung.

InfluxDB ist in der Programmiersprache Go implementiert. Seit der Version 0.9 werden zur Kompilierung keine weiteren C- oder C++-Tools mehr benötigt. Zwar werden fertig installierbare Pakete für Debian/Ubuntu und RedHat bzw. CentOS bereit gestellt, jedoch bislang nicht für die ARM-Architektur des Raspberry Pi. Hinweise zur Kompilierung finden sich in der Datei CONTRIBUTING.md.

Update – mehr als ein Jahr später

Mit der Zeit gibt es neue Entwicklungen, neue Versionen, und für Raspbian inzwischen offizielle Binaries vom Unternehmen „hinter“ InfluxDB, InfluxData. Zu finden im Download-Bereich stellt dies sicherlich mittlerweile die einfachste und adäquate Methode dar, InfluxDB unter Raspbian zu installieren. Wer trotzdem die Schritte manuell gehen möchte oder einfach nur neugierig ist, ist dennoch herzlich eingeladen, den folgenden Artikel zu lesen. Daher belasse ich die hier vorgestellten Schritte, Versionsnummern etc. auch in den ursprünglichen Fassungen. 

Vorbereitungen – Installation von Go 1.4

Zunächst muss Go in der benötigten Version installiert werden. Leider war nach der üblichen Installation (sudo apt-get install golang) nur Version 1.0.2 verfügbar:

Daher musste zunächst Go in der von InfluxDB 0.9 verlangten Version 1.4 installiert werden. Dafür existiert wiederum GVM (Go Version Manager). GVM wird wie folgt installiert:

Zur Bestätigung wurde folgendes ausgegeben:

Zum Einlesen der Umgebungsvariablen wurde die zuletzt genannte Zeile ausgeführt:

Beim ersten Start wurde angemerkt, dass der Parser-Generator ‚bison‘ fehlen würde. In einem der nächsten Schritte wurde zusätzlich die Versionsverwaltung Mercurial verlangt. Der Einfachheit halber wird zunächst beides installiert:

Möglicherweise sind weitere Tools notwendig, bei meiner Installation genügte jedoch dies, um gvm zum Funktionieren zu überreden.

Danach kann Go in der benötigten Version installiert und als Standard gesetzt werden:

InfluxDB kompilieren

In der Datei CONTRIBUTING.md wird explizit beschrieben, wie InfluxDB kompiliert werden kann. Da ich bislang nicht mit Go in Kontakt gekommen bin, ist die dort beschriebene Verzeichnis- bzw. Projekt-Struktur zumindest ungewöhnlich – die Kompilierung funktionierte jedoch auf Anhieb. Dafür werden zunächst das Projektverzeichnis angelegt, die Umgebungsvariable eingerichtet und die Quelltexte aus dem Repository kopiert:

Danach erfolgt der Build-Vorgang mit:

Hier heißt es nun, einige Minuten zu warten, bis die Kompilierung abgeschlossen ist. Zum Testen kann folgendes Kommando aufgerufen werden:

Nach etlichen Ausgaben wird einem der Erfolg oder Misserfolg bescheinigt. Ein Test der Datenbanken kann stattfinden mittels:

Auch danach wird einem das Ergebnis mitgeteilt. Danach befinden sich übrigens diverse Testdaten im /tmp-Verzeichnis. Diese können bedenkenlos gelöscht werden.

Der Build-Prozess sollte einige Dateien erzeugt haben, die im Verzeichnis „~/gocodez/bin“ liegen. Zur Kontrolle:

Bis dahin war der Build-Prozess insofern erfolgreich. Im Folgenden werden die Schritte bis hin zu einer lauffähigen Konfiguration inkl. Einbindung in den Boot-Prozess beschrieben. Diese umfassen z.B. das Anlegen eines speziellen Users, das Anlegen der Verzeichnisse für die Binaries usw.. Normalerweise übernimmt dies das jeweilige Paket-System. Zur Installation wurde darauf geachtet, möglichst nah an der Struktur und Einrichtung des InfluxDB-Paketes für Ubuntu bzw. Debian zu bleiben. Zwar ist dessen Verzeichnisstruktur auch eher ungewöhnlich, jedoch erschien es mir der Einheitlichkeit und Vergleichbarkeit her als sinnvoll, sich daran zu orientieren.

InfluxDB installieren

Zunächst werden die benötigten Verzeichnisse angelegt. Die Versionsnummer schlägt sich in der Benennung der Verzeichnisse nieder. Durch eine Änderung der Symlinks kann leicht auf eine neuere Version gewechselt werden – vermutlich war das der Hintergedanke bei der Erstellung der offiziellen Pakete für Debian bzw. Ubuntu.

Das Start-Stop-Skript namens init.sh und die Config-Datei influxdb.conf hatte ich aus einem InfluxDB-Paket zunächst auf den Raspberry Pi ins Home-Verzeichnis des Users pi kopiert. Von dort werden beide Dateien an die vorgesehenen Stellen kopiert.

Danach werden der User und die Gruppe influxdb angelegt, der InfluxDB-Daemon soll unter diesen User- bzw. Gruppenkennungen laufen, die Rechte werden entsprechend vergeben:

Danach werden die Symlinks gesetzt, so dass die InfluxDB-Binaries letztlich unter /opt/influxdb/ erreichbar sind und das Init-Skript unter /etc/init.d/influxdb:

Standardmässig werden die Daten im /tmp-Verzeichnis abgelegt. Um dies zu ändern, ist eine Anpassung in der influxdb.conf Datei notwendig. Die Änderungen wie folgt:

Weitere Änderungen wurden nicht durchgeführt, die Config-Datei ist jedoch leicht lesbar und nahezu selbsterklärend. Achtung – per Default wird der InfluxDB-Server auf allen IP-Adressen gestartet und ist somit nicht nur von localhost aus erreichbar. In sicherheitskritischen Umgebungen sollte die entsprechende Konfigurationsoption angepasst werden!

Danach wurden die neuen Verzeichnisse angelegt und die Rechte vergeben:

Eigentlich wäre InfluxDB nun so weit gewesen, aber zunächst war der Aufruf des Start-Skriptes nicht erfolgreich. Das PID-File konnte aufgrund fehlender Rechte bzw. des nicht vorhandenen Verzeichnisses nicht angelegt werden. Insofern hat sich InfluxDB nach dem Start gleich wieder beendet. Da mir der Speicherort nicht zusagte, bzw. ich mich mehr an den Standard halten wollte, hielt ich es für eine gute Idee, das pid-File in /var/run/influxdb/ zu platzieren. Nun ist /var/run bzw. /run ein Verzeichnis, was beim Starten neu angelegt wird, dementsprechend verschwinden ggf. angelegte Verzeichnisse nach dem Reboot auch wieder… Die Lösung bestand in der Anpassung des init.sh-Skriptes, was nun analog zu anderen Start-Stop-Skripten dafür sorgt, dass das entsprechende Verzeichnis angelegt wird.

Insgesamt sieht das init.sh-Skript nun wie folgt aus:

 

Danach konnte endlich der InfluxDB-Daemon erfolgreich gestartet werden:

Das Web-Interface befindet sich unter der URL http://<ip-des-raspberry-pi>:8083

Um InfluxDB in den Bootprozess zu bringen, wird noch update-rc.d ausgeführt:

Das war es auch schon! Zwar ist der hier beschriebene Weg der Installation durchaus als umfangreich zu bezeichnen, und sicherlich gibt es auch andere Möglichkeiten, z.B. ohne Symlinks, per Kopie in /usr/local/bin oder ähnliches. Das sei jedem selbst überlassen, mir erschien es hingegen sinnvoll, sich an der Struktur der offiziellen Pakete zu orientieren. Das wäre prinzipiell auch der nächste Schritt, d.h. das Bereitstellen eines Raspbian-Paketes. Momentan bin ich dazu jedoch eher weniger motiviert. 😉

Der nächste Beitrag zu InfluxDB wird sich mit der Sammlung bzw. Speicherung von Bewegungsdaten eines PIR-Sensors beschäftigen.

 

 

Ähnliche Beiträge

Tags:

8 Gedanken zu „InfluxDB 0.9 auf dem Raspberry Pi installieren“

  1. Servus Ralf,
    herzlichen Dank für die tolle Anleitung.

    Ich zögere noch ein wenig vor dem Aufwand (mit der Installation ist ja nur der erste Schritt getan…), aber habe ähnliches vor um meine Openhab Installation auf dem Pi sauber reportbar und auswertbar zu machen.

    Hast Du bereits Erfahrungen mit der Performance sammeln können? Hab schon gelesen dass sich der Pi 1 ein wenig schwer tut und überlege vor der ganzen action auf den 2er bzw. Alternativen zu wechseln.

  2. Hallo Chris!

    Vielen Dank für Dein Feedback! Momentan läuft die Installation bei mir auf einem Raspberry Pi 2 – das funktioniert recht gut. Leider habe ich keine Erfahrungswerte über einen längeren Zeitraum hinweg, zwar wurden Event-Daten des Bewegungsmelders über die letzten Wochen erfasst, allerdings hat ein Stromausfall das Ganze zunichte gemacht – es ist mir nicht gelungen, die Daten wiederherzustellen, InfluxDB hat sich hier etwas, sagen wir mal „unkooperativ“ (und unerwartet) verhalten.
    Eine Abfrage wie

    dauert – vom Web-Interface aus gemessen – ca. 150ms, was für meine Zwecke vollkommen ausreichend ist.

    Parallel zu OpenHAB auf dem ersten Raspi-Modell könnte vielleicht der Speicher etwas knapp werden – der OSGi-Stack bzw. die JVM schlucken ja schon einiges.

  3. Hallo! Werde die Anleitung in Kürze austesten, vielen Dank dafür! Habe seit Februar 2015 influxdb 0.8.6 auf einem Olinuxino A20 im Einsatz, vor kurzem ist mir aufgefallen, dass 100% CPU-Last nur für den influxdb-Prozess draufgeht (ich hab zwar noch einen zweiten Kern, aber dennoch…). Daher wollte ich mal ein Update ausprobieren. Fertige Pakete sind für ARM ja leider nicht zu bekommen, aber die Grafana-Auswertungen sind einfach zu schön, als dass ich drauf verzichten wollte. Ich speichere etwa 5-20 Datenpukte pro Minute, also nicht wirklich viel. Ich hoffe, dass die Datenbank irgendwie zur 0.9.x herüber gerettet werden kann.

  4. Danke für die Anleitung! Hat mir sehr geholfen. Die Konfigurationseinstellungen haben sich seit dem 9.0 release geändert, evtl. kannst Du die Anleitung ja für die Release Version updaten.

    Ich habe Influxdb auf Raspbian Jessie installiert, das systemd statt init-Skripte benutzt und habe deshalb statt init.sh das service-skript aus scripts/influxdb.service entsprechend modifiziert.

    Damit ich den ganzen Tanz nicht von vorne machen muss, wenn ich von meinem Model B auf etwas besseres migriere, habe ich die Installation mit einem Ansible Playbook geskripted: https://github.com/gbirke/openhab-ansible-setup/blob/master/tasks/install_influxdb_raspbian.yml

    1. Hallo Gabriel!

      Vielen Dank für Dein Feedback und Deine Hinweise, tatsächlich habe ich die Version länger nicht angefasst, seit Installation läuft InfluxDB einfach vor sich hin und sammelt munter Daten. 😉 Dein Playbook werde ich gerne mal ausprobieren!

      Beste Gruesse,
      Ralf

  5. Hallo Ralf

    Danke für die gute Anleitung. Es ist zwar schon ein halbes Jahr her aber dein Post schafft es immer noch auf die Top 3 meiner Websuche, Kompliment! Falls das noch jemand versucht:

    Mittlerweile gibt es von Influxdata fertig kompilierte Packages für armhf, im Moment hier:
    https://influxdata.com/downloads/#influxdb

    Gruss Florian

    1. Hallo Florian!

      Vielen Dank für Deinen Hinweis, ich muss zugeben, hier absolut nicht mehr auf dem aktuellen Stand zu sein, und bald wird der Artikel auch nur noch historischen Wert haben. 😉

      Beste Gruesse,
      Ralf

  6. Hi Ralf,
    danke für die tolle Anleitung. Leider habe ich ganz oben angefangen und enormes Yak-Shaving betreiben müssen, bis die Installation fertig war… nur um dann ganz unten zu sehen, dass es mittlerweile fertige ARM-Binaries gibt 😉 *facepalm*

    Schreib doch bitte oben noch ein kleines Update rein, damit anderen Leuten die Mühe wenigstens erspart bleibt 😉

    Danke und Gruß, Leo

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.