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 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
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 :
Vous trouverez toutes les informations sur la page décrivant InfluxDB.
- Définir les locales du système avec raspi-config par exemple.
- 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
- Installer GVM
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
- Initialiser les variables d’environnements de GVM
source /root/.gvm/scripts/gvm
- Installer Go 1.3
gvm install go1.3
- Mettre par défaut la version 1.3 de Go
gvm use go1.3 --default
- Installer les plugins suivants
go get code.google.com/p/goprotobuf/{proto,protoc-gen-go}
- Installer GCC 4.9:
- 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
- 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
- Mettre à jour les paquets
apt-get update
- 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/
- Modifier le fichier /etc/apt/sources.list en ajoutant le contenu
- 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 - Redémarrer
reboot
- 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
- Télécharger la dernière version des sources
wget http://s3.amazonaws.com/influxdb/influxdb-latest.src.tar.gz
- 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
- Démarrer la configuration
./configure
- Modifier le fichier Makefile pour que l’architecture soit arm. C’est la ligne 16 du fichier. Remplacer :
arch = amd64
par
arch = arm
- Modifier le fichier Makefile pour désactiver RocksDB à la ligne 112. Remplacer :
rocksdb = yes
par
rocksdb = no - 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 - Lancer la compilation
make build
- 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 :
- Installer Ruby
apt-get install -t jessie ruby ruby-dev
- Installer FPM
gem install fpm
- Installer le gestionnaire de paquets de Ruby RVM
curl -L get.rvm.io | bash -s stable --rails
- 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
- 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
- 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
- Ajouter root dans le groupe rvm
usermod -a -G rvm root
- Se déconnecter puis se reconnecter
- Initialiser GOPATH
export GOPATH=$HOME/gocodez cd $GOPATH/src/github.com/influxdb
- Lancer la création du package
make package
- 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