90DaysOfDevOps/2022/es/Days/day82.md

103 lines
6.5 KiB
Markdown
Raw Normal View History

## Pila EFK
2022-10-23 23:38:19 +07:00
En la sección anterior, hablamos sobre la pila ELK, que utiliza Logstash como el recolector de registros en la pila. En la pila EFK, reemplazamos Logstash por FluentD o FluentBit.
2022-10-23 23:38:19 +07:00
Nuestra misión en esta sección es monitorear los registros de nuestro clúster de Kubernetes utilizando EFK.
2022-10-23 23:38:19 +07:00
### Descripción general de EFK
2022-10-23 23:38:19 +07:00
Desplegaremos lo siguiente en nuestro clúster de Kubernetes.
2022-10-23 23:38:19 +07:00
![](Images/Day82_Monitoring1.png)
La pila EFK es una colección de 3 software que se agrupan juntos, e incluyen:
2022-10-23 23:38:19 +07:00
- Elasticsearch: una base de datos NoSQL que se utiliza para almacenar datos y proporciona una interfaz para buscar y consultar registros.
2022-10-23 23:38:19 +07:00
- Fluentd: Fluentd es un recolector de datos de código abierto para una capa de registro unificada. Fluentd te permite unificar la recopilación y el consumo de datos para un mejor uso y comprensión de los datos.
2022-10-23 23:38:19 +07:00
- Kibana: una interfaz para administrar y estadísticas de registros. Es responsable de leer información de Elasticsearch.
2022-10-23 23:38:19 +07:00
### Implementando EFK en Minikube
2022-10-23 23:38:19 +07:00
Utilizaremos nuestro confiable clúster de minikube para implementar nuestra pila EFK. Comencemos iniciando un clúster con el comando `minikube start` en nuestro sistema. Estoy utilizando un sistema operativo Windows con WSL2 habilitado.
2022-10-23 23:38:19 +07:00
![](Images/Day82_Monitoring2.png)
He creado un archivo llamado [efk-stack.yaml](Days/Monitoring/../../Monitoring/EFK%20Stack/efk-stack.yaml) que contiene todo lo que necesitamos para implementar la pila EFK en nuestro clúster. Usando el comando `kubectl create -f efk-stack.yaml`, podemos ver que todo se está implementando.
2022-10-23 23:38:19 +07:00
![](Images/Day82_Monitoring3.png)
Dependiendo de tu sistema y si ya has ejecutado esto antes y tienes las imágenes descargadas, ahora deberías ver los pods en estado "Ready" antes de continuar. Puedes verificar el progreso con el siguiente comando: `kubectl get pods -n kube-logging -w`. Esto puede tardar unos minutos.
2022-10-23 23:38:19 +07:00
![](Images/Day82_Monitoring4.png)
El comando anterior nos permite mantener un ojo en las cosas, pero me gusta asegurarme de que todo esté bien ejecutando simplemente el siguiente comando: `kubectl get pods -n kube-logging`, para asegurarme de que todos los pods estén en funcionamiento.
2022-10-23 23:38:19 +07:00
![](Images/Day82_Monitoring5.png)
Una vez que todos nuestros pods estén en funcionamiento y en esta etapa, deberíamos ver:
2022-10-23 23:38:19 +07:00
- 3 pods asociados con Elasticsearch
- 1 pod asociado con Fluentd
- 1 pod asociado con Kibana
2022-10-23 23:38:19 +07:00
También podemos usar `kubectl get all -n kube-logging` para mostrar todo en nuestro espacio de nombres. Como se explicó anteriormente, Fluentd se implementa como un DaemonSet, Kibana como un deployment y Elasticsearch como un statefulset.
2022-10-23 23:38:19 +07:00
![](Images/Day82_Monitoring6.png)
Ahora que todos nuestros pods están en funcionamiento, podemos abrir una nueva terminal y usar el comando port-forward para acceder al panel de control de Kibana. Ten en cuenta que el nombre de tu pod será diferente al comando que se muestra aquí. `kubectl port-forward kibana-84cf7f59c-v2l8v 5601:5601 -n kube-logging`
2022-10-23 23:38:19 +07:00
![](Images/Day82_Monitoring7.png)
Ahora podemos abrir un navegador y acceder a esta dirección, `http://localhost:5601`. Verás la siguiente pantalla o es posible que veas una pantalla de datos de muestra o continuar y configurarla tú mismo. De cualquier manera, echa un vistazo a esos datos de prueba, es lo que cubrimos cuando vimos la pila ELK en una sesión anterior.
2022-10-23 23:38:19 +07:00
![](Images/Day82_Monitoring8.png)
A continuación, necesitamos hacer clic en la pestaña "Discover" en el menú izquierdo y agregar "*" como nuestro patrón de índice. Continúa con el siguiente paso haciendo clic en "Next step".
2022-10-23 23:38:19 +07:00
![](Images/Day82_Monitoring9.png)
En el paso 2 de 2, vamos a usar la opción @timestamp del menú desplegable, ya que esto filtrará nuestros datos por tiempo. Cuando hagas clic en "Create pattern", es posible que tarde unos segundos en completarse.
2022-10-23 23:38:19 +07:00
![](Images/Day82_Monitoring10.png)
Si volvemos a la pestaña "Discover" después de unos segundos, deberíamos empezar a ver datos provenientes de nuestro clúster de Kubernetes.
2022-10-23 23:38:19 +07:00
![](Images/Day82_Monitoring11.png)
Ahora que tenemos la pila EFK en funcionamiento y estamos recopilando registros de nuestro clúster de Kubernetes a través de Fluentd, también podemos explorar otras fuentes que podemos elegir. Si navegas a la pantalla de inicio haciendo clic en el logotipo de Kibana en la parte superior izquierda, verás la misma página que vimos cuando iniciamos sesión por primera vez.
2022-10-23 23:38:19 +07:00
Podemos agregar APM, datos de registro, datos métricos y eventos de seguridad de otros complementos o fuentes.
2022-10-23 23:38:19 +07:00
![](Images/Day82_Monitoring12.png)
Si seleccionamos "Add log data", veremos que tenemos muchas opciones sobre dónde obtener nuestros registros. Puedes ver que Logstash se menciona allí, lo cual es parte de la pila ELK.
2022-10-23 23:38:19 +07:00
![](Images/Day82_Monitoring13.png)
En los datos métricos, verás que puedes agregar fuentes para Prometheus y muchos otros servicios.
2022-10-23 23:38:19 +07:00
### APM (Monitoreo del rendimiento de aplicaciones)
2022-10-23 23:38:19 +07:00
También existe la opción de recopilar APM (Monitoreo del rendimiento de aplicaciones), que recopila métricas de rendimiento detalladas y errores desde el interior de tu aplicación. Te permite monitorear el rendimiento de miles de aplicaciones en tiempo real.
2022-10-23 23:38:19 +07:00
No profundizaré en APM aquí, pero puedes obtener más información en la [web de Elastic](https://www.elastic.co/observability/application-performance-monitoring).
2022-10-23 23:38:19 +07:00
## Recursos
2022-10-23 23:38:19 +07:00
- [Understanding Logging: Containers & Microservices](https://www.youtube.com/watch?v=MMVdkzeQ848)
- [The Importance of Monitoring in DevOps](https://www.devopsonline.co.uk/the-importance-of-monitoring-in-devops/)
- [Understanding Continuous Monitoring in DevOps?](https://medium.com/devopscurry/understanding-continuous-monitoring-in-devops-f6695b004e3b)
- [DevOps Monitoring Tools](https://www.youtube.com/watch?v=Zu53QQuYqJ0)
- [Top 5 - DevOps Monitoring Tools](https://www.youtube.com/watch?v=4t71iv_9t_4)
- [How Prometheus Monitoring works](https://www.youtube.com/watch?v=h4Sl21AKiDg)
- [Introduction to Prometheus monitoring](https://www.youtube.com/watch?v=5o37CGlNLr8)
- [Promql cheat sheet with examples](https://www.containiq.com/post/promql-cheat-sheet-with-examples)
- [Log Management for DevOps | Manage application, server, and cloud logs with Site24x7](https://www.youtube.com/watch?v=J0csO_Shsj0)
- [Log Management what DevOps need to know](https://devops.com/log-management-what-devops-teams-need-to-know/)
- [What is ELK Stack?](https://www.youtube.com/watch?v=4X0WLg05ASw)
- [Fluentd simply explained](https://www.youtube.com/watch?v=5ofsNyHZwWE&t=14s)
Nos vemos en el [Día 83](day83.md)