main

Nube & VirtualizaciónTecnología

Monitorizacion Docker: Retos derivados de la naturaleza de los contenedores

febrero 21, 2018 — by Alexander La rosa0

1 Star2 Stars3 Stars4 Stars5 Stars
(10 votes, average: 5,00)
Cargando…

El post está disponible también en : Inglés

monitorizacion docker

Monitorizacion Docker: Retos ligados a los contenedores y los microservicios.

Desde su lanzamiento oficial en 2013, Docker ha registrado un crecimiento anual significativo en su número de usuarios. Esta es una buena razón por la que la mayoría de las herramientas de monitorización se han esforzado en implementar soluciones para la monitorización de muelles.

Pero, ¿la adopción de la tecnología Docker implica que la forma en que hacemos la monitorización de servidores y aplicaciones ha de ser revisada?

En este artículo proponemos revisar los fundamentos de Docker y tratar de identificar las características de los ambientes contenedorizados que requieren cambios en las prácticas de monitorización previamente establecidas.

Docker es un proyecto de código abierto que construye y ejecuta aplicaciones distribuidas en contenedores de software virtuales. La tecnología de contenedores estaba disponible antes del proyecto Docker, pero ellos fueron capaces de dar forma a una estructura lo suficientemente simple como para hacer que los contenedores fueran viables.

Un contenedor Docker, a diferencia de una máquina virtual, no requiere una plataforma ni un sistema operativo. De hecho, podemos tener varios contenedores Docker en el mismo servidor físico utilizando el mismo sistema operativo.

monitorizacion docker

El motor de Docker permite crear, iniciar, detener y distribuir contenedores.

Las imágenes son plantillas de sólo lectura que permiten la creación de contenedores. Una imagen es una representación estática de la aplicación o servicio que incluye su configuración, entorno y dependencias.

Un contenedor es una instancia de una imagen. Cada contenedor ejecuta un proceso de aplicación. Todo lo que hacemos en un contenedor queda en ese contenedor y no afecta a la imagen de ninguna manera. De hecho, las imágenes una vez creadas son inmutables.

Los desarrolladores tienen que mantener todas las imágenes en un registro que funcione como una biblioteca de imágenes, o pueden usar registros públicos.

Uno de los puntos clave del éxito de Docker es el servicio de registro público llamado Docker Hub. En este sitio basado en la nube cualquiera puede encontrar y utilizar imágenes para muchos productos y proyectos como PostgreSQL, Ubuntu, MySQL, etc. Del mismo modo, cualquiera puede subir sus propias imágenes y compartirlas con la comunidad Docker.

Un clúster es una colección de hosts Docker que se exponen como si fuera un solo host Docker virtual. Existen muchas herramientas especialmente diseñadas para establecer y gestionar clusters Docker: Docker Swarm o Kurbenetes son conocidos como orquestadores de Docker y nos permite gestionar el balanceo de carga, el descubrimiento de servicios y definir estructuras de alta disponibilidad.

Finalmente tenemos que revisar un concepto bien relacionado con la tecnología Docker y de contenedores, que es la arquitectura de Microservicios.

La arquitectura de Microservicios es una arquitectura de desarrollo en la que una aplicación se estructura como una colección de servicios de precisión conectados por protocolos ligeros como https.

Este estilo de arquitectura es relevante aquí porque su implementación basada en contenedores Docker es cada vez más popular.

Cuando tratamos de definir las estrategias que guiarán la forma en que haremos la monitorización de Docker, debemos considerar algunos retos desde la propia naturaleza de este tipo de entornos:

Desafíos debidos a la transitoriedad de los contenedores

En las aplicaciones monolíticas cliente-servidor, pensamos en cubrir la propia aplicación más todos los servidores implicados y la plataforma comunicacional que los conecta.

Pero si nos preocupa el rendimiento de una aplicación desarrollada sobre arquitectura de microservicios y contenedores Docker, este enfoque podría no ser operativo.

