En este post creamos paso a paso un RAID1 en un Ubuntu Server 22.04 y más adelante se muestra como usar Telegram para recibir instantaneamente los eventos que ocurran en nuestro RAID1 pudiendo evitar así un desastre inminente.
Creación del RAID
Vamos a crear una máquina virtual en la que voy a poner dos discos que deben tener las mismas características y tamaño.

Comenzado el proceso de instalación, elegiremos Custom storage loyaut

En cada uno de los discos seleccionaremos Use As Boot Device

En el primer disco elegimos espacio disponible

Despues Add GPT Partition y en formato, Leave unformatted

Crear. Hacemos lo mismo con el otro disco.
Ahora entramos en Create software RAID (md)

Seleccionamos las particiones.

Creamos. Después seleccionamos el dispositivo y elegimos el formato.


Y hecho. Y hecho de nuevo

Hecho y Continuar

Rellenamos los datos que nos solicita.

Y Hecho
Yo voy a instalar el servicio openSSH

No creo que necesite nada más por ahora, así que hecho de nuevo. Esperamos… y esperamos… y esperamos… y reiniciamos por fin

Una vez reiniciado vamos a hacer algunas comprobaciones.


Ahora que sabemos que todo está correcto comienza lo bueno.
Telegram
Para poder recibir las notificaciones de lo que ocurre en el RAID1 vamos a tener que crear un bot de Telegram y un grupo al que añadiremos el bot.
Abrimos Telegram y buscamos el bot @BotFather

Tecleamos /newbot y elegimos el nombre de nuestro bot y el usuario, que debe terminar en bot. Guardamos el API token que nos facilita porque lo usaremos después.

Guardamos el API token que nos facilita y clicamos en la url hacia nuestro bot. Clicamos en start

Añadiremos el bot a nuestros contactos.
Ahora vamos a crear un grupo de Telegram. En este grupo nos añadiremos a nosotros mismos y a nuestro bot

Añadimos el bot al grupo

Una vez que tengamos el grupo…

clicamos en el nombre del grupo y en editar

En editar comprobamos si nuestro bot es administrador y si no lo es lo promovemos

Comprobamos que tenga los permisos activados

Vamos a nuestro bot y escribimos /reload, y en el grupo escribimos algún mensaje


Nota: esto es importante o no podremos encontrar el id del grupo, que vamos a necesitar.
Ahora recuperamos el token que nos dio botfather y copiamos en el navegador la siguinete url
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates , sustituyendo <YOUR_BOT_TOKEN> por nuestro token

Guardamos el id de chat

Con todo esto ya podemos probar si podemos utilizar el bot para comunicarnos con el grupo mediante un curl
curl -s -X POST "https://api.telegram.org/bot7507838670:AAFfrQc95GO4q9qb2ae3lBG9-yXXva3jnME/sendMessage" -d "chat_id=-1002304705634" -d text="Mensaje de prueba"
Y parece que sí!!!!

Con esta parte resuelta ya podemos comenzar a elaborar este script para que mdadm nos avise cuando falle un disco.
Creación de nuestro servicio
Mdadm permite monitorear el estado del RAID y comunicarnos cualquier incidencia mediante el servicio de correo. Nosotros lo que vamos a hacer aquí es crear nuestro propio script de notificaciones, que nos llegarán instantaneamente a Telegram. Para ello, utilizaremos también un servicio personalizado.
Creamos el script, que vamos a guardar en /usr/local/bin/mdadm-xa-telegram.sh
#!/bin/bash
# Variables de configuración
TOKEN="7507838670:AAFfrQc95GO4q9qb2ae3lBG9-yXXva3jnME"
CHAT_ID="-1002304705634"
HOSTNAME=$(hostname)
TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")
MESSAGE="[$TIMESTAMP] RAID alert on $HOSTNAME: $1"
# Enviar mensaje a Telegram
curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
-d chat_id=${CHAT_ID} \
-d text="${MESSAGE}"
Le damos permisos de ejecución
chmod +x /usr/local/bin/mdadm-xa-telegram.sh
Creamos el servicio.
sudo nano /etc/systemd/system/mdadm-monitor.service
[Unit]
Description=Monitor RAID arrays with mdadm and notify via Telegram
After=network.target
[Service]
Type=simple
ExecStart=/usr/sbin/mdadm --monitor --scan --program /usr/local/bin/mdadm-xa-telegram.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
Después de crear el archivo del servicio, recargamos systemd para reconocer el nuevo servicio y luego lo habilitamos y arrancamos
Cargamos la configuración
sudo systemctl daemon-reload
Habilitamos el servicio para que inicie el arranque
sudo systemctl enable mdadm-monitor.service
Iniciamos el servicio
sudo systemctl start mdadm-monitor.service
Verificamos el estado del servicio
sudo systemctl status mdadm-monitor.service

Ahora causaremos un fallo en uno de los discos
sudo mdadm --fail /dev/md0 /dev/sda2
Veamos si nos envía las notificaciones…

Como vemos, recibimos la notificación de fallo, y, como reiniciamos la máquina con el disco en fallo también nos envió un aviso.
Para reconstruir el RAID1
sudo mdadm --remove /dev/md0 /dev/sdba
sudo mdadm --add /dev/md0 /dev/sdba
Para ver el estado
sudo mdadm –detail /dev/md0
Para monitorear el progreso de reconstrución
cat /proc/mdstat
Y fin!!!! Y espero que haya resultado interesante.
Deja una respuesta