Monitorer son domicile avec Jeedom et Grafana.

Avec CentOS en chef d'orchestre

Sommaire

Pré-requis

  • Une installation fonctionnelle de Jeedom
  • Une machine virtuelle tournant sous CentOS
  • Si besoin d’avoir lu mon précédent papier

Objectif

  • Installer Grafana, Influxdb, le pont Jeedom-Influxdb, le tout dans un environnement sous centOS

Contexte

Je vous propose un bon vieux tuto de barbu pour représenter graphiquement tout ce qui est doté d’un capteur chez vous, et dont les infos remontent dans Jeedom. Jeedom n’est pas trop mal foutu de ce point de vu là, mais je cherchais à aller plus loin, ou plutôt je cherchais à utiliser un outil fait pour cela, je veux parler de Grafana.

Pourquoi CentOS plutôt qu’une classique Debian? Ma précédente installation était une .deb en version 8, et à l’heure de la monté en version je me suis dit que c’était plutôt l’occasion d’essayer quelque chose de nouveau, ainsi que d’investir dans un système avec mise à jour de sécurité de juste 10 ans!

Pour ce tuto: je propose d’installer grafana avec docker qui est la manière que je trouve la plus fiable, et d’installer Infludb à partir des dépôts RHEL. À vous d’adapter à vos préférences personnelles.

Cela posé, il est temps de faire chauffer votre terminal préféré.

Tutoriel

Ajout des dépôts et des pré-requis nécessaires

~$ yum -y update
~$ yum install epel-release
~$ yum -y groupinstall development
~$ yum -y update
~$ yum -y install python36
~$ yum -y install python-pip
~$ pip3 install --upgrade pip
~$ pip3 install influxdb

Installation de Docker

~$ yum install -y yum-utils \
 device-mapper-persistent-data \
 lvm2
~$ yum-config-manager \
 --add-repo \
 https://download.docker.com/linux/centos/docker-ce.repo
~$ yum install docker-ce
~$ systemctl enable docker
~$ systemctl start docker
~$ systemctl status docker

Installation de Grafana

~$ docker volume create grafana-storage
~$ docker run \
 --restart always \
 -d \
 -p 3000:3000 \
 --name=grafana \
 -v grafana-storage:/var/lib/grafana \
 -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource" \
 grafana/grafana
~$ firewall-cmd --permanent --zone=public --add-port=3000/tcp

Installation de Influxdb

~$ cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF
~$ yum install influxdb
~$ firewall-cmd --permanent --zone=public --add-port=8086/tcp

~$ firewall-cmd --permanent --zone=public --add-port=8083/tcp

~$ firewall-cmd --reload
~$ systemctl enable influxdb.service
~$ systemctl start influxdb.service
~$ curl -XPOST -u jeedom:jeedom 'http://localhost:8086/query' --data-urlencode 'q=CREATE DATABASE "jeedom"'

Ce curl permet la création d’une base de donnée jeedom avec pour nom d’utilisateur jeedom et mot de passe jeedom. Ces informations seront à renseigner dans le “data source” de grafana.

Installation du pont Jeedom-Influxdb

~$ cd /PATH/
~$ mkdir Bridge_Jeedom_InfluxDB
~$ cd Bridge_Jeedom_InfluxDB
~$ wget https://github.com/neuhausj/JeedomTools/raw/master/Bridge_Jeedom_InfluxDB.py
~$ yum install nano
~$ nano Bridge_Jeedom_InfluxDB.py

Je vous renvoie à mon précédent article pour conf ce script.

~$ firewall-cmd --zone=public --add-port=1234/tcp --permanent
~$ firewall-cmd --reload

Cette commande vous permettra de lancer le script afin de savoir si tout fonctionne:

~$ /usr/bin/env python36 Bridge_Jeedom_InfluxDB.py &

Si c’est le cas, voici venu le temps de systemd ce script:

~$ nano /lib/systemd/system/Bridge_Jeedom_InfluxDB.service
[Unit]
Description=Bridge_Jeedom_InfluxDB.service
After=multi-user.target

[Service]
Type=idle
ExecStart=/usr/bin/python36 /PATH/Bridge_Jeedom_InfluxDB/Bridge_Jeedom_InfluxDB.py

[Install]
WantedBy=multi-user.target
~$ systemctl enable Bridge_Jeedom_InfluxDB.service

Exemples d’utilisation

Pour examiner tout ça en meilleure qualité, c’est par ici. L’écran tourne grâce à un pi en mode kiosque: une Raspbian qui lance la page Grafana au démarrage, et avec toutes les opérations du navigateur en RAM afin de ne pas solliciter plus que de raison la sd. L’écran se déclenche à la capture d’un mouvement dans cette pièce qui appelle alors une commande ssh sur le pi:

~$ display_power-on
~$ display_power-off

Sources

http://vmkdaily.ghost.io/influxdb-and-grafana-on-centos/
https://hub.docker.com/r/grafana/grafana/
https://www.jeedom.com/forum/viewtopic.php?f=31&t=15209
https://docs.influxdata.com/influxdb/v1.5/tools/api/#write
https://www.rosehosting.com/blog/how-to-install-pip-on-centos-7/
https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce
https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-local-programming-environment-on-centos-7
https://www.hivelocity.net/kb/how-to-install-pip-on-centos-7/
https://www.liquidweb.com/kb/enable-epel-repository/
https://www.liquidweb.com/kb/how-to-install-pip-on-centos-7/

À plus les barbus!