Configuración de Docker Compose para Elasticsearch + Kibana Logging Stack
Cuándo usar esta combinación
Utiliza este stack para centralizar, indexar y visualizar registros (logs) y métricas de microservicios o infraestructura en tiempo real. Es la opción ideal cuando requieres capacidades avanzadas de búsqueda de texto completo (full-text search), análisis de trazas, detección de errores críticos y paneles de control interactivos para auditoría y observabilidad, desacoplando la persistencia de telemetría de las bases de datos transaccionales principales.
Variables de entorno críticas para producción
ELASTIC_PASSWORD(Elasticsearch): Define la contraseña inicial del superusuario nativoelastic. En producción jamás debe quedar con el valor por defecto para evitar exposición total de los índices.XPACK_ENCRYPTEDSAVEDOBJECTS_ENCRYPTIONKEY(Kibana): Clave criptográfica de mínimo 32 caracteres requerida para cifrar conectores, credenciales y alertas persistidas dentro de Kibana.ELASTICSEARCH_PASSWORD(Kibana): Credencial de autenticación que utiliza el usuario de servicio de Kibana (kibana_system) para comunicarse de forma segura con los nodos de Elasticsearch.
Consejo de Rendimiento y Seguridad (DevOps)
Bloqueo de memoria y asignación de Heap (JVM):
Configura bootstrap.memory_lock=true en Elasticsearch junto con los límites del sistema en Compose (ulimits.memlock: { soft: -1, hard: -1 }) para evitar que el sistema operativo mueva la memoria de la JVM al espacio de intercambio (swap). Complementa esto ajustando ES_JAVA_OPTS a un valor fijo para -Xms y -Xmx equivalente exactamente al 50% de la RAM disponible en el contenedor (sin exceder 31 GB), reservando el 50% restante para el cache del sistema de archivos del kernel (Lucene Page Cache). Asegúrate previamente de aplicar sysctl -w vm.max_map_count=262144 en el host.
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