Este proyecto demuestra cómo integrar Elasticsearch, Logstash y Kibana (ELK Stack) con una aplicación Spring Boot para almacenar y visualizar logs de una API REST.
- 📖 Descripción
- 🛠️ Requisitos
- 📥 Instalación
- 🐳 Configuración de Docker
- 🚀 Ejecución de la Aplicación
- 🔎 Visualización en Kibana
- 📊 Creación de Dashboards
Este proyecto tiene como objetivo mostrar cómo:
✅ Configurar ELK Stack para almacenar logs de una aplicación.
✅ Enviar logs desde Spring Boot a Logstash, que luego los almacena en Elasticsearch.
✅ Visualizar los logs en Kibana con filtros y gráficos.
✅ Crear dashboards para analizar las peticiones a la API REST.
Antes de comenzar, asegúrate de tener instalados los siguientes programas:
🔹 Docker 🐳
🔹 Docker Compose
🔹 Java 17+ ☕
🔹 Maven
1️⃣ Clonar el repositorio:
git clone https://github.com/FirstOnDie/elk-springboot.git
cd elk-springboot2️⃣ Levantar los contenedores de ELK Stack:
docker-compose up -d3️⃣ Esperar a que Elasticsearch y Kibana estén listos.
Puedes comprobarlo con:
docker ps4️⃣ Compilar y ejecutar la aplicación Spring Boot:
mvn clean package
mvn spring-boot:run5️⃣ Probar la API:
Abre un navegador o Postman y accede a:
http://localhost:8080/api/hello
Esto generará logs en Elasticsearch.
📌 Archivo docker-compose.yml:
version: "3.8"
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.5.3
container_name: elasticsearch
environment:
- discovery.type=single-node
- xpack.security.enabled=false
ports:
- "9200:9200"
kibana:
image: docker.elastic.co/kibana/kibana:8.5.3
container_name: kibana
ports:
- "5601:5601"
depends_on:
- elasticsearch
logstash:
image: docker.elastic.co/logstash/logstash:8.5.3
container_name: logstash
volumes:
- ./logstash/pipeline:/usr/share/logstash/pipeline
ports:
- "5000:5000"
- "9600:9600"
depends_on:
- elasticsearch📌 Explicación:
✅ Elasticsearch: Almacena los logs.
✅ Kibana: Visualiza los logs en tiempo real.
📌 Compilar la aplicación
mvn clean package
mvn spring-boot:run📌 Verificar logs en consola
tail -f logs/app.log📌 Probar la API:
curl http://localhost:8080/api/helloEsto generará logs que serán enviados a Elasticsearch.
📌 Accede a Kibana:
http://localhost:5601
📌 Crear un Data View:
1️⃣ Ve a Management > Stack Management
2️⃣ Selecciona Data Views > Create Data View
3️⃣ Usa logstash-* como patrón
4️⃣ Guarda y ve a Discover para ver los logs 📊
📌 Crear un gráfico de peticiones a la API:
1️⃣ Ve a Visualizations > Create Visualization
2️⃣ Selecciona Bar Chart
3️⃣ En Eje X, elige @timestamp
4️⃣ En Eje Y, selecciona Count
5️⃣ Filtra por message: "/hello"
6️⃣ Guarda y añade a un Dashboard
