99 - Autoremediaciones para la Raspberry Pi
Las autoremediaciones te permiten reparar servicios que o no se comportan de forma adecuada o que han dejado de funcionar en tu Raspberry Pi.
Si vienes del mundo de la administración de sistemas, no te descubro nada con esto de la remediación y de la autoremediación. Pero, es posible que no conozcas en profundidad estos conceptos o incluso que no lo hayas oído anteriormente. En este episodio del podcast, voy a dar un primer paso en esto de la remediación. Se trata de realizar autoremediaciones para la Raspberry Pi.
Antes de escuchar este episodio del podcast, te recomiendo que escuches el episodio 70 del podcast en el que hablo sobre monitorización o que pasa en mi Raspberry. Se trata de un proyecto implementado en Python por Javier. Y digo implementado por Javier, porque al fin y al cabo, yo solo puse una primera piedra, y él, lo ha llevado a su situación actual. Mucho mas lejos de lo que yo hubiera pensado nunca… pero luego, explicaré mas sobre este tema.
¿Por que te recomiendo que escuches el podcast 70? Básicamente este nuevo podcast se apoya en ese, para esto de las autoremediaciones para la Raspberry Pi…
Pero, ¿que es eso de las autoremediaciones para la Raspberry Pi? Está bien que el sistema de monitorización te avise de que tienes un servicio caído. ¿Pero no sería mas interesante que además de avisarte intentara resolver el problema y levantar el servicio?. Pues eso es precisamente una autoremediación. Se trata de resolver un problema que el sistema de monitorización ha detectado sin que sea necesaria tu intervención. No está nada mal, ¿no te parece?.
Autoremediaciones para la Raspberry Pi
Antes de nada, una observación muy importante. Tanto en el episodio 70 del podcast, como en este, hablo de monitorización y autoremedicaciones para la Raspberry Pi, lo cierto es que lo puedes aplicar a cualquier servidor. De hecho, como ahora verás, yo lo estoy aplicando en primer lugar a un VPS de Digital Ocean, aunque también lo tengo en varias de las Raspberry Pi.
¿Como he llegado hasta aquí?
Como ya he indicado en la introducción, esto de las autoremediaciones no es nada nuevo, ni mucho menos. Esto lo estoy utilizando en el trabajo, y ahora se ha venido conmigo también para aplicarlo al VPS y a la Raspberry Pi. Lo mismo que sucedió anteriormente con la monitorización. ¿pero porque esto de las autoremediaciones para la Raspberry Pi?.
Tengo que confesarte que yo soy de esos antiguos, que sigue utilizando los RSS para estar informado. Eso si, para estar informado de las cosas que me interesan. Si bien, también utilizo Twitter como medio de información, lo cierto es que las noticias mas interesantes me siguen entrando vía RSS. O bien, no sigo a quien debo seguir en Twitter, o bien, lo mas interesante está RSS, o también, otra posibilidad que no descarto es que yo sea muy torpe. Sea como sea, la cuestión, es que hace algún tiempo que monté mi propio canal de noticias con Tiny Tiny RSS, tal y como explico en ese tutorial sobre tener tu nube en la Raspberry Pi. Aunque actualmente, este servicio lo tengo montado en un VPS. Pero, al fin y al cabo es lo mismo.
Tiny Tiny RSS utiliza un servicio para actualizar las noticias cada cierto tiempo. Se trata de una servicio muy sencillo y bastante estable. Es muy posible que pasen meses sin que se produzcan ninguna incidencia. Es decir, con un funcionamiento impecable del servicio. Pero de vez en cuando, de forma esporádica y sin razón aparente el servicio cae.
La cuestión es que por algún tipo de razón que está mas cerca de lo paranormal que otra cosa, cada vez que me voy de vacaciones, o que simplemente no tengo un terminal próximo, la actualización de noticias cae.
No me preguntes porque. Se que tengo pendiente mirarlo en el log y averiguar la razón. Pero lo cierto es que me cuesta menos levantar el servicio de actualización de noticias que mirar el log. Esto es pura desidia, pero es así…
Así, como me he cansado de esta situación, decidí ponerle fin al problema, y en lugar de revisar el log, opté por las autoremediaciones para la Rapsberry Pi…, realmente para el VPS…
Autoremediaciones para la Raspberry Pi en servicios
No te vayas a pensar que he hecho algo del otro mundo. Ni mucho menos. Al final, se trata de un sencillo servicio. De esta forma, en el caso de la monitorización, simplemente se comprueba que el servicio esté levantado con un,
systemctl status ttrss-update.service
Este operación, tal y como explico en el episodio 70 del podcast se realiza cada 5 minutos. Cuando se produce un cambio del estado te manda un mensaje de Telegram. Aunque en principio puedes optar por cualquier otro sistema de información, a mi, es el que actualmente me resulta mas cómodo.
¿Que es esto del cambio de estado? La primera vez que ejecuta la monitorización, se guarda el estado de cada uno de los servicios y elementos monitorizados. A partir de ahí, cada vez que realiza la revisión, detecta una divergencia entre el estado guardado y el estado actual, te modifica el estado y lo guarda.
Es precisamente en este punto donde va a intervenir la autoremediación. Si se produce un cambio de estado, pon que sea que tu servicio pase a caído, tiene que realizar una autoremediación. Es decir, en este caso en particular, intentará levantar el servicio,
sudo systemctl start ttrss-update.service
Si lo consigue, en el siguiente ciclo de la monitorización te avisará de que el servicio ya está levantado. Todos tus problemas resueltos, sin que haya sido necesaria tu intervención.
De nuevo insistir que aunque el podcast está enfocado en la Raspberry Pi, lo cierto es que tanto el sistema de monitorización como la autoremedicación se puede aplicar a cualquier servidor o máquina.
Otras autoremediaciones para la Raspberry
Para este primer episodio sobre autoremediaciones para la Raspberry yo creo que es suficiente, y mas teniendo en cuenta que estamos en pleno mes de agosto.
Sin embargo, como te puedes imaginar, esto se puede complicar hasta límites insospechados. Tanto para servicios locales como para servicios remotos.
En el caso de los servicios locales tan solo tienes que establecer un script que actue sobre el servicio en cuestión para que lo ponga en funcionamiento de nuevo. Ya sea levantar un Nginx, un Mariadb o lo que tu quieras.
Lo mejor, es que la monitorización y la remediación la realices desde la propia máquina. Sin embargo, esto no siempre puede ser así. Para estos casos puedes lanzar los procesos tanto de monitorización como de remediación.
Para este caso último caso, el de realizar monitorización y remediación desde remoto, puedes utilizar Paramiko. Se trata de una implementación de SSH que te proporciona las funcionalidades tanto de servidor como de cliente.
Recientemente lo he estado utilizando para comprobar que desde determinadas máquinas se podía acceder a otras máquinas, y la verdad es que es realmente cómodo. Y sobre todo para lo que estoy comentando te puede ir fantástico.
Así utilizando esta librería puedes ejecutar desde remoto las remediaciones que he estado comentando. Por ejemplo, podrías levantar un Nginx sin que tu tengas que acceder a la máquina y sin que la máquina esté monitorizada en local.