Para este tipo de aplicaciones, los desarrolladores tienen la opción de crear fácilmente varios contenedores para implementar un microservicio y obviamente tienen la posibilidad de crear o eliminar contenedores cuando sea necesario.

Asimismo, los desarrolladores pueden crear esquemas de tolerancia a fallos en los que el proceso de un contenedor puede ser asumido fácilmente por otro.

Esta fugacidad de contenedores significa que no es necesario monitorizar cada contenedor. La vigilancia se centra en el host, los clusters de contenedores, los microservicios y las aplicaciones, además del interés regular por las redes y las comunicaciones.

Este enfoque se puede entender como una implementación o una adaptación de la monitorización orientada al servicio a entornos Docker y microservicios. Encontrará más información sobre la monitorización orientada al servicio de Pandora en su página web.

El desafío de las métricas

En los entornos más tradicionales estamos acostumbrados a pensar que cuantos más elementos monitoreemos y cuanto más diversos sean estos elementos, mayor será el número de métricas que necesitamos recolectar.

Con la introducción de contenedores Docker y los microservicios, el número de métricas a recoger nunca ha sido mayor.

Con la tecnología de contenedores Docker, se ha desarrollado un gran número de herramientas que nos permiten recoger métricas para el seguimiento. Sin embargo, podría ser un trabajo duro para evaluar esas herramientas teniendo en cuenta las ofertas del mercado, desde las herramientas de autoservicio hasta las basadas en la nube.

Recomendamos comenzar comprobando lo que puede hacer el mismo Docker Engine. Un comando simple como las estadísticas de docker puede traer información sobre la salud del host basada en el consumo de CPU, memoria RAM y disco y puede ser un buen punto de partida para que los datos sean tomados por una herramienta de terceros.

Antes de que pueda comenzar a analizar las herramientas de monitorización de Docker, es mejor que piense en si ya tiene una herramienta de monitorización instalada y en funcionamiento. Si lo hace, debe evaluar la forma en que esta herramienta asume el reto de monitorizar el ecosistema alrededor de los contenedores Docker. Podría ser útil comprobar la experiencia de otros profesionales de TI en el uso de esta herramienta de monitorización en entornos Docker.

Otro punto importante cuando estamos planeando obtener métricas es el orquestador utilizado. Siendo los orquestadores los componentes responsables de la creación y gestión de los clusters de contenedores, parece una buena idea establecer una relación más estrecha entre las herramientas de monitorización y los orquestadores, utilizando así todo el potencial de monitorización incluido en los orquestadores.

En este artículo de este mismo blog, podemos encontrar información sobre la combinación de Docker Swarm y Pandora FMS.

Si necesita evaluar las herramientas de monitorización de Docker considere elementos como métricas, interfaz gráfica e instalación en productos como cAdvisor, Prometheus, Agentless System Crawler, etc.

El desafío de dar solución a los problemas

En los entornos tradicionales, la resolución de problemas y la determinación de la causa raíz de un problema ya es una actividad difícil; con la introducción de contenedores y microservicios, podría ser aún más complicado.

Dado un evento, un aspecto clave es hacer un seguimiento exitoso y una correlación de bajo coste entre diferentes métricas y logs de un gran número de elementos.

Incluso el análisis de redes en este tipo de plataformas puede resultar difícil, ya que la tecnología Docker introduce un nuevo nivel de redes. Cuando se instala Docker, se crea una red por defecto para controlar qué contenedores pueden comunicarse con otros.

Muchas herramientas están reaccionando a este reto haciendo esfuerzos en el descubrimiento automático de la relación entre contenedores e introduciendo algoritmos de inteligencia artificial que aprenden patrones de uso y correlación entre diferentes eventos.

Por último, podemos decir que la definición de estrategias para una disciplina exitosa de la monitorización de Docker implica la reformulación de las prácticas tradicionales de monitorización, además de profundizar y acelerar ciertos caminos ya trazados.

Redactor técnico con más de diez años de experiencia manejando proyectos de monitorización. Es un auténtico apasionado del Yoga y la meditación.

Leave a Reply

Your email address will not be published. Required fields are marked *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.