TheElastic Stack puede monitorear una variedad de datos generados por contenedores Docker. En esta guía, configurará un Linode para analizar y visualizar registros y métricas de contenedores utilizando herramientas como Kibana, Beats y Elasticsearch. Una vez que haya terminado, podrá configurar su sistema para recopilar datos para contenedores adicionales automáticamente.
Antes de comenzar
-
Si aún no lo ha hecho, cree una cuenta de Linode y una instancia de cómputo. Consulte nuestras guías Introducción a Linode y Creación de una instancia informática.
-
Siga nuestra guía de configuración y protección de una instancia informática para actualizar su sistema. También puede establecer la zona horaria, configurar su nombre de host, crear una cuenta de usuario limitada y fortalecer el acceso SSH.
-
Siga nuestra Guía UFW para instalar y configurar un firewall (UFW) en su sistema basado en Ubuntu o Debian, o nuestra Guía FirewallD para sistemas basados en rpm o CentOS. Después de configurar el firewall, asegúrese de que los puertos necesarios estén abiertos para continuar con las conexiones a través de SSH para el resto de esta guía:
sudo ufw allow ssh
-
Instale Docker en su Linode siguiendo la guía de instalación del proyecto Docker.
Nota Los servicios de esta guía se vinculan solo con el host local, lo que significa que no se puede acceder a ellos fuera de Linode desde hosts remotos. Esto garantiza que la API REST de Elasticsearch permanezca privada para localhost y no sea accesible de forma remota desde Internet. Si toma medidas más allá de esta guía para configurar aún más Elasticsearch y los componentes relacionados, asegúrese de que su firewall esté en su lugar y bloquee correctamente el tráfico a los nodos de Elasticsearch y Kibana desde Internet (puertos 9200 y 9300 para Elasticsearch y 5601 para Kibana) para mantenerlos. correctamente asegurado.
Instalar componentes de Elastic Stack
Antes de configurar su sistema para monitorear contenedores en ejecución, primero instale los componentes necesarios para recopilar y enviar registros y métricas a Elasticsearch.
Distribuciones basadas en Debian
Configurar el elástico apt
repositorio e instalar los paquetes necesarios y sus dependencias.
-
Instale la clave oficial de firma del paquete APT de Elastic:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
-
Instale el
apt-transport-https
paquete, que se requiere para recuperardeb
paquetes servidos a través de HTTPS:sudo apt-get install apt-transport-https
-
Agregue la información del repositorio APT a la lista de fuentes de su servidor:
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
-
Actualizar la lista de paquetes disponibles:
sudo apt-get update
-
Antes de instalar Elasticsearch, el tiempo de ejecución de Java debe estar presente. En sistemas como Ubuntu 18.04 LTS, usando
default-jre-headless
paquete instala un tiempo de ejecución de Java compatible:sudo apt-get install default-jre-headless
-
Instale Elasticsearch, Kibana, Filebeat y Metricbeat:
sudo apt-get install elasticsearch kibana filebeat metricbeat
Distribuciones basadas en Redhat
Configurar las rpm
repositorio para yum
y herramientas de embalaje relacionadas.
-
Confíe en la clave de firma de Elastic:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
-
Cree una configuración de repositorio de yum para usar el repositorio de Elastic yum:
- Archivo:/ etc/yum.repos.d/elasticsearch.repo
1 2 3 4 5 6 7 8 9
[elasticsearch-6.x] name=Elastic repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
Actualice el
yum
caché para garantizar que los nuevos paquetes estén disponibles:sudo yum update
Antes de instalar Elasticsearch, el tiempo de ejecución de Java debe estar presente. En CentOS, por ejemplo, se puede instalar un tiempo de ejecución Java compatible usando un paquete OpenJDK sin interfaz gráfica:
sudo yum install java-11-openjdk-headless
Instale Elasticsearch, Kibana, Filebeat y Metricbeat:
sudo yum install elasticsearch kibana filebeat metricbeat
Configure el Elastic Stack
Para descubrir y capturar correctamente las métricas de los contenedores, se debe configurar cada componente de la pila de Elastic.
Búsqueda elástica
En el archivo
/etc/elasticsearch/jvm.options
dos valores que comienzan con-Xm
debe ser sin comentar. Esta configuración indica a la JVM que asigne una cantidad específica de memoria. El valor recomendado para esta configuración es el 50 % de la RAM disponible del sistema. Por ejemplo, en un sistema con 1G de RAM, esta configuración debería ser:- Archivo:/ etc/elasticsearch/jvm.options
1 2
-Xms512m -Xmx512m
-
Antes de iniciar Elasticsearch, instale algunos complementos necesarios para procesar geoip y datos de agente de usuario.
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-user-agent sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-geoip
-
Con esta configuración en su lugar, inicie
elasticsearch
servicio.sudo systemctl start elasticsearch
-
Espere un breve período de tiempo para que se inicie Elasticsearch, luego verifique que Elasticsearch responda a través de la API REST:
curl http://localhost:9200
Debería ver un resultado similar al siguiente:
{ "name" : "iQEk_-M", "cluster_name" : "elasticsearch", "cluster_uuid" : "tQeLgbKrTNOp2AoqdmTItw", "version" : { "number" : "6.5.4", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "d2ef93d", "build_date" : "2018-12-17T21:17:40.758843Z", "build_snapshot" : false, "lucene_version" : "7.5.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
Elasticsearch está listo para indexar documentos.
Kibana
La mayoría de las configuraciones predeterminadas de Kibana son adecuadas para los propósitos de esta guía. No son necesarios cambios de configuración; inicia el
kibana
servicio.sudo systemctl start kibana
Filebeat
Utilice la ventana acoplable
docker
entrada para habilitar Filebeat para capturar contenedores iniciados dinámicamente. Esto alivia la necesidad de especificar las rutas de los archivos de registro de Docker y, en su lugar, permite que Filebeat descubra los contenedores cuando se inician.-
Agregue lo siguiente cerca de la parte superior del archivo de configuración de Filebeat para instruir al
filebeat
daemon para capturar los registros del contenedor de Docker. Estas líneas deben ingresarse bajo la clave de configuraciónfilebeat.inputs
:- Archivo:/ etc/filebeat/filebeat.yml
1 2 3 4 5 6
filebeat.inputs: - type: docker containers.ids: - '*' processors: - add_docker_metadata: ~
Descomente la siguiente línea y cambie su valor a
true
, que permitirá a Filebeat crear paneles de Kibana asociados para registros de contenedores capturados:- Archivo:/ etc/filebeat/filebeat.yml
1
setup.dashboards.enabled: true
Finalmente, agregue lo siguiente
autodiscover
configuración hasta el final defilebeat.yml
archivo:- Archivo:/ etc/filebeat/filebeat.yml
1 2 3 4
filebeat.autodiscover: providers: - type: docker hints.enabled: true
Habilite el
nginx
módulo, que se utilizará más adelante en este tutorial:sudo /usr/bin/filebeat modules enable nginx
El resto del archivo de configuración indicará a Filebeat que envíe registros a la instancia de Elasticsearch que se ejecuta localmente, que se puede dejar sin cambios. Iniciar Filebeat:
sudo systemctl start filebeat
ritmométrico
Al igual que Filebeat, configure Metricbeat de manera similar para descubrir dinámicamente contenedores en ejecución para monitorear.
-
Metricbeat utiliza un módulo para recopilar métricas de contenedores. Ejecute el siguiente comando para habilitar
docker
ynginx
módulos:sudo /usr/bin/metricbeat modules enable docker sudo /usr/bin/metricbeat modules enable nginx
-
Descomente la siguiente línea y cambie su valor a
true
, que permitirá a Metricbeat crear paneles de Kibana asociados para registros de contenedores capturados:- Archivo:/ etc/metricbeat/metricbeat.yml
1
setup.dashboards.enabled: true
El resto del archivo de configuración indicará a Metricbeat que envíe registros a la instancia de Elasticsearch que se ejecuta localmente, que se puede dejar sin cambios. Ahora se puede iniciar Metricbeat:
sudo systemctl start metricbeat
Visualización de registros y métricas de contenedores
El siguiente ejemplo demuestra cómo Filebeat y Metricbeat capturan automáticamente los datos del contenedor a los que se puede acceder desde Kibana.
-
Para comenzar, ejecute un contenedor nginx Docker simple en su Linode.
sudo docker run --name nginx -P -d --label co.elastic.logs/module=nginx nginx
- Este comando ejecutará el servidor web en segundo plano y expondrá el servicio HTTP de escucha en un número de puerto aleatorio.
- La
--label
El argumento es una sugerencia para permitir que Filebeat analice automáticamente el formato de registro de ciertos tipos de contenedores, que en este caso es nginx.
-
Para abrir una conexión segura a Kibana, abra un túnel SSH al puerto 5601 en su Linode.
ssh -L 5601:localhost:5601 <[email protected]>
- Reemplazar
<[email protected]>
con el nombre de usuario y la dirección IP de tu Linode. - Esto reenvía el puerto 5601 localmente al puerto 5601 en tu Linode.
- Una guía completa para usar túneles SSH en una variedad de plataformas está disponible en nuestra guía Crear un túnel SSH para MySQL.
- Reemplazar
-
Vaya a
http://localhost:5601
en su navegador, que mostrará la siguiente página de destino inicial para Kibana. -
Haga clic en Administración enlace en la barra lateral inferior izquierda. Se mostrará la página siguiente. Luego, haga clic en Patrones de índice para ingresar a la página de configuración de Patrón de Índice.
-
Los patrones de índice dictan cómo Kibana entiende los índices que están presentes en Elasticsearch. Para que algunas visualizaciones se muestren correctamente, primero se debe configurar un patrón de índice predeterminado. Seleccione filebeat-* en el lado izquierdo de la página para configurar el patrón de índice filebeat-*.
-
Haz clic en el icono de estrella en la esquina superior derecha de la página para establecer este patrón de índice como predeterminado en Kibana.
Kibana ahora está correctamente configurado con un patrón de índice predeterminado.
-
Filebeat y Metricbeat están configurados para configurar Elasticsearch y Kibana automáticamente, de modo que los paneles y los patrones de índice se carguen y estén listos para usarse. Haga clic en Panel de control en la barra lateral izquierda, que muestra la siguiente página.
-
En la barra de búsqueda, escriba "contenedor" para mostrar paneles rellenados previamente para los contenedores del sistema. Haga clic en Resumen de [Metricbeat Docker] enlace.
-
La visión general de [Metricbeat Docker] Se cargará el panel de control, que muestra varios aspectos de las métricas de contenedores que se están ejecutando actualmente. El panel muestra una lista de contenedores en ejecución, el número total de contenedores en ejecución, en pausa y detenidos, así como métricas sobre el consumo de recursos del contenedor.
Desplazándose hacia abajo, también muestra gráficos que indican el uso de recursos del contenedor a lo largo del tiempo, incluida la CPU, la memoria y la actividad de la red.
-
Antes de pasar a otras visualizaciones de Kibana, genere algo de actividad de registro desde nginx enviando solicitudes HTTP al contenedor de escucha. Primero, encuentre qué puerto está escuchando el contenedor para solicitudes al usar
docker
comando:docker ps
Debería ver un resultado similar al siguiente:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3f0c6d284f1f nginx "nginx -g 'daemon of…" 23 minutes ago Up 23 minutes 0.0.0.0:32769->80/tcp nginx
A partir de este resultado, sabemos que se puede acceder al servidor HTTP emitiendo solicitudes al puerto 32769, que se reenvía al puerto 80 en el contenedor. El puerto de su sistema puede ser diferente.
-
Envía varias solicitudes a este puerto usando el
curl
comando, reemplazando<port>
con el número encontrado en el paso anterior:for i in $(seq 1 10) ; do curl localhost:<port> ; done
-
Ahora hay varios registros en Kibana para este contenedor. Haz clic en Descubrir en la barra lateral izquierda en Kibana. Muestra la siguiente pantalla.
- El histograma cerca de la parte superior de la página indica el número total de registros de contenedores a lo largo del tiempo.
- La tabla debajo del gráfico contiene el contenido de los registros individuales.
- Al hacer clic en las flechas a la izquierda de la marca de tiempo de cada registro, se mostrará la información de cada registro capturado.
-
Prueba a volver a emitir el
for ...
comando para enviar otros diezcurl
solicitudes al contenedor y observe cómo cambia el histograma de registro para reflejar los nuevos registros. -
Haz clic en Panel de control en la barra lateral izquierda, luego haga clic en él por segunda vez para ingresar a la pantalla de selección del tablero. Busque "nginx" en la barra de búsqueda.
-
Haga clic en Registros de acceso y errores de [Filebeat Nginx] enlace, que mostrará un tablero con una cantidad de visualizaciones relacionadas con la actividad de nginx.
Módulos Adicionales
Este tutorial ha demostrado cómo Filebeat y Metricbeat pueden capturar automáticamente métricas y registros de contenedores sin la necesidad de configurar explícitamente rutas o configuraciones de archivos de registro. Además de los ejemplos de nginx presentados aquí, los enlaces adicionales proporcionados a continuación enumeran otros módulos que se pueden cargar en Filebeat y Metricbeat para otros servicios.
Más información
Es posible que desee consultar los siguientes recursos para obtener información adicional sobre este tema. Si bien estos se proporcionan con la esperanza de que sean útiles, tenga en cuenta que no podemos garantizar la precisión o la puntualidad de los materiales alojados externamente.
- Módulos Filebeat
- Módulos de Metricbeat
- Monitoreo de contenedores elásticos
- Referencia de la línea de comandos de Docker
Docker Instale WordPress con LEMP Stack en Ubuntu 20.04
Instale phpMyAdmin con LAMP Stack en Ubuntu 18.04 LTS
Cómo instalar LAMP Stack en CentOS 8
Cómo instalar WordPress con LAMP Stack en Ubuntu 20.04
Instale WordPress con LEMP Stack en Ubuntu 20.04
Trabajar con Docker Containers desde la línea de comandos
-