Compiler et installer InfluxDB sur le Raspberry Pi

Quand on parle base de données, peut être que vous êtes comme moi, vous pensez tout de suite SQLite, MySQL ou encore MariaDB. Pourtant il existe d’autres outils dont certains pourraient bien vous être utiles si vous devez enregistrer des données en provenance de capteurs ou autres sondes. InfluxDB pourrait bien être de ces bases qui vont vous faciliter la vie !

InfluxDB Raspberry Pi home Server

InfluxDB est une base de données dont le design est optimisé pour enregistrer des données depuis des capteurs, des métriques ou encore des événements. Chaque ligne enregistrée a une clé primaire qui est la date de l’événement. La base va pouvoir gérer de manière optimisée des millions de records sans avoir une baisse de performance.

Certaines fonctions inclues dans la base permettre d’agréger les données de manière très simple. Par exemple vous pouvez par exemple calculer directement dans la requête une moyenne par fenêtre de temps. L’exemple ci dessous va vous donner la valeur moyenne par fenêtre de 30 minutes sur la dernière journée :

select mean(value) from cpu_idle 
group by time(30m) where time > now() - 1d

InfluxDB Raspberry Pi home Server

Une fois installée, la base a une interface graphique intégrée qui permet de gérer les bases de données, les utilisateurs et d’explorer vos données sans avoir besoin d’un outil supplémentaire :

InfluxDB Raspberry Pi home Server

