#Godillot, une alternative à M/Monit

Suite à une coupure de courant le mois dernier, suffisamment longue pour vider la batterie de l’UPS, mes systèmes ont tous redémarrés automatiquement - ou du moins je le croyais jusqu’à ce que je me rende compte quelques jours plus tard que la base influxDB ne tournait plus, plantée suite à la coupure.

Après avoir réparé cette base de donnée (et avoir mis en oeuvre un vrai système de backup sur les data influxdb…), j’ai décidé d’installer un système de monitoring simple des processus avec Monit.

Monit. est un agent qui vérifie régulièrement les processus (Existence, Consommation, Code erreur), et envoie des alertes en cas de problèmes…bref rien de plus que Nagios ou New Relic, sauf que Monit. peut aussi lancer des actions comme relancer les processus en cas de problèmes ou de dépassement de seuil. Dans le cas d’une infrastructure peu administrée/monitorée comme la mienne cela devient très intéressant pour automatiser et se faciliter la vie.

Toutefois, Monit a un inconvénient majeur: pour avoir une vision globale de l’état de l’ensemble des serveurs il faut utiliser M/Monit qui est payant.

Aussi, j’ai développé en langage Go une mini application appelée Godillot qui récupère les informations Monit de chaque serveur et les agrège dans un fichier html simple à lire comme vous pourrez le voir en exemple. Godillot n’a pas vocation à remplacer M/Monit qui est très complet mais permet d’assurer un minimum de surveillance via u tableau de bord.

Godillot est bien entendu disponible en open-source (Licence Apache), directement sur Github, pour utilisation, modification (je ne suis pas fier du template html) et commentaires à votre convenance !

Date de publication: 02/04/2016
Mots-clefs: #go #projets #outils


#Remplacement de emoncms par Grafana+influxDB

Utilisateur de emoncms comme solution de métrologie de mon installation domotique depuis quelques mois, j’ai décidé dernièrement de basculer sur une solution moins spécialisée et beaucoup plus ouverte, basée sur influxDB pour la partie stockage des données et sur le superbe Grafana pour la partie affichage des indicateurs.

InfluxDB est une base de donnée permettant de stocker des données chronologiques (Time series en anglais), avec intégration de fonctions mathématiques simples (min/max, moyenne…), et un langage de requêtage proche du SQL et simple à utiliser.

Grafana est, quant à lui, un visualiseur de données, pouvant se connecter à Graphite, influxDB, openTSDB…afin de créer des tableaux de bord composés de graphiques ou de données brutes avec des possibilités avancées de corrélation.

