610 - Actualizaciones y notificaciones en Docker

610 - Actualizaciones y notificaciones en Docker

¿Que pasa en tus contenedores y servidos #docker?¿Como puedes estar informado?¿Como recibir notificaciones?Te propongo distintas opciones para ello

1:25
-3:15

Estos últimos días me he dedicado a actualizar algunas de las aplicaciones que utilizo para interaccionar con Docker, y para estar al tanto de todo lo que sucede en mis contenedores Docker. Son herramientas, que he ido implementando en estos últimos años, y que he ido mejorando conforme mis conocimientos de Rust han ido aumentando progresivamente, y al revés. Quiero decir, son herramientas que me han ayudado a mejorar mis conocimientos de Rust. Es lo que en alguna que otra ocasión he comentado sobre las sinergias de realizar varias aplicaciones de forma simultánea. Así, en este episodio te quiero hablar sobre actualizaciones y notificaciones en Docker, y algunas otras cuestiones relativas al proyecto atareao.es.

Actualizaciones y notificaciones en Docker

Notificaciones

Hace ya algún tiempo que utilizo Uptime Kume para estar informado de si alguna de las webs que ahora mismo estoy gestionando está caída, o ha sufrido cualquier tipo de percance.

Se trata de un servicio autoalojado que me da información de parámetros como el tiempo de respuesta promedio, el tiempo activo tanto en las últimas 24 horas como en los últimos 30 días y el tiempo de validez del certificado.

Actualmente para notificarme cualquier evento, como por ejemplo si alguna página cae, estoy utilizando dos servicios OpenObserve y Matrix.

El primero, es mas como un ElasticSearch, y lo utilizo para tener un histórico de lo que va sucediendo. Esto me permite en un momento concreto, saber cuantas veces ha caído alguna de las páginas web, determinar la frecuencia y en su caso analizar las causas.

Matrix, el segundo, es una instancia de la conocida red social, aunque aquí, es una red social donde solo hay una persona. En este caso, tengo una app para Android que es la que se encarga de notificarme puntualmente de cualquier evento, dado, que el móvil lo llevamos siempre con nosotros.

La cuestión es que el pasado Domingo se actualizaron los sitios web con WatchTower, y algunos no se levantaron correctamente y dejaron de funcionar. El problema es que no me enteré, no me llegaron notificaciones de esto. Pero, como de costumbre era un problema de capa 8, había actualizado el token de Matrix así como las distintas salas y no lo había configurado ni en Uptime Kuma ni en el resto de sistemas de notificación que utilizo.

Inicialmente pensé que era debido a alguna actualización del propio Uptime Kuma, que había dejado de dar soporte a Matrix, pero finalmente me di cuenta del error. Este pensamiento inicial me llevó a actualizar HookBridge

Actualizando

HookBridge

HookBridge es un servicio que me permite enviar notificaciones a otros servicios. Básicamente hace de puente. Toda la configuración queda en esta herramienta, y los secretos, credenciales, etc., quedan a resguardo.

En este caso, tu configuras tantos servicios de terceros como necesites, por ejemplo, Telegram, Matrix, y los que quieras, y para mandar un mensaje, tan solo tienes que realizar un POST. Por ejemplo,

curl --request POST \
     --header "Content-Type: application/json" \
     --data '{"message": "hola"}' \
     localhost:6969/matrix_watchtower

Como ves, no le pasamos ningún tipo de secreto, ni credencial alguna.

En particular esta herramienta surgió como una necesidad para comunicar WatchTower con Matrix, que hasta el momento no lo había podido hacer.

Sobre la actualización

En este caso, además de actualizar los paquetes que utilizo en la aplicación, he modificado el Dockerfile, y he corregido y simplificado el código.

Matrixmail

Una vez actualizado Hookbridge y puesto en funcionamiento le había llegado el momento a
Matrixmail. Este es un proyecto inacabado, pero que espero concluir durante este año. Actualmente solo realiza la mitad de su propósito, y me queda la otra parte que está apunto.

Se trata de un servicio que hace, al igual que el anterior, de intermediario, pero en este caso con el email. De esta forma tu no necesitarías tener configurado un cliente de correo, sino que con este servicio lo tendrías resuelto… Claro, si estuviera acabado.

Este servicio se conecta a tu correo electrónico, aunque podrían ser varios, cada cierto tiempo según le hayas configurado, y comprueba si tienes algún nuevo correo, y en su caso, te envía una notificación a Matrix con la información relativa al emisor y el asunto.

Inicialmente enviaba el contenido, pero era imposible de seguir en cuanto llegaban varios correos. Una de las características que tengo pendiente añadir es que le pueda preguntar por el contenido.

De la misma forma, también está pendiente, y esta es la parte mas importante, que se pueda contestar a un correo directamente desde Matrix. Y lo cierto que no estoy tan lejos, porque actualmente ya está implementado el bot que responde ante determinadas acciones que haces. Por ejemplo, si le escribes !tiempo, te contesta, con la situación meteorológica actual. Pero, esto no es lo que quiero hacer, si no mas bien poder contestar a un correo.

Sobre la actualización

Aquí al igual que en el caso anterior, he actualizado los crates o paquetes, lo que me ha llevado a la necesidad de modificar parte del código, para adaptarlo a las nuevas versiones, y de la misma forma he actualizado el Dockerfile, alineando este con el de Hookbridge.

Den

Este es el último de los servicios de notificaciones que tengo implementado y que tiene mas relación con Docker que con los servicios que corren en Docker. Den es una herramienta que te notifica los eventos que se producen en Docker. Por ejemplo, cuando se cae o se levanta un contenedor, cuando se crea o se destruye un volumen, etc.

Actualmente te lo puede notificar a diferentes servicios como Telegram, Mattermost, Discord*, *OpenObserve*, *Matrix*, *Rabbitmq*, *Mosquitto*.

Se pueden notificar diferentes objetos, como son contenedores, imágenes, redes, volúmenes, y muchos otros. Y de cada uno de ellos, se puede notificar distintos eventos según quieras configurar.

Para notificar los eventos que se producen se utilizan plantillas jinja2, totalmente configurables y personalizables según tus necesidades, y todo en un sencillo archivo de configuración en formato yaml.

Sobre la actualización

Al igual que en en los casos anteriores, he actualizado todos los crates lo que me ha llevado a realizar varios cambios en el código para adaptarlo a las nuevas versiones. Y por otro lado, he actualizado el Dockerfile, como en el resto de casos.

Otras actualizaciones y correcciones

Sobre atareao.es

La primera de las actualizaciones que he realizado se refiere al propio atareao.es. Hace unos días, Antonio, por Telegram, me comentó que había intentado escribirme en atareao.es y le dio varios errores. Así que de nuevo, revisé los logs, y me encontré que en algún momento, en alguna actualización había dejado de funcionar.

Actualmente, en atareao.es, no utilizo el correo electrónico, sino que cualquier notificación va de nuevo a Matrix. De esta manera los mensajes que me envías no pasan por servicios de terceros. Y además, dado que utilizo Matrix y lo tengo en el móvil, estoy siempre informado al instante. Claro, siempre que funcione correctamente.

En este caso, tenía dos problemas. Por un lado la compatibilidad. Alguna de las funciones que utilizo han dejado de estar soportadas, y yo sin enterarme. Y por otro lado, el mismo problema que en el caso de Uptime Kuma. Actualización de token y de canales.

Esto ya está resuelto, así que si quieres escribirme, puedes probar el funcionamiento de este sistema desde la página de contacto de atareao.es y además disfrutar del fantástico y anónimo captcha.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *