Monitoreo con Docker: contenedores y microservicios

Cuando se trata de eso, hay muchos tipos diferentes de monitoreo con Docker, pero la mayoría de las personas no se dan cuenta de cuántas capas de monitoreo se requieren para comprender el rendimiento y el estado de los servicios de Docker.

¿Qué es Docker?

Docker … usa la virtualización a nivel de SO para entregar software en paquetes llamados contenedores. Los contenedores están aislados entre sí y agrupan su propio software, bibliotecas y archivos de configuración; pueden comunicarse entre sí a través de canales bien definidos. Todos los contenedores se ejecutan mediante un único núcleo de sistema operativo y, por lo tanto, utilizan menos recursos que las máquinas virtuales. Wikipedia )

Dicho esto, Docker es un conjunto de herramientas, encabezado por el proceso Daemon real que utiliza características del Kernel de Linux (como espacios de nombres y CGroups ) para ejecutar procesos completamente aislados dentro del mismo proceso del Kernel. Eso demuestra ser una forma extremadamente ligera de “virtualización”, también conocida como virtualización a nivel de sistema operativo . Existen tecnologías similares en otros sistemas operativos, como Solaris Zones y FreeBSD Jails .

Además, Docker proporciona las herramientas necesarias para crear, agrupar, gestionar y proporcionar de forma pública o privada las imágenes (sistema de archivos) necesarias para dichos contenedores que se ejecutan supervisados ​​por el demonio de Docker.
Desarrollado originalmente por Docker Inc., Docker está integrado con muchos servicios y productos diferentes como motor de tiempo de ejecución subyacente para operar los contenedores. Los sistemas que utilizan Docker incluyen Kubernetes , OpenShift , Docker’s Swarm y otros.

Monitoreo básico de Docker

El monitoreo de Docker, sin importar si se usa puramente o integrado en uno de los sistemas mencionados anteriormente, debe incluir aspectos de salud, rendimiento y uso de recursos de los contenedores. Las fallas en el demonio influyen directamente en la salud del sistema en su conjunto. Hay muchas formas de supervisar los indicadores básicos de Docker. Docker Stats: la herramienta más fácil de usar y monitorear los contenedores de Docker es Docker Stats, que está integrado en la CLI de Docker (interfaz de línea de comandos) real. Replicando gran parte del estilo conocido de las famosas herramientas de Linux como top o iotop, proporciona información sobre los nombres de los contenedores, la CPU, la memoria y el uso de io (dispositivo de bloque y red).

cAdvisor y Prometheus: la información de tiempo de ejecución junto con otras métricas importantes se pueden recopilar con cAdvisor y enviar a un sistema como Prometheus . La combinación de esos dos componentes es una configuración muy típica, especialmente debido a la profunda integración de cAdvisor en Kubernetes.

Fuente: Cómo supervisar los contenedores de Docker con cAdvisor [Parte 1]

Eventos de Docker: una parte que a menudo se pasa por alto en el monitoreo de contenedores de Docker son los eventos de Docker , que brindan información sobre lo que sucede con los servicios. Un servicio que muere constantemente es ciertamente alarmante y, por lo tanto, esos eventos deben capturarse y analizarse.

Docker y microservicios

El acceso a las métricas de contenedores de Docker y Docker mediante herramientas de supervisión de código abierto (OSS) es útil, pero es muy probable que olvide información importante, como eventos o registros de contenedores. Además, se deja mucho trabajo en manos del usuario cuando intenta comprender el impacto real de los servicios que se ejecutan supervisados ​​por Docker y su impacto en los recursos entre sí. Otra cosa importante a tener en cuenta es que la infraestructura para recopilar, almacenar y analizar las métricas (a menudo Prometheus) debe configurarse y administrarse. Prometheus, aunque es bueno, no fue diseñado para escalar horizontalmente para el monitoreo a gran escala, así que prepárese para administrar múltiples instancias a lo largo del tiempo.

Para complicar aún más las cosas, no se puede correlacionar las métricas de Docker y los contenedores con datos (como métricas o seguimientos distribuidos) de los microservicios o aplicaciones que se ejecutan dentro de los contenedores cuando se utilizan las herramientas estándar de OSS disponibles. Como resultado, el usuario se queda solo con un conjunto de métricas independientes, desconectadas entre sí y, a menudo, distribuidas en sistemas de monitoreo dispares. Unirlos se asemeja a un rompecabezas. Conectar los puntos durante una situación de interrupción, así como llegar a la causa raíz, es un proceso innecesariamente complicado y largo y aumenta significativamente el tiempo de resolución.

Monitoreo de Docker Full Stack con Instana

Instana detecta y supervisa automáticamente los demonios y contenedores de Docker:

  • El uso de recursos
  • Eventos de contenedores
  • Contenedores recién iniciados o detenidos

Instana descubre automáticamente las instancias de Docker que se ejecutan en el host de Docker o en entornos administrados como Kubernetes. Además, Instana Agent analiza cualquier contenedor Docker recién iniciado o que ya se esté ejecutando en busca de tecnologías compatibles e inmediatamente comienza a monitorear esos componentes también.

Después de la instalación de Instana Agent, la configuración suele ser automática. La instalación de Instana Agent depende del sistema que se va a monitorear y varía desde una instalación de una sola línea con máquinas virtuales o hosts físicos, hasta una única instalación de Helm dentro de Kubernetes u OpenShift. El asistente de instalación dentro de la interfaz web de Instana le brinda al usuario una selección de técnicas de configuración por entorno.

Es importante comprender que Instana no solo monitorea el demonio de Docker y las métricas o eventos del contenedor, sino que también comienza a monitorear inmediatamente cada servicio implementado usando los contenedores. Esto proporciona visibilidad de un extremo a otro en todo el conjunto del sistema y ofrece un seguimiento distribuido automático de cada solicitud en todos los servicios.

Una vez que se inicia el agente de Instana, todos los contenedores bajo la supervisión del demonio de Docker en el host dado se escanean en busca de tecnologías compatibles, se configuran automáticamente para ser monitoreados y se agregan a Instana. La implementación de agente único por host de Instana mantiene la sobrecarga de monitoreo extremadamente baja y simplifica enormemente el proceso general de instalación y mantenimiento.

El uso de Instana para recopilar todas las métricas y los seguimientos importantes brinda el beneficio de que Instana une toda la información para brindar una vista completa de extremo a extremo de las dependencias contextuales y el impacto entre los diferentes componentes.

Con Instana no es necesario determinar manualmente qué degradación del rendimiento en un servicio está relacionada con la contención de recursos en el host que ejecuta Docker. Instana determina automáticamente las relaciones entre todos los componentes del sistema y registra continuamente qué instancia de contenedor se estaba ejecutando en qué host en cualquier momento específico. Eso ofrece correlaciones como “varios servicios en el mismo host Docker tienen problemas de rendimiento al mismo tiempo debido a la congestión de la memoria por uso”.

Cada tecnología supervisada por Instana, incluida la supervisión de Docker, proporciona descubrimiento automático y continuo, mapeo de dependencias, supervisión de métricas, detección de anomalías y análisis basados ​​en filtros en toda la pila. Juegue con el monitoreo de Docker de Instana utilizando nuestro entorno de observabilidad de sandbox interactivo hoy.

Referencia:

Chris Engelbert, INSTANA(2020) Docker Monitoring – Containers and Microservices.
Recuperado de: https://www.instana.com/blog/docker-monitoring-containers-and-microservices/



Deja una respuesta

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

Top