Cómo Implementar la Pila ELK en Kubernetes

La pila ELK es una abreviatura de Elasticsearch, Logstash y Kibana, que ofrece las siguientes capacidades:

  • Elasticsearch: un motor de búsqueda y análisis escalable con una herramienta de análisis de registros y una base de datos formada por aplicaciones, perfecta para aplicaciones basadas en datos.
  • Logstash: una herramienta de procesamiento de registros que recoge registros de diversas fuentes, los parsea y los envía a Elasticsearch para su almacenamiento y análisis.
  • Kibana: Una potente herramienta de visualización que te permite explorar y analizar los datos almacenados en Elasticsearch mediante gráficos, tablas y paneles interactivos.

La Infraestructura de Elasticsearch

Antes de sumergirnos en la implementación de la pila ELK, primero comprendamos los componentes críticos de la infraestructura de Elasticsearch:

  • Nodos: Elasticsearch se ejecuta en servidores dedicados llamados nodos, que actúan como binarios para tareas de búsqueda y análisis.
  • Fragmentos (Shards): el espacio de la base de datos se divide lógicamente en fragmentos, lo que permite una mayor accesibilidad y distribución de datos.
  • Índices: Elasticsearch organiza los datos almacenados en índices, facilitando la gestión eficiente de datos.
  • Configurar la pila ELK: necesitarás un clúster de Kubernetes para implementar la pila ELK en Kubernetes. Si ya tienes uno, puedes proceder con la implementación. Alternativamente, puedes utilizar el repositorio de GitHub proporcionado con archivos de Terraform para configurar un clúster de Kubernetes.
  • Implementación de Elasticsearch: Utilizando gráficos Helm, podemos implementar Elasticsearch de manera eficiente. Modifique el archivo de valores para adaptarlo a sus requisitos específicos, como ajustar el número de réplicas o activar/desactivar ciertas características. Descárguelos desde Artifactory Hub.

values-elasticsearch.yaml

YAML

clusterName: "itsyndicateblog"
replicas: 1 
minimumMasterNodes: 1 
createCert: true
secret:
  enabled: true
  password: "" # generated randomly if not defined
image: "docker.elastic.co/elasticsearch/elasticsearch"
imageTag: "8.5.1"
resources:
  requests:
    cpu: "200m"
    memory: "500Mi"
  limits:
    cpu: "300m"
    memory: "1Gi"
ingress:
  enabled: false # enable ingress only if you need external access to elasticsearch cluster
  hosts:
    - host: elastic.itsyndicate.org
      paths:
        - path: /

Una vez que haya personalizado los valores, use el gráfico Helm para instalar Elasticsearch:

Shell

helm install elasticsearch -f elasticsearch-values.yaml <chart-name>

Nota: Asegúrese de haber configurado los controladores (EBS o EFS) para volúmenes persistentes.

Implementación de Kibana

La implementación de Kibana es sencilla utilizando gráficos Helm. En el archivo de valores, especifique la URL y el puerto del servicio de Elasticsearch:

values-kibana.yaml

YAML

elasticsearchHosts: "https://elasticsearch-master:9200"
enterpriseSearch:
  host: "https://elasticsearch-master:9200"
Shell

helm install kibana -f kibana-values.yaml <chart-name>

Compruebe si Kibana está instalado correctamente, redireccione el puerto del contenedor a la red local (estoy usando K8s Lens)

Implementación de Logstash y Filebeat

Para gestionar los registros de manera efectiva, utilizamos Logstash y Filebeat. Filebeat recolecta registros de diversas fuentes y Logstash los procesa y los envía a Elasticsearch.

Implementar Logstash

  1. Clonar repositorio con configuraciones: logstash-k8s
  2. Diríjase a tf-modules/eks/manifests/logstash-k8s
  3. Edita el archivo configmap.yaml
    1. agrega el host, el usuario y la contraseña de Elasticsearch (puedes obtenerlos del recurso “Secrets” de Kubernetes)
  4. Aplica las plantillas:
Shell

kubectl apply -f logstash-k8s -n $CHANGE_TO_ELASTIC_NS

Despliega Filebeat

  1. Asegúrate de que la configuración de Filebeat apunte a los archivos de registro correctos en tus nodos. Por lo general, en EKS, es la carpeta /var/log/containers. Para verificarlo, inicia sesión en uno de tus nodos y navega al directorio /var/log/containers; si no hay archivos, intenta cambiar el directorio.
  2. En caso de que todo esté correcto, aplica las plantillas de Kubernetes:
Shell

kubectl apply -f filebeat-k8s

Despliega una Aplicación Simple para Ver Cómo Fluyen los Registros en Elasticsearch

  1. Ingresa al directorio eks/manifests desde el repositorio clonado.
  2. Ejecuta el comando:
Shell

kubeclt apply -f app -n default

Después de completar la instalación, vuelve a visitar Kibana y crea un índice de Elasticsearch.

Creando un índice:

Crea el patrón de índice de logstash: logstash-[namespace]* 

Ahora, deberías ver los registros de la aplicación desplegada. Si no es así, realiza algunas solicitudes a esta aplicación y trata de solucionar el problema; consulta el video guía si necesitas ayuda.

Conclusión

Has desplegado con éxito la pila ELK en Kubernetes, potenciando tus aplicaciones con un análisis de registros sólido y percepciones basadas en datos. Elasticsearch, Logstash y Kibana manejan sin problemas flujos de datos masivos y proporcionan visualizaciones significativas.

Ahora que tienes una solución de registro robusta, puedes gestionar tus registros de manera eficiente y obtener percepciones valiosas. ¡Feliz análisis!

Gracias por leer esta guía sobre el despliegue de la pila ELK. No dudes en contactar si tienes alguna pregunta o requieres asistencia adicional. ¡Feliz codificación!

Source:
https://dzone.com/articles/how-to-deploy-the-elk-stack-on-kubernetes