Haciendo uso de los comandos por SSH que te explicábamos anteriormente, hoy vamos a supervisar el estado de los servicios de raspbian mediante Home Assistant, con esto podremos saber si un servicio está corriendo correctamente, y en caso contrario automatizar el reinicio del mismo.
Esto es importante para servicios como mosquitto, openvpn, dasher, o motion entre otros, con lo que vamos a explicar el proceso poniendo como ejemplo mosquitto y para el resto de servicios se haría igual.
Lo primero que hemos de hacer es crear el sensor para conocer el estado del servicio.
Para ello en el directorio sensors crearemos un archivo servicios.yaml con el siguiente contenido:
1 2 3 4 |
- platform: command_line name: Servicio MQTT command: "ssh pi@127.0.0.1 systemctl is-active --quiet mosquitto && echo Service is running || echo Service is stopped" scan_interval: 10 |
Para el resto de servicios debes copiar el sensor sustituyendo mosquitto por otro servicio, si quieres saber todos los servicios que tienes instalados puedes teclear.
1 |
dpkg --get-selections | grep -v 'deinstall' | more |
Te saldrá TODOS los paquetes instalados en raspbian, aunque aparezcan muchos, ten en cuenta que casi todo será librerías.
Una vez creados los sensores, ya puedes organizarlo en grupos y pestañas a tu antojo.
En la imagen anterior puedes ver algunos de los servicios corriendo actualmente en mi raspberry.
Una vez organizado los sensores, debemos preparar los automatismos para el reincio
Para ello, podemos usar un automation como el siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
- alias: Restart Mosquitto trigger: platform: state entity_id: sensor.servicio_mqtt from: 'Service is running' to: 'Service is stopped' action: - service: notify.telegram data_template: message: "Reinicio de MQTT" - delay: seconds: 10 - service: shell_command.reiniciomqtt |
Este automation detecta la caida de mosquitto, envía un mensaje por telegram y lanza un shell command.
He puesto un delay antes del reinicio porque me daba error al intentar reiniciar nada más detectada la caída.
Como es lógico, debes crear un shell_command con la siguiente instrucción:
1 |
reiniciomqtt: ssh pi@127.0.0.1 sudo systemctl start mosquitto |
Con esto ya puedes monitorizar tus servicios al más puro estilo docker y además en caso de que un servicio se pare por algún motivo, se reiniciará automáticamente
Una vez lo tengas todo configurado, puedes probar su funcionamiento mediante la terminal putty.
Teclea:
1 |
sudo systemctl stop mosquitto |
Verás como el servicio indica "Service is stopped" y recibirás un aviso por telegram.
A los pocos segundos el servicio se reiniciará y volverá a indicar "Service is running"