Configuración de Docker Compose para Elasticsearch + Kibana Logging Stack
Cuándo usar este Stack
Implementa este stack cuando requieras observabilidad centralizada, análisis forense y visualización de logs/métricas en tiempo real para arquitecturas de microservicios o sistemas distribuidos. Es ideal para equipos que necesitan indexación y capacidades de búsqueda complejas (vía Elasticsearch) combinadas con dashboards interactivos (vía Kibana), ya sea recibiendo logs directamente mediante APIs, agentes ligeros (FluentBit/Beats) o integraciones directas a nivel de aplicación.
Variables de Entorno Críticas (Producción)
ELASTIC_PASSWORD(Elasticsearch): Define la contraseña del superusuario por defectoelastic. Dejarla con valores predeterminados o sin configurar expone el cluster a compromisos totales.KIBANA_SYSTEM_PASSWORD/ELASTICSEARCH_PASSWORD(Elasticsearch & Kibana): Credencial utilizada por la cuenta internakibana_systempara la autenticación y handshake seguro entre Kibana y el cluster de Elasticsearch.xpack.security.encryptionKey/xpack.encryptedSavedObjects.encryptionKey(Kibana): Clave de 32 caracteres mínimo para cifrar datos sensibles almacenados en Kibana (credenciales de integraciones, dashboards privados y alertas). Debe persistirse para evitar la pérdida de acceso a objetos cifrados tras reiniciar el contenedor.
Consejo de Seguridad y Rendimiento
- Rendimiento (Host & JVM): Configura en el host
sysctl -w vm.max_map_count=262144de forma persistente para evitar caídas por agotamiento de memoria virtual. Dentro del contenedor, asigna medianteES_JAVA_OPTSun heap size equivalente a exactamente el 50% de la RAM asignada al contenedor (ej.-Xms4g -Xmx4g), dejando el 50% restante libre para el Page Cache del sistema operativo (fundamental para Lucene). - Seguridad (Networking): Nunca expongas el puerto
9200de Elasticsearch a internet. Mantén Elasticsearch dentro de una red interna de Docker (bridgeaislado) accesible únicamente por Kibana, y expón únicamente Kibana (puerto5601) protegido detrás de un Reverse Proxy (NGINX/Traefik) con TLS y autenticación corporativa (OAuth2/SSO).
Checklist de Seguridad antes de desplegar
- Cambiar las contraseñas por defecto en el archivo .env
- Mapear volúmenes persistentes en el VPS
- Configurar las reglas de firewall para los puertos requeridos