L’installation de ces deux outils se fait très facilement (le classique `sudo apt-get sur ubuntu) et le paramétrage est aussi simple (du moins pour une installation comme la mienne) - aussi je ne n’épiloguerai pas dessus (en bref utilisation de nodered ou de scripts bash pour récupérer les données puis envoi en POST via l’API influxDB, rien d’exotique).

Ainsi en quelques minutes, j’ai pu obtenir des tableaux de bord sur différents types de données, tant domotique qu’informatique, eg:

Consommation électrique

graphana-elec

Traffic internet sur ma box

grafana-traffic

Pour conclure, ce qui me satisfait le plus dans cette solution c’est la possibilité de mettre n’importe quelle donnée en très peu de temps: utile parfois pour du troubleshooting.

Date de publication: 02/12/2015
Mots-clefs: #domotique


#Premiers pas en domotique

J’ai décidé l’année dernière de me lancer dans l’aventure de la domotique, avec pleins d’idées en tête sur la sécurité et la détection, les mesures de température, l’optimisation de la consommation de l’énergie, le contrôle des lampes et autres, et plus globalement l’automatisation.

Étude préalable

En m’intéressant à ce domaine, j’ai découvert d’une part sa richesse et d’autre part le nombre très important de protocoles, les différentes box domotiques plus ou moins compatibles, les prix (élevés) des différents composants.

Par ailleurs, ce domaine est à la fois très récent et assez ancien et nécessite des connaissances en électronique, électricité, informatique avec une notion forte d’intégration de composants et systèmes entre eux… ce qui rend le sujet d’autant plus intéressant.

J’en ai tiré plusieurs postulats et décisions sur la suite des événements.

Postulats / Choix

Le matériel de contrôle de la bureautique pouvant être envahissant, j’ai décidé en premier lieu de me créer mon propre espace pour le matériel.

Utilisateur heureux de l’open-source depuis plusieurs années, j’ai choisi de faire ma propre box domotique open-source en me basant sur l’application domoticz pour le cœur du système et en rajoutant au fur et à mesure des applications dédiées par fonction (Surveillance, Graph, Ordonnancement).

Toutes ces applications sont installées sur des machines virtuelles Ubuntu/Linux sur un ESX VMware. L’ESX est le seul élément non open-source, choisi par rapport à mes expériences professionnelles, mais j’aurai pu (dû?) choisir à la place XEN.

Le dernier choix important a été pour moi d’isoler complètement la maison: aucun des systèmes domestiques n’est accessible de l’extérieur afin d’éviter tout piratage qui pourrait être particulièrement grave.

Mesurer pour contrôler

Measurement is the first step that leads to control and eventually to improvement. If you can’t measure something, you can’t understand it. If you can’t understand it, you can’t control it. If you can’t control it, you can’t improve it — Dr. H. James Harrington

Un premier point important de la domotique est la mesure, selon l’adage On ne contrôle que ce qu’on peut mesurer. Il faut donc prévoir les capteurs (avec par exemple les mesures de température via des Oregon Scientific THN 132) et surtout l’infrastructure de collecte des données.

Dans mon cas, j’ai choisi de mettre en œuvre emoncms, qui me permet d’agréger l’ensemble des données et d’en tirer des tableaux de bord très lisibles.

conso Electrique

Évidemment, ces tableaux de bord ne sont pas accessibles de l’extérieur comme définit précédemment: j’ai donc mis en œuvre une copie des données temps réel vers l’extérieur, via un simple push vers un tableau de bord type dashing hébergé chez Heroku.

temperature

Intégration des systèmes

Pour bien gérer “l’internet of things” et mixer les services logiciels, les objets connectés, et les différents capteurs, j’ai par ailleurs installé node-red, qui est développé par IBM.

Node-red permet de créer des workflows entre objet pour les faire interagir entre eux simple, le tout via une IHM web. Ces workflows permettent via un peu de développement très simple en javascript d’analyser des flux de données venant de sondes ou de services, de les transformer avant de les renvoyer vers d’autres sondes ou services.

nodered

Ainsi, j’ai pu créer des flux pour récupérer les données de la box domotique avant de les envoyer vers emoncms et d’en faire des graphiques et des premières analyses.

Réalisations actuelles - plutôt orientées mesures

Ces derniers mois, je me suis attaché à mettre en œuvre les différents points de mesure, avec notamment:

  • Mesures de la température dans toutes les pièces de vie (Chambres, Salon) via des sondes Oregon Scientific
  • Récupération de la consommation électrique directement sur le compteur avec une pince ampérométrique de chez OWL

J’ai par ailleurs commencé à installer des caméras intérieures pour la vidéosurveillance, avec motion et motioneye pour gérer les détections et l’enregistrement des films. Ces films sont enregistrés à la fois en local et sur une DropBox dédiée en cas de coupure (ou disparition du disque dur…)

motioneye

Réalisations à venir ou qui reste à étudier

Le champ des possibles de la domotique est impressionnant et j’imagine par exemple mettre en œuvre d’autres activités comme:

  • Contrôle automatique des lumières du jardin selon l’heure de la journée.
  • Mise en œuvre d’un contrôle vocal type S.A.R.A.H
  • Extension de la vidéo surveillance à l’extérieure, avec déclenchement d’actions suite à des événements
  • Mesure de l’humidité dans la salle de douche pour allumer/éteindre la VMC
  • Contrôle des radiateurs via boutons électroniques
  • Détection des lumières laissées allumées par les enfants
  • Automatisation des fermetures de volets
  • envoi d’information via SMS
  • …. Bref, de quoi s’occuper quelques temps !
Date de publication: 20/06/2015
Mots-clefs: #domotique #projets


#Mon datacenter

le datacenter à la maison : un rêve de geek

Ayant acheté une maison l’année dernière avec beaucoup d’espace et surtout un grand garage, j’en ai profité pour réaliser un vieux fantasme de geek : Avoir un endroit dédié pour mon matériel informatique, bref mon propre mini datacenter.

Derrière ce fantasme, un besoin simple: créer un espace protégé, ventilé et présentable pour héberger un NAS Synology, un mini-serveur NUC, un antenne RFXCom pour la domotique, un hub NetGear et un UPS APC - le tout avec des capacités d’évolution et en respectant certaines règles d’urbanisation. En bonus, un vieux PC avec hauts-parleurs est installé pour me permettre d’écouter de la musique en bricolant ou pour consulter rapidement des infos domotiques.

datacenter1

De la « récup » et de l’huile de coude

Après quelques recherches sur internet sur le sujet, j’ai trouvé de nombreux exemples de bricoleurs geek qui ont transformé (ou même créé) des meubles pour cette usage: j’ai donc décidé de me lancer moi aussi en partant d’un petit meuble existant.

Quatre étapes majeures ont composé la création de ce meuble datacenter:

  1. Créer les aérations et prévoir les circulations d’air
  2. Structurer le câblage des courants forts (électricité) et faibles (réseau)
  3. Mettre en place le matériel
  4. Installer le PC « domotique »

Une aération intelligente

Tout d’abord, j’ai percé des ouvertures sur la porte avant, sur l’arrière pour le passage des câbles.

IMG_0786 IMG_0812

Puis j’ai rajouté une VMC de salle de bain pour assurer extraction d’air optimale, avec un allumage automatique via un micro-module Chacon commandé par la box domotique open-source Domoticz et basé sur un capteur de température Oregon Scientific.

IMG_0818

Grâce à ce montage, la VMC ne se déclenche que si la température à l’intérieur du DC dépasse les 30°C et s’éteint une fois la température revenue sous les 27°C, tout en m’envoyant des alertes.

Domoticz

L’importance d’optimiser son câblage

Qui n’a jamais eu de problème de câble qui se mélangent, s’entortillent et se croisent (regardez donc les câbles entre votre télévision, votre box tv et votre lecteur de DVD par exemple)? Sur un environnement confiné avec à la fois des câbles électriques et des câbles réseau, cela peut devenir l’enfer en cas de modification ou de dépannage.

IMG_0817

Aussi j’ai utilisé des accroches de tuyaux de plomberie pour définir des chemins de câbles, en séparant courant faible et courant fort - ce qui m’a permis notamment de changer plusieurs fois des éléments dans le datacenter sans coup férir.

Organisation et remplissage du datacenter

Avant de remplir, j’ai rajouté des roulettes pour faciliter les manipulations.

IMG_0785

Puis, J’ai positionné l’UPS en bas, le NUC au milieu avec le NAS et pour l’instant juste le switch réseau en haut: l’idée étant de garder de la place à côté du NUC et du switch pour des évolutions.

IMG_0001

Vous noterez le capteur de température pour le déclenchement de la VMC juste au dessus du NUC.

Un PC facile d’accès

Avoir un PC dans le garage/atelier peut être pratique pour accéder rapidement à un terminal, vérifier des points sur internet lors du bricolage ou simplement écouter de la musique.

Pour cela, un peu de récupération avec une planche pour le moniteur et une plaque de métal pour le clavier, le tout fixé au mur au dessus du datacenter pour avoir le réseau et le tour est joué !

IMG_0002

Ce système permet aussi de positionner le boîtier radio RFXcom en dehors du meuble pour éviter les interférences.

Résultats

Les objectifs sont tous atteints, avec finalement peu de moyens engagés (moins de 80€ de matériel) et un résultat très correct.

IMG_0003

Je réfléchis maintenant à acheter un mini-PC pas cher pour remplacer le vieux Celeron 1Go qui peine même sous linux.

Date de publication: 16/04/2015
Mots-clefs: #projets #domotique


#Obiran versus synology

Depuis quelques mois, j’ai mis en oeuvre une nouvelle infrastructure chez moi de type homelab, basée sur un petit serveur intel NUC, ESXi et Ubuntu.

Comme tout bon exploitant avec des tendances devops, j’ai rajouté de la supervision avec NewRelic, divers scripts de contrôle, un dashboard basé sur dashing, l’installation automatisée de VM via ansible et évidemment je me suis ensuite attaqué à la problématique des sauvegardes.

De nombreuses solutions opensource existent déjà (amanda, bacula …) permettant entre autre d’avoir une architecture de type client-serveur. Toutefois, la sauvegarde étant un sujet qui me tient à coeur, j’ai décidé de réutiliser un de mes scripts assez ancien « obiran » pour sauvegarder les fichiers importants directement sur mon NAS Synology.

Mais la mauvaise fée de l’informatique est intervenu d’un coup de baguette numérique rendant impossible de faire fonctionner rsync entre mes VM et le NAS, avec un message d’erreur peu parlant du type Permission denied, please try again.

Après quelques recherches, la solution semble être d’expliciter le chemin du binaire rsync côté synology, avec le paramètre —rsync-path=/usr/syno/bin/rsync. La commande à lancer devient donc:

rsync -azv —rsync-path=/usr/syno/bin/rsync REPERTOIRE_A_SAUVEGARDER -e « ssh -p PORT -i FICHIER-CLEF » USER@SYNOLOGY:REPERTOIRE_DESTINATION

J’ai donc mis à jour Obiran avec un nouveau paramètre pour prendre en compte cette spécificité: Obiran est donc passé en version 0.6, sept ans avec la version 0.5 !

Date de publication: 04/04/2015
Mots-clefs: #projets #devops #backup