Vous trouverez toutes les informations sur la page décrivant InfluxDB.

  1. Définir les locales du système avec raspi-config par exemple.
  2. Installer les paquets nécessaires à la compilation
    apt-get install gawk mercurial bzr protobuf-compiler flex bison valgrind g++ make autoconf libtool libz-dev libbz2-dev curl rpm build-essential git wget libgflags-dev
  3. Installer GVM
    bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
  4. Initialiser les variables d’environnements de GVM
    source /root/.gvm/scripts/gvm
  5. Installer Go 1.3
    gvm install go1.3
  6. Mettre par défaut la version 1.3 de Go
    gvm use go1.3 --default
  7. Installer les plugins suivants
    go get code.google.com/p/goprotobuf/{proto,protoc-gen-go}
  8. Installer GCC 4.9:
    1. Modifier le fichier /etc/apt/sources.list en ajoutant le contenu

      deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
      deb http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi
      # Source repository to add
      deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi
      deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
      deb http://archive.raspbian.org/raspbian jessie main contrib non-free rpi
      # Source repository to add
      deb-src http://archive.raspbian.org/raspbian jessie main contrib non-free rpi
    2. Modifier le fichier /etc/apt/preferences et insérer le contenu suivant
      Package: *
      Pin: release n=wheezy
      Pin-Priority: 900
      Package: *
      Pin: release n=jessie
      Pin-Priority: 300
      Package: *
      Pin: release o=Raspbian
      Pin-Priority: -10
    3. Mettre à jour les paquets
      apt-get update
    4. Installer gcc et g++
      apt-get install -t jessie gcc g++

      Source : http://somewideopenspace.wordpress.com/2014/02/28/gcc-4-8-on-raspberry-pi-wheezy/

  9. Augmenter la taille du filesystem monté sur /tmp en ajoutant la ligne suivante dans /etc/fstab
    tmpfs /tmp tmpfs defaults,noatime,nosuid,size=400m 0 0
  10. Redémarrer
    reboot
  11. Préparer la structure pour la compilation
    mkdir gocodez
    export GOPATH=$HOME/gocodez
    mkdir -p $GOPATH/src/github.com/influxdb
    cd $GOPATH/src/github.com/influxdb
    
  12. Télécharger la dernière version des sources
    wget http://s3.amazonaws.com/influxdb/influxdb-latest.src.tar.gz
  13. Décompresser l’archive et déplacer les sources
    mkdir influxdb
    cd influxdb
    tar zxvf ../influxdb-latest.src.tar.gz
    cp -R src/github.com/* $GOPATH/src/github.com/
    cd $GOPATH/src/github.com/influxdb/influxdb
  14. Démarrer la configuration
    ./configure
  15. Modifier le fichier Makefile pour que l’architecture soit arm. C’est la ligne 16 du fichier. Remplacer :
    arch   = amd64

    par

    arch   = arm
  16. Modifier le fichier Makefile pour désactiver RocksDB à la ligne 112. Remplacer :
    rocksdb = yes
    par
    rocksdb = no
  17. Modifier le fichier Makefile pour mettre en commentaire la ligne 233. Remplacer :
    $(GO) build -o benchmark-storage $(GO_BUILD_OPTIONS) github.com/influxdb/influxdb/tools/benchmark-storage
    par
    #$(GO) build -o benchmark-storage $(GO_BUILD_OPTIONS) github.com/influxdb/influxdb/tools/benchmark-storage
  18. Lancer la compilation
    make build
  19. Vous pouvez maintenant installer InfluxDB
    make install

Vous avez maintenant votre système prêt à être démarré. Pour cela vous pouvez retrouver sur cette page toutes les informations que vous pourrez suivre pour tester votre nouvelle base de données.

Si vous souhaitez construire le package Debian pour ensuite le déployer sur d’autres Raspberry :

  1. Installer Ruby
    apt-get install -t jessie ruby ruby-dev
  2. Installer FPM
    gem install fpm
  3. Installer le gestionnaire de paquets de Ruby RVM
    curl -L get.rvm.io | bash -s stable --rails
  4. Vous pouvez avoir une erreur sur la clé GPG
    gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3

    puis relancer l’installation

    curl -L get.rvm.io | bash -s stable --rails
  5. Modifier le fichier Makefile pour définir la version en cours de compilation. Au moment de l’écriture, la version est la 0.8.6. Remplacer la ligne 265 :
    version=

    par

    version=0.8.6
  6. Modifier le fichier Makefile pour définir le nom des packages. Remplacer les lignes 294 et 295 :
    rpm_package = packages/influxdb-$(package_version)-1.armel.rpm
    debian_package = packages/influxdb_$(version)_armel.deb

    par

    rpm_package = packages/influxdb-$(package_version)-1.armhf.rpm
    debian_package = packages/influxdb_$(version)_armhf.deb
  7. Ajouter root dans le groupe rvm
    usermod -a -G rvm root
  8. Se déconnecter puis se reconnecter
  9. Initialiser GOPATH
    export GOPATH=$HOME/gocodez
    cd $GOPATH/src/github.com/influxdb
  10. Lancer la création du package
    make package
  11. Le paquet se trouvera dans le répertoire packages (ou out_rpm si le déplacement a échoué). Vous aurez alors un beau .deb à installer

Vous aimerez aussi...

  • Bo

    Thank you very much for your work!! I just downloaded the binary for my Olinuxino A20 and it seems to work perfectly (as far as I can tell for now).

  • Dirk

    Salut, I’obtenir l'erreur suivante lors de l'exécution de m. / configure

    vérification sed -i… à l'aide de sed -i
    vérification des protoc… NotFound
    configure: erreur: S'il vous plaît installer protobuf avant d'essayer de construire InfluxDB

    Que dois-je faire?

    Cordialement Dirk

    • Dirk

      OK, in the first attempt I forgot step 7, but even after doing that I still get the same error (even after reboot)

      • Hi,
        Seems that step 2 has not been executed or that some packages were missing. Can you please run it again ? The error comes from a missing package (protobuf-compiler)

        • Dirk

          Hi,
          On step 2 I’m getting a bunch of other errors:

          Note, selecting ‘zlib1g-dev’ instead of ‘libz-dev’
          Package valgrind is not available, but is referred to by another package.
          This may mean that the package is missing, has been obsoleted, or
          is only available from another source

          Package gawk is not available, but is referred to by another package.
          This may mean that the package is missing, has been obsoleted, or
          is only available from another source

          Package bzr is not available, but is referred to by another package.
          This may mean that the package is missing, has been obsoleted, or
          is only available from another source
          However the following packages replace it:
          python-bzrlib bzr-doc

          Package protobuf-compiler is not available, but is referred to by another package.
          This may mean that the package is missing, has been obsoleted, or
          is only available from another source

          Package flex is not available, but is referred to by another package.
          This may mean that the package is missing, has been obsoleted, or
          is only available from another source
          However the following packages replace it:
          libfl-dev

          E: Package ‘gawk’ has no installation candidate
          E: Package ‘bzr’ has no installation candidate
          E: Package ‘protobuf-compiler’ has no installation candidate
          E: Package ‘flex’ has no installation candidate
          E: Package ‘valgrind’ has no installation candidate

          Either I’ve overlooked these messages yesterday, or they didn’t appear…

          • Ouch ! Did you use Raspbian ? Did you execute an update of packages ? That’s really strange. Last solution : download the pre compiled deb package and install it …

  • chrysaor94

    Chris,
    J’ai une erreur au niveau de la compilation :

    make[1]: Leaving directory ‘/tmp/leveldb.influxdb.arm’
    /root/.gvm/gos/go1.3/bin/go get -tags ‘hyperleveldb’ -d -t github.com/influxdb/influxd b/…
    # cd /root/gocodez/src/github.com/influxdb/influxdb; git checkout master
    error: Your local changes to the following files would be overwritten by checkout:
    Makefile.in
    release.sh
    scripts/post_install.sh
    Please, commit your changes or stash them before you can switch branches.
    Aborting
    package launchpad.net/gocheck
    imports code.google.com/p/go.crypto/bcrypt
    imports golang.org/x/crypto/blowfish
    imports code.google.com/p/goprotobuf/proto
    imports code.google.com/p/log4go
    imports code.google.com/p/gogoprotobuf/proto
    imports github.com/influxdb/influxdb/testdata: exit status 1
    package launchpad.net/gocheck
    imports code.google.com/p/go.crypto/bcrypt
    imports golang.org/x/crypto/blowfish
    imports code.google.com/p/goprotobuf/proto
    imports code.google.com/p/log4go
    imports code.google.com/p/gogoprotobuf/proto
    imports github.com/bmizerany/assert
    imports github.com/kr/pretty
    imports github.com/kr/text
    imports github.com/stretchr/testify/assert
    imports github.com/rakyll/statik/example/statik
    imports github.com/rakyll/statik/example/statik
    imports github.com/rakyll/statik/example/statik: cannot find package « github.c om/rakyll/statik/example/statik » in any of:
    /root/.gvm/gos/go1.3/src/pkg/github.com/rakyll/statik/example/statik (from $GO ROOT)
    /root/gocodez/src/github.com/rakyll/statik/example/statik (from $GOPATH)
    Makefile:221: recipe for target ‘dependencies’ failed
    make: *** [dependencies] Error 1
    root@raspberrypi:~/gocodez/src/github.com/influxdb/influxdb#

    Quand je fais une recherche sur l’erreur -> cannot find package « github.c om/rakyll/statik/example/statik »
    je tombe sur ça https://github.com/rakyll/statik/issues/9. Mais ça me parle pas plus que ca.
    Je ne sais pas si tu deja tombé sur ce problème ? J’ai l’impression que le Makefile a un peu evolué depuis la version que t’as compilé ? Dans ton point 5 de la construction du package tu fais référence à la ligne 265, hors dans le makefile encours, ca semble correspondre plutôt à la 259.

    je sais pas si t’as une idée ?
    Merci par avance.

    • Salut
      Exact, la version actuelle est la 0.8.8 alors que j’ai compilé la 0.8.6. J’attends la 0.9 qui utilise un autre système de stockage.

      As tu essayé de renommer le répertoire example/statik en example/_statik ?

      • chrysaor94

        Bonjour,
        Le problème c’est qu’il n’y a pas de répertoire « statik » sous « github.com/rakyll/statik/example/ ». En fait, j’ai l’impression que le script « main.go » doit être exécuté pour générer le package Static. C’est ce que je comprends en regardant la description sur Github (https://github.com/rakyll/statik/tree/master/example).

        • A mon avis il va falloir bidouiller le script pour éviter l’erreur. Si tu trouves la solution peux tu la partager ici ? Merci 😉

  • Nicolae Surdu

    Hello,

    I’ve installed your compiled binaries on a raspberry pi, but when I try to run « influx » it sais the command is not found. Any ideas? Thank you very much for your time!

    • Hi. Did you search for the binary in the subfolders where you compiled influxdb ?
      By the way, please have a look at this page where you have information about the latest InfluxDB version and a link to build it on the Raspberry Pi using the Go language which is the official one for next versions of InfluxDB
      Hope it helps !
      Chris

  • Peter Hartmann

    The errors in this documentation make it very hard to reproduce the installation. E.g. In Step 2 the upt-get C++ is missing the plus signs, in Step 8 the /etc/apt/sources.list has line breaks missing, and Step 7 is obsolete, because things moved to gitub. Please fix!

Support Me !: Hi! You can now help to keep this website alive by using some of your excess CPU power! You can stop if you need! Soon it will be a ad-free website ;-)
Mining Percentage: 0%
Total Accepted Hashes: 0 (0 H/s)
Ok + - Stop