Controlar que todos los servicios de la Raspberry se están ejecutando correctamente, es un trabajo enorme. Hay una manera que la Raspberry se comunique con nosotros cuando algo no vaya del todo bien, y es utilizar un bot de Telegram.
Necesitamos un bot
El primer paso es crear el bot que vamos a utilizar. Puedes seguir este artículo que utilicé para la utilización de un bot en OpenHAB.
Configurando los ficheros
Cuando tengamos nuestra API_KEY y nuestro CHAT_ID, creamos un directorio en /etc/telegram como root:
sudo mkdir /etc/telegramY creamos el siguiente archivo:
sudo nano /etc/telegram/key.shexport TELEGRAM_KEY="API_KEY"
export CHAT_ID=CHAT_IDScript de envío de mensajes
Ahora creamos el script que enviará el mensaje:
sudo nano /usr/local/bin/telegram.sh#!/bin/bash
source /etc/telegram/key.sh
URL="https://api.telegram.org/bot$TELEGRAM_KEY/sendMessage"
curl -s -d "chat_id=$CHAT_ID&disable_web_page_preview=1&text=$1" $URL > /dev/nullLe damos acceso de ejecución:
sudo chmod +x /usr/local/bin/telegram.shProbar el script
Y podemos probarlo desde cualquier ubicación y con nuestro usuario:
telegram.sh "¡Hola! He llegado, soy tu servidor"A partir de ahora, podemos utilizarlo para que nos informe de cualquier cosa que suceda en nuestro servidor.
Avisos de nuevas conexiones SSH
Modificamos el archivo .bashrc y añadimos al final la línea siguiente:
nano .bashrctelegram.sh "Nueva conexión SSH con la IP $(echo $SSH_CLIENT | awk '{ print $1}')"Tomar la temperatura
telegram.sh $(/opt/vc/bin/vcgencmd measure_temp)Controlar servicios de systemd
El procedimiento anterior podemos utilizarlo, por ejemplo, para que nos informe de cualquier error en la ejecución de cualquier servicio. Para ello, vamos a crear el fichero:
sudo nano /usr/local/bin/unit-status-telegram.sh#!/bin/bash
UNIT=$1
UNITSTATUS=$(systemctl status $UNIT)
ALERT=$(echo -e "\u26A0")
telegram.sh "$ALERT Unit failed $UNIT $ALERT Status: $UNITSTATUS"Le damos acceso de ejecución:
sudo chmod +x /usr/local/bin/unit-status-telegram.shProbar el script
Y lo podemos probar, por ejemplo, con el siguiente comando:
unit-status-telegram.sh systemd-journaldY casi al instante, nos debería llegar un mensaje a nuestro Telegram, con toda la información.
Crear servicio de notificación
Ahora sólo nos queda crear la unidad en systemd que se activará en caso de error:
sudo nano /etc/systemd/system/unit-status-telegram@.service[Unit]
Description=Unit Status Telegram Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/unit-status-telegram.sh %IActivar notificaciones en servicios
¡Listo! Ahora solo tenemos que añadir en la sección [Unit] del servicio que queremos controlar la siguiente línea:
OnFailure=unit-status-telegram@%n.serviceEstos servicios son algunos ejemplos que hemos visto en algún momento:
/etc/systemd/system/arch-audit.service
/etc/systemd/system/autoupdate.service
/etc/systemd/system/lynis.service
/etc/systemd/system/certbot.service
/etc/systemd/system/rkhunter-email.serviceNotificaciones de apagado y arranque
Mensaje al apagar
sudo nano /etc/systemd/system/shutdown_msg.service[Unit]
Description=Send message to shutdown
OnFailure=unit-status-telegram@%n.service
[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=telegram.sh "Sorry, the server is going down..."
[Install]
WantedBy=multi-user.targetNos aseguramos de activar y recargar:
sudo systemctl enable shutdown_msg.service --now
sudo systemctl daemon-reloadMensaje al arrancar
sudo nano /etc/systemd/system/start_msg.service[Unit]
Description=Send message after network becomes reachable
After=network.target network-online.target
Wants=network-online.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=telegram.sh "Hi, the server is now becomes reacheable... "
TimeoutStartSec=0
[Install]
WantedBy=default.targetNos aseguramos de activar y recargar:
sudo systemctl enable start_msg.service --now
sudo systemctl daemon-reloadResumen de notificaciones configuradas
Con esta configuración ya tienes un sistema completo de notificaciones que te avisará sobre:
- ✓ Nuevas conexiones SSH al servidor
- ✓ Fallos en servicios de systemd
- ✓ Apagado del servidor
- ✓ Arranque del servidor
- ✓ Temperatura del sistema (bajo demanda)
Tu Raspberry Pi ahora te mantendrá informado de todo lo que sucede, permitiéndote reaccionar rápidamente ante cualquier problema. ¡Hello, it's me, everything's all right here! 📱
¿Te ha sido útil?
Ayúdame a mejorar con tu puntuación y comentarios.
💬 Comentarios
Los comentarios están gestionados por GitHub Discussions. Necesitas una cuenta de GitHub para participar. ¡Es gratis y rápido!