Monitoring et ping de services web sur Home Assistant
On se retrouve pour un nouveau tutoriel très simple sur Home Assistant. L’objectif est de pouvoir réaliser un monitoring simple d’un service web comme Sonarr, Radarr ou encore un simple site web. Nous allons créer pour cela un sensor avec une petite requête et voir pour l’utiliser ensuite dans une automation.
Il y a quelques mois, j’ai créé un serveur multimédia à la maison avec toutes les applications qui vont bien : Sonarr, Radarr, Jackett, FlareSolver et compagnie. Problème, il arrive de temps en temps qu’une application cesse de fonctionner et, bien sûr, je ne m’en rends pas compte. Grâce à la commande suivante, on pourrait récupérer l’état si le service est « en ligne » ou « hors-ligne ».
Ajouter d’un sensor pour le ping
Il vous suffit d’ajouter les lignes suivantes dans votre fichier configuration.yaml. Vous aurez juste à changer l’adresse IP ainsi que le port utilisé dans la commande curl. Toutes les 1min30, le statut sera actualisé et nous renverra l’info dans le sensor.
command_line:
- binary_sensor:
name: 'Sonarr'
command: 'response=$(curl -LIk -m 3 http://192.168.1.155:8989 -o /dev/null -w "%{http_code}\n" -s); test "$response" -ge 200 && echo "En ligne" || echo "Hors ligne"'
scan_interval: 90
value_template: '{{ value }}'
Si vous souhaitez comme moi le personnaliser avec l’icône qui va bien, vous devrez ajouter des informations dans le fichier customize.yaml et ajouter le logo.
sensor.sonarr:
entity_picture: /local/sonarr.png
Le dossier « local » correspond au dossier « www » dans votre installation. C’est un dossier qui est présent dans le dossier racine config.
Vérifiez la configuration de votre installation puis redémarrez Home Assistant. Vous devez maintenant voir le nouveau capteur disponible. Attendez quelques secondes, il devrait ensuite se mettre à jour.
Utilisation du sensor dans une automation
Maintenant que l’on a l’info si notre service fonctionne ou pas, nous allons pouvoir l’utiliser dans une automation. Plusieurs choix s’offrent à vous, quelques exemples :
- Envoyer une notification sur Telegram, Slack ou Pushbullet que le service est tombé
- Exécuter un script afin de le relancer
- Redémarrer une machine virtuelle via ESXI
- id: sonarr_down
alias: Sonarr - Hors ligne
trigger:
- platform: state
entity_id: sensor.sonarr
from: En ligne
to: Hors ligne
action:
- service: notify.telegram
data:
message: Sonarr est hors ligne
J’ai mis pour ma part une simple alerte Telegram. Je vais continuer sur ma lancée afin de relancer automatiquement le service sans intervention de ma part.
J’espère que cet article vous sera utile. Si vous avez des idées ou suggestions, n’hésitez pas à me laisser un petit commentaire !