Fix(infra):
Datei: .junie/guidelines/technology-guides/docker/docker-development.md Vorher: - 194 Zeilen - last_updated: 2025-09-15 - ~10 dokumentierte Befehle - Falsche Befehlsnamen (service-build statt build-service) - Falscher Port (8080 statt 8081) Nachher: - 756 Zeilen - last_updated: 2025-11-11 - ~50+ dokumentierte Befehle - Korrekte Befehlsnamen - Korrekte Ports Neue Sektionen: 24 Haupt-Sektionen gefunden Korrigierte Dateien (API Gateway Port 8080 -> 8081): 1. infrastructure/gateway/README-INFRA-GATEWAY.md - 6 Stellen korrigiert (Docker-Befehle, Kubernetes, curl) 2. infrastructure/gateway/src/main/resources/openapi/documentation.yaml - 1 Server-URL korrigiert 3. infrastructure/README-INFRASTRUCTURE.md - 4 Stellen korrigiert (Prometheus, Kubernetes, curl) 4. services/masterdata/README-MASTERDATA.md - 3 curl Befehle korrigiert 5. .junie/guidelines/technology-guides/docker/docker-production.md - 1 Nginx upstream korrigiert 6. .junie/guidelines/technology-guides/docker/docker-monitoring.md - 1 Prometheus target korrigiert NICHT korrigiert (korrekt auf Port 8080): - Keycloak Health-Check (intern 8080, extern 8180) - Test-Konfigurationen mit Keycloak issuer-uri - Generische SERVICE_PORT Beispiele Gesamt: 16 Korrekturen in 6 Dateien
This commit is contained in:
@@ -0,0 +1,207 @@
|
||||
# ===================================================================
|
||||
# Environment Configuration Template - Meldestelle Project
|
||||
# ===================================================================
|
||||
# Copy this file to .env and customize the values for your environment
|
||||
# Security Note: Never commit .env files containing production secrets!
|
||||
# ===================================================================
|
||||
|
||||
# ===================================================================
|
||||
# Build Configuration
|
||||
# ===================================================================
|
||||
# Docker image versions
|
||||
DOCKER_GRADLE_VERSION=9.1.0
|
||||
DOCKER_JAVA_VERSION=21
|
||||
DOCKER_KEYCLOAK_VERSION=26.4.0
|
||||
DOCKER_PROMETHEUS_VERSION=v2.54.1
|
||||
DOCKER_GRAFANA_VERSION=11.3.0
|
||||
|
||||
# Application version
|
||||
DOCKER_APP_VERSION=1.0.0
|
||||
APP_VERSION=1.0.0
|
||||
APP_NAME=Meldestelle
|
||||
|
||||
# Build metadata
|
||||
BUILD_DATE=2025-11-11
|
||||
# BUILD_DATE will be auto-generated if not set
|
||||
|
||||
# Spring profiles for services
|
||||
SPRING_PROFILES_ACTIVE=docker,keycloak
|
||||
DOCKER_SPRING_PROFILES_DEFAULT=default
|
||||
DOCKER_SPRING_PROFILES_DOCKER=docker
|
||||
|
||||
# ===================================================================
|
||||
# Infrastructure Services - Port Configuration
|
||||
# ===================================================================
|
||||
# Database
|
||||
POSTGRES_DB=meldestelle
|
||||
# Note: Username and password are now managed via Docker secrets
|
||||
|
||||
# Redis Cache
|
||||
REDIS_PORT=6379
|
||||
|
||||
# Keycloak Authentication
|
||||
KEYCLOAK_PORT=8180
|
||||
KEYCLOAK_LOG_LEVEL=INFO
|
||||
|
||||
# Service Discovery
|
||||
CONSUL_HOST=consul
|
||||
CONSUL_PORT=8500
|
||||
CONSUL_ENABLED=true
|
||||
|
||||
# Messaging
|
||||
ZOOKEEPER_CLIENT_PORT=2181
|
||||
KAFKA_PORT=9092
|
||||
KAFKA_BROKER_ID=1
|
||||
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1
|
||||
|
||||
# Monitoring
|
||||
PROMETHEUS_PORT=9090
|
||||
GRAFANA_PORT=3000
|
||||
|
||||
# ===================================================================
|
||||
# Application Services - Port Configuration
|
||||
# ===================================================================
|
||||
# API Gateway
|
||||
GATEWAY_HOST=api-gateway
|
||||
GATEWAY_PORT=8081
|
||||
|
||||
# Microservices
|
||||
PING_SERVICE_PORT=8082
|
||||
MEMBERS_SERVICE_PORT=8083
|
||||
HORSES_SERVICE_PORT=8084
|
||||
EVENTS_SERVICE_PORT=8085
|
||||
MASTERDATA_SERVICE_PORT=8086
|
||||
AUTH_SERVICE_PORT=8087
|
||||
MONITORING_SERVER_PORT=8088
|
||||
|
||||
# ===================================================================
|
||||
# Client Applications - Port Configuration
|
||||
# ===================================================================
|
||||
# Web Application
|
||||
WEB_APP_PORT=4000
|
||||
WEB_APP_DOMAIN=localhost
|
||||
NODE_ENV=production
|
||||
|
||||
# Nginx Configuration
|
||||
NGINX_WORKER_PROCESSES=auto
|
||||
NGINX_WORKER_CONNECTIONS=1024
|
||||
|
||||
# Desktop Application
|
||||
DESKTOP_VNC_WEB_PORT=6080
|
||||
DESKTOP_VNC_PORT=5901
|
||||
DESKTOP_APP_DOMAIN=localhost
|
||||
|
||||
# ===================================================================
|
||||
# Security Configuration
|
||||
# ===================================================================
|
||||
# JWT Configuration
|
||||
JWT_ISSUER=meldestelle-auth-server
|
||||
JWT_AUDIENCE=meldestelle-services
|
||||
|
||||
# Note: JWT_SECRET is now managed via Docker secrets
|
||||
# Generate with: openssl rand -hex 32
|
||||
|
||||
# Keycloak Configuration
|
||||
KEYCLOAK_REALM=meldestelle
|
||||
KEYCLOAK_CLIENT_ID=api-gateway
|
||||
|
||||
# Note: All passwords and secrets are now managed via Docker secrets
|
||||
# Run: ./docker/secrets/setup-secrets.sh to generate secure secrets
|
||||
|
||||
# ===================================================================
|
||||
# Data Storage Configuration
|
||||
# ===================================================================
|
||||
# Data directory for persistent volumes
|
||||
# Default: ./data (relative to project root)
|
||||
# Production: /var/lib/meldestelle or dedicated mount point
|
||||
DATA_PATH=./data
|
||||
|
||||
# Volume configuration
|
||||
# These directories will be created under DATA_PATH:
|
||||
# - postgres/ (PostgreSQL data)
|
||||
# - redis/ (Redis data)
|
||||
# - prometheus/ (Prometheus metrics)
|
||||
# - grafana/ (Grafana dashboards)
|
||||
# - keycloak/ (Keycloak data)
|
||||
# - consul/ (Consul data)
|
||||
# - monitoring/ (Custom monitoring data)
|
||||
# - desktop-app/ (Desktop application data)
|
||||
|
||||
# ===================================================================
|
||||
# Development and Testing
|
||||
# ===================================================================
|
||||
# Enable debug mode for Java applications
|
||||
DEBUG=false
|
||||
|
||||
# Enable Wasm compilation for client applications
|
||||
ENABLE_WASM=false
|
||||
|
||||
# ===================================================================
|
||||
# Production Deployment Settings
|
||||
# ===================================================================
|
||||
# Container resource limits (configured in docker-compose files)
|
||||
# These are documented here for reference:
|
||||
|
||||
# Infrastructure Services Resource Limits:
|
||||
# - postgres: 2 CPU, 2GB RAM (reserved: 0.5 CPU, 512MB RAM)
|
||||
# - redis: 1 CPU, 1GB RAM (reserved: 0.25 CPU, 256MB RAM)
|
||||
# - keycloak: 2 CPU, 2GB RAM (reserved: 0.5 CPU, 1GB RAM)
|
||||
# - consul: 1 CPU, 512MB RAM (reserved: 0.25 CPU, 128MB RAM)
|
||||
# - kafka: 2 CPU, 2GB RAM (reserved: 0.5 CPU, 512MB RAM)
|
||||
# - zookeeper: 1 CPU, 1GB RAM (reserved: 0.25 CPU, 256MB RAM)
|
||||
# - prometheus: 1 CPU, 2GB RAM (reserved: 0.25 CPU, 512MB RAM)
|
||||
# - grafana: 1 CPU, 1GB RAM (reserved: 0.25 CPU, 256MB RAM)
|
||||
# - api-gateway: 2 CPU, 2GB RAM (reserved: 0.5 CPU, 1GB RAM)
|
||||
|
||||
# Microservices Resource Limits:
|
||||
# - ping-service: 1 CPU, 1GB RAM (reserved: 0.25 CPU, 256MB RAM)
|
||||
# - members-service: 2 CPU, 2GB RAM (reserved: 0.5 CPU, 512MB RAM)
|
||||
# - horses-service: 2 CPU, 2GB RAM (reserved: 0.5 CPU, 512MB RAM)
|
||||
# - events-service: 2 CPU, 2GB RAM (reserved: 0.5 CPU, 512MB RAM)
|
||||
# - masterdata-service: 1.5 CPU, 1.5GB RAM (reserved: 0.5 CPU, 512MB RAM)
|
||||
# - auth-server: 1.5 CPU, 1.5GB RAM (reserved: 0.5 CPU, 512MB RAM)
|
||||
|
||||
# Client Applications Resource Limits:
|
||||
# - web-app: 1 CPU, 512MB RAM (reserved: 0.25 CPU, 128MB RAM)
|
||||
# - desktop-app: 2 CPU, 2GB RAM (reserved: 0.5 CPU, 512MB RAM)
|
||||
# - monitoring-server: 1 CPU, 1GB RAM (reserved: 0.25 CPU, 256MB RAM)
|
||||
|
||||
# ===================================================================
|
||||
# Security Notes
|
||||
# ===================================================================
|
||||
# 1. All passwords and secrets are managed via Docker secrets
|
||||
# 2. Run ./docker/secrets/setup-secrets.sh to generate secure credentials
|
||||
# 3. Containers run as non-root users where possible
|
||||
# 4. Security options: no-new-privileges enabled for all services
|
||||
# 5. Networks are isolated with custom subnet (172.20.0.0/16)
|
||||
# 6. Volumes have proper permissions and are mounted read-only where appropriate
|
||||
# 7. Health checks are configured for all services
|
||||
# 8. Resource limits prevent resource exhaustion attacks
|
||||
|
||||
# ===================================================================
|
||||
# Usage Instructions
|
||||
# ===================================================================
|
||||
# 1. Copy this file: cp .env.template .env
|
||||
# 2. Customize values in .env for your environment
|
||||
# 3. Generate secrets: ./docker/secrets/setup-secrets.sh --all
|
||||
# 4. Create data directories: mkdir -p ./data/{postgres,redis,prometheus,grafana,keycloak,consul}
|
||||
# 5. Deploy infrastructure: docker-compose -f docker-compose.yml.optimized up -d
|
||||
# 6. Deploy services: docker-compose -f docker-compose.yml.optimized -f docker-compose.services.yml.optimized up -d
|
||||
# 7. Deploy clients: docker-compose -f docker-compose.yml.optimized -f docker-compose.services.yml.optimized -f docker-compose.clients.yml.optimized up -d
|
||||
|
||||
# ===================================================================
|
||||
# Monitoring and Logging
|
||||
# ===================================================================
|
||||
# Access URLs (when running with default ports):
|
||||
# - Grafana Dashboard: http://localhost:3000 (admin credentials in secrets)
|
||||
# - Prometheus Metrics: http://localhost:9090
|
||||
# - Consul UI: http://localhost:8500
|
||||
# - Keycloak Admin: http://localhost:8180/admin (admin credentials in secrets)
|
||||
# - API Gateway: http://localhost:8081
|
||||
# - Web Application: http://localhost:4000
|
||||
# - Desktop VNC: http://localhost:6080
|
||||
|
||||
# Log locations (inside containers):
|
||||
# - Application logs: /app/logs/
|
||||
# - Nginx logs: /var/log/nginx/
|
||||
# - System logs: journalctl -u docker
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
# Build Configuration
|
||||
# ===================================================================
|
||||
# Docker image versions
|
||||
DOCKER_GRADLE_VERSION=9.0.0
|
||||
DOCKER_GRADLE_VERSION=9.0.1
|
||||
DOCKER_JAVA_VERSION=21
|
||||
DOCKER_KEYCLOAK_VERSION=26.4.0
|
||||
DOCKER_PROMETHEUS_VERSION=v2.54.1
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
guideline_type: "technology"
|
||||
scope: "docker-development"
|
||||
audience: ["developers", "ai-assistants"]
|
||||
last_updated: "2025-09-15"
|
||||
last_updated: "2025-11-11"
|
||||
dependencies: ["docker-overview.md", "docker-architecture.md"]
|
||||
related_files: ["docker-compose.yml", "docker-compose.override.yml", "Makefile"]
|
||||
related_files: ["docker-compose.yml", "docker-compose.services.yml", "docker-compose.clients.yml", "Makefile"]
|
||||
ai_context: "Entwicklungs-Workflow, Debugging und lokale Entwicklungsumgebung mit Docker"
|
||||
|
||||
---
|
||||
@@ -19,168 +19,726 @@ ai_context: "Entwicklungs-Workflow, Debugging und lokale Entwicklungsumgebung mi
|
||||
> Für Details zur Container-Architektur siehe [docker-architecture](docker-architecture.md).
|
||||
> Für Production-Deployment siehe [docker-production](docker-production.md).
|
||||
|
||||
### Schnellstart-Befehle
|
||||
## 🚀 Schnellstart
|
||||
|
||||
### Komplette Hilfe anzeigen
|
||||
|
||||
```bash
|
||||
# 🚀 Komplettes Development-Setup
|
||||
make dev-up # Startet alle Development-Services
|
||||
make dev-down # Stoppt alle Services
|
||||
make dev-logs # Zeigt Logs aller Services
|
||||
make dev-restart # Neustart aller Services
|
||||
|
||||
# 🔧 Service-spezifische Befehle
|
||||
make service-build SERVICE=ping-service # Service neu bauen
|
||||
make service-logs SERVICE=ping-service # Service-Logs anzeigen
|
||||
make service-restart SERVICE=ping-service # Service neustarten
|
||||
make help # Zeigt alle verfügbaren Befehle mit Beschreibungen
|
||||
```
|
||||
|
||||
> **🤖 AI-Assistant Hinweis:**
|
||||
> Für Development verwende die Makefile-Befehle oder direkt docker-compose:
|
||||
> - **Alles starten:** `make dev-up` oder `docker-compose up -d`
|
||||
> - **Logs ansehen:** `make dev-logs` oder `docker-compose logs -f`
|
||||
> - **Service debuggen:** `docker-compose exec <service> sh`
|
||||
|
||||
**Makefile-Beispiel:**
|
||||
|
||||
```makefile
|
||||
# Development commands
|
||||
.PHONY: dev-up dev-down dev-logs dev-restart
|
||||
|
||||
dev-up:
|
||||
docker-compose -f docker-compose.yml -f docker-compose.services.yml up -d
|
||||
@echo "🚀 Development environment started"
|
||||
@echo "📊 Grafana: http://localhost:3000 (admin/admin)"
|
||||
@echo "🔍 Prometheus: http://localhost:9090"
|
||||
@echo "🚪 API Gateway: http://localhost:8080"
|
||||
|
||||
dev-down:
|
||||
docker-compose -f docker-compose.yml -f docker-compose.services.yml down
|
||||
|
||||
dev-logs:
|
||||
docker-compose -f docker-compose.yml -f docker-compose.services.yml logs -f
|
||||
|
||||
dev-restart:
|
||||
$(MAKE) dev-down
|
||||
$(MAKE) dev-up
|
||||
|
||||
# Service-specific commands
|
||||
service-build:
|
||||
@test -n "$(SERVICE)" || (echo "❌ SERVICE parameter required"; exit 1)
|
||||
docker-compose -f docker-compose.yml -f docker-compose.services.yml build $(SERVICE)
|
||||
|
||||
service-logs:
|
||||
@test -n "$(SERVICE)" || (echo "❌ SERVICE parameter required"; exit 1)
|
||||
docker-compose logs -f $(SERVICE)
|
||||
|
||||
service-restart:
|
||||
@test -n "$(SERVICE)" || (echo "❌ SERVICE parameter required"; exit 1)
|
||||
docker-compose -f docker-compose.yml -f docker-compose.services.yml restart $(SERVICE)
|
||||
```
|
||||
|
||||
### Hot-Reload Development
|
||||
|
||||
**docker-compose.override.yml** für optimierte Entwicklung:
|
||||
|
||||
```yaml
|
||||
# Development overrides für Hot-Reload
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
web-client:
|
||||
volumes:
|
||||
- ./client/web-app/src:/app/src:ro
|
||||
- ./client/common-ui/src:/app/common-ui/src:ro
|
||||
environment:
|
||||
- NODE_ENV=development
|
||||
command: npm run dev
|
||||
|
||||
ping-service:
|
||||
environment:
|
||||
- DEBUG=true
|
||||
- SPRING_DEVTOOLS_RESTART_ENABLED=true
|
||||
ports:
|
||||
- "5005:5005" # Debug-Port
|
||||
volumes:
|
||||
- ./temp/ping-service/src:/workspace/src:ro
|
||||
```
|
||||
|
||||
### Debugging von Services
|
||||
### Wichtigste Befehle für den Einstieg
|
||||
|
||||
```bash
|
||||
# Service im Debug-Modus starten
|
||||
docker-compose -f docker-compose.yml up -d ping-service
|
||||
docker-compose exec ping-service sh
|
||||
# Komplettes System starten
|
||||
make full-up # Infrastruktur + Services + Clients
|
||||
|
||||
# Logs in Echtzeit verfolgen
|
||||
docker-compose logs -f ping-service api-gateway
|
||||
# Nur Backend starten
|
||||
make services-up # Infrastruktur + Microservices
|
||||
|
||||
# Health-Check Status prüfen
|
||||
curl -s http://localhost:8082/actuator/health | jq
|
||||
curl -s http://localhost:8080/actuator/health | jq
|
||||
# Nur Entwicklungsumgebung
|
||||
make dev-up # Infrastruktur only
|
||||
|
||||
# System-Health prüfen
|
||||
make health-check # Prüft alle Infrastruktur-Services
|
||||
|
||||
# Logs anzeigen
|
||||
make full-logs # Alle Logs in Echtzeit
|
||||
```
|
||||
|
||||
## 📚 Vollständige Makefile-Referenz
|
||||
|
||||
### Development Workflow Commands
|
||||
|
||||
Befehle für die lokale Entwicklungsumgebung:
|
||||
|
||||
```bash
|
||||
make dev-up # Startet Entwicklungsumgebung (docker-compose.yml)
|
||||
make dev-down # Stoppt Entwicklungsumgebung
|
||||
make dev-restart # Neustart Entwicklungsumgebung
|
||||
make dev-logs # Zeigt alle Development-Logs
|
||||
make dev-info # Zeigt Entwicklungsumgebungs-Informationen
|
||||
```
|
||||
|
||||
**Verwendung:**
|
||||
|
||||
```bash
|
||||
# Infrastruktur starten (Postgres, Redis, Keycloak, Consul)
|
||||
make dev-up
|
||||
|
||||
# Nach dem Start werden angezeigt:
|
||||
# - Consul UI: http://localhost:8500
|
||||
# - Keycloak: http://localhost:8180 (admin/admin)
|
||||
# - PostgreSQL: localhost:5432
|
||||
# - Redis: localhost:6379
|
||||
```
|
||||
|
||||
### Layer-spezifische Commands
|
||||
|
||||
Das System ist in drei Schichten organisiert:
|
||||
|
||||
#### 1. Infrastructure Layer
|
||||
|
||||
```bash
|
||||
make infrastructure-up # Startet nur Infrastruktur-Services
|
||||
make infrastructure-down # Stoppt Infrastruktur-Services
|
||||
make infrastructure-logs # Zeigt Infrastruktur-Logs
|
||||
```
|
||||
|
||||
**Services:** PostgreSQL, Redis, Keycloak, Consul, Kafka, Zookeeper, Prometheus, Grafana
|
||||
|
||||
#### 2. Services Layer (Backend)
|
||||
|
||||
```bash
|
||||
make services-up # Startet Infrastruktur + Microservices
|
||||
make services-down # Stoppt Services
|
||||
make services-restart # Neustart Services
|
||||
make services-logs # Zeigt Service-Logs
|
||||
```
|
||||
|
||||
**Services:** API Gateway + alle Microservices (Ping, Members, Horses, Events, Masterdata, Auth, Monitoring)
|
||||
|
||||
**URLs nach Start:**
|
||||
- Gateway: http://localhost:8081
|
||||
- Ping Service: http://localhost:8082
|
||||
- Members Service: http://localhost:8083
|
||||
- Horses Service: http://localhost:8084
|
||||
- Events Service: http://localhost:8085
|
||||
- Master Service: http://localhost:8086
|
||||
|
||||
#### 3. Clients Layer (Frontend)
|
||||
|
||||
```bash
|
||||
make clients-up # Startet Infrastruktur + Client-Apps
|
||||
make clients-down # Stoppt Clients
|
||||
make clients-restart # Neustart Clients
|
||||
make clients-logs # Zeigt Client-Logs
|
||||
```
|
||||
|
||||
**Clients:** Web-App, Auth-Server, Monitoring-Server
|
||||
|
||||
**URLs nach Start:**
|
||||
- Web App: http://localhost:4000
|
||||
- Auth Server: http://localhost:8087
|
||||
- Monitoring: http://localhost:8088
|
||||
|
||||
### Full System Commands
|
||||
|
||||
Befehle für das komplette System (alle Layer):
|
||||
|
||||
```bash
|
||||
make full-up # Startet ALLES (Infrastructure + Services + Clients)
|
||||
make full-down # Stoppt komplettes System
|
||||
make full-restart # Neustart komplettes System
|
||||
make full-logs # Zeigt alle System-Logs
|
||||
```
|
||||
|
||||
**Nach `make full-up` verfügbare Services:**
|
||||
|
||||
```
|
||||
🌐 Frontend & APIs:
|
||||
Web App: http://localhost:4000
|
||||
API Gateway: http://localhost:8081
|
||||
|
||||
🔧 Infrastructure:
|
||||
PostgresQL: localhost:5432
|
||||
Redis: localhost:6379
|
||||
Keycloak: http://localhost:8180
|
||||
Consul: http://localhost:8500
|
||||
Prometheus: http://localhost:9090
|
||||
Grafana: http://localhost:3000
|
||||
|
||||
⚙️ Microservices:
|
||||
Ping Service: http://localhost:8082
|
||||
Members Service: http://localhost:8083
|
||||
Horses Service: http://localhost:8084
|
||||
Events Service: http://localhost:8085
|
||||
Master Service: http://localhost:8086
|
||||
Auth Server: http://localhost:8087
|
||||
Monitoring: http://localhost:8088
|
||||
```
|
||||
|
||||
### Build Commands
|
||||
|
||||
Befehle zum Bauen von Docker-Images:
|
||||
|
||||
```bash
|
||||
make build # Baut alle Custom-Images
|
||||
make build-service SERVICE=ping-service # Baut einzelnen Service
|
||||
make build-client CLIENT=web-app # Baut einzelnen Client
|
||||
```
|
||||
|
||||
**Beispiele:**
|
||||
|
||||
```bash
|
||||
# Einzelnen Service neu bauen (ohne Cache)
|
||||
make build-service SERVICE=api-gateway
|
||||
|
||||
# Web-App neu bauen
|
||||
make build-client CLIENT=web-app
|
||||
|
||||
# Alle Images neu bauen
|
||||
make build
|
||||
```
|
||||
|
||||
### Test Commands
|
||||
|
||||
Befehle für Testing:
|
||||
|
||||
```bash
|
||||
make test # Führt Integration-Tests aus
|
||||
make test-e2e # Führt End-to-End-Tests aus
|
||||
```
|
||||
|
||||
**Details:**
|
||||
|
||||
```bash
|
||||
# Integration-Tests
|
||||
# - Startet automatisch Infrastruktur
|
||||
# - Führt Gradle-Tests aus
|
||||
# - Stoppt Infrastruktur nach Tests
|
||||
make test
|
||||
|
||||
# E2E-Tests
|
||||
# - Startet komplette Entwicklungsumgebung
|
||||
# - Führt Client-Tests aus
|
||||
# - Stoppt Umgebung nach Tests
|
||||
make test-e2e
|
||||
```
|
||||
|
||||
### Environment Management Commands
|
||||
|
||||
Befehle für Environment-Konfiguration:
|
||||
|
||||
```bash
|
||||
make env-setup # Zeigt Environment-Setup-Anweisungen
|
||||
make env-dev # Wechselt zu Development-Environment
|
||||
make env-prod # Wechselt zu Production-Environment
|
||||
make env-staging # Wechselt zu Staging-Environment
|
||||
make env-test # Wechselt zu Test-Environment
|
||||
make validate # Validiert Docker Compose Konfiguration
|
||||
make env-template # Erstellt .env Template-Datei
|
||||
```
|
||||
|
||||
**Verwendung:**
|
||||
|
||||
```bash
|
||||
# Entwicklungsumgebung aktivieren
|
||||
make env-dev
|
||||
|
||||
# Validierung durchführen
|
||||
make validate
|
||||
|
||||
# Neue .env-Template erstellen
|
||||
make env-template
|
||||
```
|
||||
|
||||
### SSoT (Single Source of Truth) Commands
|
||||
|
||||
Befehle für Docker-Versionsverwaltung:
|
||||
|
||||
```bash
|
||||
make versions-show # Zeigt zentrale Versionen (docker/versions.toml)
|
||||
make versions-update key=gradle value=9.1.0 # Aktualisiert eine Version
|
||||
make docker-sync # Synchronisiert versions.toml -> build-args/*.env
|
||||
make docker-compose-gen ENV=development # Generiert Docker Compose Files
|
||||
make docker-validate # Validiert Docker SSoT Konsistenz
|
||||
make hooks-install # Installiert Pre-Commit SSoT Guard Hook
|
||||
```
|
||||
|
||||
**Workflow für Versions-Updates:**
|
||||
|
||||
```bash
|
||||
# 1. Version in versions.toml aktualisieren
|
||||
make versions-update key=gradle value=9.1.0
|
||||
|
||||
# 2. Build-Args synchronisieren
|
||||
make docker-sync
|
||||
|
||||
# 3. Compose-Files neu generieren
|
||||
make docker-compose-gen ENV=development
|
||||
|
||||
# 4. Konsistenz validieren
|
||||
make docker-validate
|
||||
```
|
||||
|
||||
**Verfügbare Versions-Keys:**
|
||||
- `gradle` - Gradle-Version
|
||||
- `java` - Java-Version
|
||||
- `node` - Node.js-Version
|
||||
- `nginx` - Nginx-Version
|
||||
- `alpine` - Alpine Linux-Version
|
||||
- `prometheus` - Prometheus-Version
|
||||
- `grafana` - Grafana-Version
|
||||
- `keycloak` - Keycloak-Version
|
||||
- `app-version` - Anwendungsversion
|
||||
- `spring-profiles-default` - Spring Default-Profile
|
||||
- `spring-profiles-docker` - Spring Docker-Profile
|
||||
|
||||
### Production Commands
|
||||
|
||||
Befehle für Production-Deployment:
|
||||
|
||||
```bash
|
||||
make prod-up # Startet Production-Environment
|
||||
make prod-down # Stoppt Production-Environment
|
||||
make prod-restart # Neustart Production-Environment
|
||||
make prod-logs # Zeigt Production-Logs
|
||||
```
|
||||
|
||||
**⚠️ Hinweis:** Stelle sicher, dass `.env` korrekt konfiguriert ist mit `make env-prod`
|
||||
|
||||
### Monitoring & Debugging Commands
|
||||
|
||||
Befehle für System-Monitoring und Debugging:
|
||||
|
||||
```bash
|
||||
make status # Zeigt Container-Status
|
||||
make health-check # Prüft Health aller Infrastruktur-Services
|
||||
make logs SERVICE=postgres # Zeigt Logs eines spezifischen Services
|
||||
make shell SERVICE=postgres # Öffnet Shell in Container
|
||||
```
|
||||
|
||||
**Beispiele:**
|
||||
|
||||
```bash
|
||||
# Status aller Container
|
||||
make status
|
||||
|
||||
# Health-Check durchführen
|
||||
make health-check
|
||||
# Output:
|
||||
# PostgreSQL: ✅ Ready
|
||||
# Redis: ✅ PONG
|
||||
# Consul: ✅ Leader elected
|
||||
# Keycloak: ✅ Ready
|
||||
|
||||
# Logs von PostgreSQL anzeigen
|
||||
make logs SERVICE=postgres
|
||||
|
||||
# Shell im Postgres-Container öffnen
|
||||
make shell SERVICE=postgres
|
||||
```
|
||||
|
||||
### Cleanup Commands
|
||||
|
||||
Befehle zum Aufräumen:
|
||||
|
||||
```bash
|
||||
make clean # Aufräumen Docker-Ressourcen (Prune)
|
||||
make clean-all # Vollständiges Cleanup (inkl. Images und Volumes)
|
||||
```
|
||||
|
||||
**⚠️ Warnung:** `make clean-all` löscht auch Volumes und Images!
|
||||
|
||||
### Development Tools Commands
|
||||
|
||||
```bash
|
||||
make dev-tools-up # Info: Dev-Tools wurden entfernt (verwende lokale Tools)
|
||||
make dev-tools-down # Info: Keine Dev-Tool-Container zum Stoppen
|
||||
```
|
||||
|
||||
**Empfehlung:** Verwende lokale Tools wie pgAdmin, TablePlus, DBeaver, RedisInsight
|
||||
|
||||
## 🎯 AI-Assistenten: Development-Schnellreferenz
|
||||
|
||||
### Häufige Entwicklungsaufgaben
|
||||
### Häufigste Workflows
|
||||
|
||||
| Aufgabe | Befehl | Beschreibung |
|
||||
|-------------------|-----------------------------------------|-------------------------------|
|
||||
| Umgebung starten | `make dev-up` | Alle Services für Development |
|
||||
| Service debuggen | `docker-compose exec <service> sh` | Shell im Container |
|
||||
| Logs verfolgen | `docker-compose logs -f <service>` | Live-Logs anzeigen |
|
||||
| Service neu bauen | `make service-build SERVICE=<name>` | Einzelnen Service rebuilden |
|
||||
| Health-Check | `curl localhost:<port>/actuator/health` | Service-Status prüfen |
|
||||
#### 1. Lokale Entwicklung starten
|
||||
|
||||
### Development-URLs
|
||||
```bash
|
||||
# Variante A: Nur Infrastruktur
|
||||
make dev-up
|
||||
./gradlew :members:members-service:bootRun
|
||||
|
||||
- **Grafana:** http://localhost:3000 (admin/admin)
|
||||
- **Prometheus:** http://localhost:9090
|
||||
- **API Gateway:** http://localhost:8080
|
||||
- **Consul:** http://localhost:8500
|
||||
- **Keycloak:** http://localhost:8180
|
||||
# Variante B: Komplettes Backend
|
||||
make services-up
|
||||
|
||||
# Variante C: Alles inkl. Frontend
|
||||
make full-up
|
||||
```
|
||||
|
||||
#### 2. Service neu bauen nach Code-Änderungen
|
||||
|
||||
```bash
|
||||
# Service stoppen
|
||||
docker compose down api-gateway
|
||||
|
||||
# Service neu bauen
|
||||
make build-service SERVICE=api-gateway
|
||||
|
||||
# Service starten
|
||||
make services-up
|
||||
```
|
||||
|
||||
#### 3. Debugging eines Services
|
||||
|
||||
```bash
|
||||
# Logs in Echtzeit
|
||||
make logs SERVICE=ping-service
|
||||
|
||||
# Shell im Container öffnen
|
||||
make shell SERVICE=ping-service
|
||||
|
||||
# Health-Status prüfen
|
||||
curl -s http://localhost:8082/actuator/health | jq
|
||||
```
|
||||
|
||||
#### 4. Docker-Versionen aktualisieren
|
||||
|
||||
```bash
|
||||
# Gradle-Version ändern
|
||||
make versions-update key=gradle value=9.1.0
|
||||
|
||||
# Änderungen synchronisieren
|
||||
make docker-sync
|
||||
make docker-compose-gen
|
||||
make docker-validate
|
||||
|
||||
# Git-Status prüfen (sollte generierte Files zeigen)
|
||||
git status
|
||||
```
|
||||
|
||||
#### 5. Tests ausführen
|
||||
|
||||
```bash
|
||||
# Integration-Tests (automatische Infrastruktur)
|
||||
make test
|
||||
|
||||
# E2E-Tests (automatische Full-Environment)
|
||||
make test-e2e
|
||||
|
||||
# Einzelner Test via Gradle
|
||||
./gradlew :members:members-service:test
|
||||
```
|
||||
|
||||
### Development-URLs Übersicht
|
||||
|
||||
| Service | URL | Credentials |
|
||||
|-----------------|-------------------------------|-------------------|
|
||||
| Web App | http://localhost:4000 | - |
|
||||
| API Gateway | http://localhost:8081 | - |
|
||||
| Ping Service | http://localhost:8082 | - |
|
||||
| Members Service | http://localhost:8083 | - |
|
||||
| Horses Service | http://localhost:8084 | - |
|
||||
| Events Service | http://localhost:8085 | - |
|
||||
| Master Service | http://localhost:8086 | - |
|
||||
| Auth Server | http://localhost:8087 | - |
|
||||
| Monitoring | http://localhost:8088 | - |
|
||||
| Keycloak Admin | http://localhost:8180 | admin/admin |
|
||||
| Consul UI | http://localhost:8500 | - |
|
||||
| Prometheus | http://localhost:9090 | - |
|
||||
| Grafana | http://localhost:3000 | admin/admin |
|
||||
| PostgreSQL | localhost:5432 | meldestelle/*** |
|
||||
| Redis | localhost:6379 | - |
|
||||
|
||||
### Health-Check Endpoints
|
||||
|
||||
```bash
|
||||
# API Gateway
|
||||
curl -s http://localhost:8081/actuator/health | jq
|
||||
|
||||
# Ping Service
|
||||
curl -s http://localhost:8082/actuator/health | jq
|
||||
|
||||
# Members Service
|
||||
curl -s http://localhost:8083/actuator/health | jq
|
||||
|
||||
# Keycloak
|
||||
curl -s http://localhost:8180/health/ready | jq
|
||||
|
||||
# Consul
|
||||
curl -s http://localhost:8500/v1/status/leader
|
||||
```
|
||||
|
||||
### Debug-Ports
|
||||
|
||||
- **Spring-Services:** 5005 (Standard Java Debug)
|
||||
- **Web-App:** Hot-Reload über Volume-Mapping
|
||||
- **Client-Apps:** Port 4000 (Web), 5901 (Desktop VNC)
|
||||
**Spring Boot Services:**
|
||||
- Debug-Port: 5005 (Standard Java Debug Protocol)
|
||||
- Konfiguration in docker-compose.services.yml
|
||||
|
||||
**Client-Apps:**
|
||||
- Web-App: Hot-Reload über Volume-Mapping
|
||||
- Desktop-App: VNC Port 5901, VNC Web Port 6080
|
||||
|
||||
### Troubleshooting Development
|
||||
|
||||
#### Container startet nicht
|
||||
|
||||
```bash
|
||||
# Container-Status prüfen
|
||||
docker-compose ps
|
||||
# 1. Status prüfen
|
||||
make status
|
||||
|
||||
# Container-Logs anzeigen
|
||||
docker-compose logs <service-name>
|
||||
# 2. Logs anzeigen
|
||||
make logs SERVICE=<service-name>
|
||||
|
||||
# Container neu starten
|
||||
docker-compose restart <service-name>
|
||||
# 3. Container neu starten
|
||||
docker compose restart <service-name>
|
||||
|
||||
# Image neu bauen
|
||||
docker-compose build --no-cache <service-name>
|
||||
# 4. Image neu bauen (ohne Cache)
|
||||
make build-service SERVICE=<service-name>
|
||||
docker compose up -d <service-name>
|
||||
```
|
||||
|
||||
#### Port-Konflikte
|
||||
|
||||
```bash
|
||||
# Ports prüfen
|
||||
lsof -i :<port>
|
||||
# oder
|
||||
netstat -tulpn | grep :<port>
|
||||
|
||||
# Service mit anderem Port starten
|
||||
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d
|
||||
# Konfigurierten Port in .env ändern
|
||||
# z.B. API_GATEWAY_PORT=8081 -> API_GATEWAY_PORT=8091
|
||||
|
||||
# Services neu starten
|
||||
make services-restart
|
||||
```
|
||||
|
||||
#### Health-Check schlägt fehl
|
||||
|
||||
```bash
|
||||
# 1. Service-Status prüfen
|
||||
make status
|
||||
|
||||
# 2. Service-Logs prüfen
|
||||
make logs SERVICE=<service-name>
|
||||
|
||||
# 3. Manueller Health-Check
|
||||
curl -v http://localhost:<port>/actuator/health
|
||||
|
||||
# 4. Container-Netzwerk prüfen
|
||||
docker network inspect meldestelle-network
|
||||
|
||||
# 5. Service neu starten
|
||||
docker compose restart <service-name>
|
||||
```
|
||||
|
||||
#### Volume-Probleme
|
||||
|
||||
```bash
|
||||
# Volumes prüfen
|
||||
docker volume ls
|
||||
# Volumes anzeigen
|
||||
docker volume ls | grep meldestelle
|
||||
|
||||
# Volume-Inhalt anzeigen
|
||||
docker-compose exec <service> ls -la /path/to/volume
|
||||
# Volume-Inhalt prüfen
|
||||
make shell SERVICE=postgres
|
||||
ls -la /var/lib/postgresql/data
|
||||
|
||||
# Volume entfernen (⚠️ Daten gehen verloren!)
|
||||
docker volume rm meldestelle_postgres-data
|
||||
|
||||
# Volumes neu erstellen
|
||||
make full-down
|
||||
make full-up
|
||||
```
|
||||
|
||||
#### Datenbankverbindung fehlgeschlagen
|
||||
|
||||
```bash
|
||||
# 1. PostgreSQL-Status prüfen
|
||||
make health-check
|
||||
|
||||
# 2. PostgreSQL-Logs prüfen
|
||||
make logs SERVICE=postgres
|
||||
|
||||
# 3. Verbindung testen (aus anderem Container)
|
||||
docker compose exec api-gateway sh
|
||||
apk add postgresql-client
|
||||
psql -h postgres -U meldestelle -d meldestelle
|
||||
|
||||
# 4. Secrets prüfen (falls verwendet)
|
||||
ls -la ./docker/secrets/
|
||||
```
|
||||
|
||||
#### Gradle-Build schlägt fehl im Container
|
||||
|
||||
```bash
|
||||
# 1. Gradle-Version in versions.toml prüfen
|
||||
cat docker/versions.toml | grep gradle
|
||||
|
||||
# 2. Verfügbare Gradle-Images prüfen
|
||||
docker search gradle | grep alpine
|
||||
|
||||
# 3. Build-Logs detailliert anzeigen
|
||||
make logs SERVICE=<service-name>
|
||||
|
||||
# 4. Manuell im Container debuggen
|
||||
make shell SERVICE=<service-name>
|
||||
./gradlew --version
|
||||
./gradlew dependencies
|
||||
```
|
||||
|
||||
#### Service ist erreichbar, antwortet aber nicht
|
||||
|
||||
```bash
|
||||
# 1. Service-Logs in Echtzeit
|
||||
make logs SERVICE=<service-name>
|
||||
|
||||
# 2. JVM-Status prüfen (bei Java-Services)
|
||||
make shell SERVICE=<service-name>
|
||||
ps aux | grep java
|
||||
|
||||
# 3. Speicher/CPU prüfen
|
||||
docker stats <container-name>
|
||||
|
||||
# 4. Netzwerk-Verbindung testen
|
||||
docker compose exec <service> sh
|
||||
apk add curl
|
||||
curl -v http://api-gateway:8081/actuator/health
|
||||
```
|
||||
|
||||
## 🤖 AI-Assistant Best Practices
|
||||
|
||||
### Für Code-Assistenten
|
||||
|
||||
1. **Verwende immer `make help`** um verfügbare Befehle zu sehen
|
||||
2. **Befehlsnamen korrekt verwenden:**
|
||||
- ✅ `make build-service SERVICE=ping-service`
|
||||
- ❌ `make service-build SERVICE=ping-service` (veraltet)
|
||||
3. **Port-Angaben beachten:**
|
||||
- API Gateway: Port 8081 (nicht 8080!)
|
||||
- Alle Ports in `.env` oder `docker-compose*.yml` definiert
|
||||
4. **SSoT-Workflow einhalten:**
|
||||
- Versionen nur in `docker/versions.toml` ändern
|
||||
- `make docker-sync` nach Änderungen
|
||||
- `make docker-validate` vor Commits
|
||||
|
||||
### Für Entwickler-Support
|
||||
|
||||
1. **Troubleshooting-Reihenfolge:**
|
||||
- `make status` → Container-Status
|
||||
- `make health-check` → Service-Health
|
||||
- `make logs SERVICE=<name>` → Logs prüfen
|
||||
- `make shell SERVICE=<name>` → Interactive Debugging
|
||||
|
||||
2. **Häufige Fehlerquellen:**
|
||||
- Fehlende `.env` Datei → `make env-dev`
|
||||
- Port-Konflikte → `lsof -i :<port>`
|
||||
- Veraltete Images → `make build`
|
||||
- Volume-Berechtigungen → `make clean-all` (⚠️ Daten-Verlust!)
|
||||
|
||||
3. **Performance-Optimierung:**
|
||||
- Nur benötigte Layer starten (infrastructure/services/clients)
|
||||
- Docker BuildKit aktivieren: `export DOCKER_BUILDKIT=1`
|
||||
- Gradle-Cache nutzen (bereits in Dockerfiles konfiguriert)
|
||||
|
||||
## 📦 Docker Compose Dateien
|
||||
|
||||
Das Projekt verwendet mehrere Compose-Files:
|
||||
|
||||
- **docker-compose.yml** - Infrastruktur-Layer (Postgres, Redis, Keycloak, Consul, etc.)
|
||||
- **docker-compose.services.yml** - Services-Layer (API Gateway, Microservices)
|
||||
- **docker-compose.clients.yml** - Clients-Layer (Web-App, Desktop-App)
|
||||
|
||||
**Kombinationen:**
|
||||
|
||||
```bash
|
||||
# Nur Infrastruktur
|
||||
docker compose -f docker-compose.yml up -d
|
||||
|
||||
# Infrastruktur + Services
|
||||
docker compose -f docker-compose.yml -f docker-compose.services.yml up -d
|
||||
|
||||
# Infrastruktur + Clients
|
||||
docker compose -f docker-compose.yml -f docker-compose.clients.yml up -d
|
||||
|
||||
# Alles
|
||||
docker compose -f docker-compose.yml -f docker-compose.services.yml -f docker-compose.clients.yml up -d
|
||||
|
||||
# ⚠️ Tipp: Verwende stattdessen die Makefile-Befehle!
|
||||
```
|
||||
|
||||
## 🔄 Typische Entwicklungs-Workflows
|
||||
|
||||
### Workflow 1: Neues Feature entwickeln
|
||||
|
||||
```bash
|
||||
# 1. Frische Umgebung starten
|
||||
make full-down
|
||||
make dev-up
|
||||
|
||||
# 2. Feature in IDE entwickeln
|
||||
# (Service läuft lokal via Gradle, nicht in Docker)
|
||||
|
||||
# 3. Tests lokal ausführen
|
||||
./gradlew :members:members-service:test
|
||||
|
||||
# 4. Service als Container testen
|
||||
make build-service SERVICE=members-service
|
||||
make services-up
|
||||
|
||||
# 5. Integration-Tests
|
||||
make test
|
||||
|
||||
# 6. Aufräumen
|
||||
make dev-down
|
||||
```
|
||||
|
||||
### Workflow 2: Bug-Fixing
|
||||
|
||||
```bash
|
||||
# 1. System starten
|
||||
make full-up
|
||||
|
||||
# 2. Logs beobachten
|
||||
make logs SERVICE=<betroffener-service>
|
||||
|
||||
# 3. Shell im Container öffnen (falls nötig)
|
||||
make shell SERVICE=<betroffener-service>
|
||||
|
||||
# 4. Fix implementieren und Service neu bauen
|
||||
make build-service SERVICE=<betroffener-service>
|
||||
docker compose restart <betroffener-service>
|
||||
|
||||
# 5. Fix verifizieren
|
||||
curl http://localhost:<port>/actuator/health
|
||||
make test
|
||||
```
|
||||
|
||||
### Workflow 3: Docker-Version aktualisieren
|
||||
|
||||
```bash
|
||||
# 1. Aktuelle Versionen anzeigen
|
||||
make versions-show
|
||||
|
||||
# 2. Version aktualisieren (z.B. Java)
|
||||
make versions-update key=java value=22
|
||||
|
||||
# 3. Build-Args synchronisieren
|
||||
make docker-sync
|
||||
|
||||
# 4. Compose-Files neu generieren
|
||||
make docker-compose-gen ENV=development
|
||||
|
||||
# 5. Konsistenz validieren
|
||||
make docker-validate
|
||||
|
||||
# 6. Testen
|
||||
make clean-all # ⚠️ Entfernt Volumes!
|
||||
make full-up
|
||||
make health-check
|
||||
```
|
||||
|
||||
### Workflow 4: Kompletter System-Reset
|
||||
|
||||
```bash
|
||||
# 1. Alles stoppen
|
||||
make full-down
|
||||
|
||||
# 2. Alle Docker-Ressourcen entfernen
|
||||
make clean-all # ⚠️ Entfernt auch Volumes und Images!
|
||||
|
||||
# 3. Images neu bauen
|
||||
make build
|
||||
|
||||
# 4. System neu starten
|
||||
make full-up
|
||||
|
||||
# 5. Health-Check
|
||||
make health-check
|
||||
|
||||
# 6. Logs prüfen
|
||||
make full-logs
|
||||
```
|
||||
|
||||
---
|
||||
@@ -189,5 +747,10 @@ docker-compose exec <service> ls -la /path/to/volume
|
||||
- [Docker-Overview](./docker-overview.md) - Grundlagen und Philosophie
|
||||
- [Docker-Architecture](./docker-architecture.md) - Container-Services und Struktur
|
||||
- [Docker-Production](./docker-production.md) - Production-Deployment
|
||||
- [docker-monitoring](./docker-monitoring.md) - Observability
|
||||
- [docker-troubleshooting](./docker-troubleshooting.md) - Problemlösung
|
||||
- [Docker-Monitoring](./docker-monitoring.md) - Observability
|
||||
- [Docker-Troubleshooting](./docker-troubleshooting.md) - Problemlösung
|
||||
|
||||
---
|
||||
|
||||
**Letzte Aktualisierung:** 2025-11-11
|
||||
**Version:** 2.0.0 - Vollständige Makefile-Referenz mit allen 50+ Befehlen
|
||||
|
||||
@@ -238,7 +238,7 @@ scrape_configs:
|
||||
- job_name: 'spring-boot'
|
||||
metrics_path: '/actuator/prometheus'
|
||||
static_configs:
|
||||
- targets: ['api-gateway:8080', 'ping-service:8082']
|
||||
- targets: ['api-gateway:8081', 'ping-service:8082']
|
||||
scrape_interval: 10s
|
||||
|
||||
- job_name: 'infrastructure'
|
||||
|
||||
@@ -70,7 +70,7 @@ export KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
|
||||
|
||||
```nginx
|
||||
upstream api_backend {
|
||||
server api-gateway:8080;
|
||||
server api-gateway:8081;
|
||||
keepalive 32;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,13 +3,21 @@
|
||||
# Optimierte Befehle für containerised Entwicklung-Workflows
|
||||
# ===================================================================
|
||||
|
||||
.PHONY: help dev-up dev-down dev-restart dev-logs build clean test
|
||||
# ===================================================================
|
||||
# PHONY Target Declarations
|
||||
# ===================================================================
|
||||
.PHONY: help
|
||||
.PHONY: dev-up dev-down dev-restart dev-logs dev-info dev-tools-up dev-tools-down
|
||||
.PHONY: infrastructure-up infrastructure-down infrastructure-logs
|
||||
.PHONY: services-up services-down services-restart services-logs
|
||||
.PHONY: clients-up clients-down clients-restart clients-logs
|
||||
.PHONY: prod-up prod-down prod-restart prod-logs
|
||||
.PHONY: infrastructure-up infrastructure-down infrastructure-logs
|
||||
.PHONY: full-up full-down full-restart full-logs
|
||||
.PHONY: dev-tools-up dev-tools-down status health-check logs shell env-setup env-dev env-prod env-staging env-test dev-info clean-all build-service build-client
|
||||
.PHONY: prod-up prod-down prod-restart prod-logs
|
||||
.PHONY: env-setup env-dev env-prod env-staging env-test validate env-template
|
||||
.PHONY: build build-service build-client clean clean-all
|
||||
.PHONY: test test-e2e
|
||||
.PHONY: status health-check logs shell
|
||||
.PHONY: versions-show versions-update docker-sync docker-validate docker-compose-gen hooks-install
|
||||
|
||||
.ONESHELL:
|
||||
|
||||
@@ -109,11 +117,42 @@ clients-logs: ## Show client application logs
|
||||
full-up: ## Start complete system (infrastructure + services + clients)
|
||||
@echo "🚀 Starting complete Meldestelle system..."
|
||||
$(COMPOSE) -f docker-compose.yml -f docker-compose.services.yml -f docker-compose.clients.yml up -d
|
||||
@echo "✅ Complete system started"
|
||||
@echo ""
|
||||
@echo "🌐 Frontend & APIs:"
|
||||
@echo " Web App: http://localhost:4000"
|
||||
@echo " API Gateway: http://localhost:8081"
|
||||
@echo ""
|
||||
@echo "🔧 Infrastructure:"
|
||||
@echo " PostgresQL: localhost:5432"
|
||||
@echo " Redis: localhost:6379"
|
||||
@echo " Keycloak: http://localhost:8180"
|
||||
@echo " Consul: http://localhost:8500"
|
||||
@echo " Prometheus: http://localhost:9090"
|
||||
@echo " Grafana: http://localhost:3000"
|
||||
@echo ""
|
||||
@echo "⚙️ Microservices:"
|
||||
@echo " Ping Service: http://localhost:8082"
|
||||
@echo " Members Service: http://localhost:8083"
|
||||
@echo " Horses Service: http://localhost:8084"
|
||||
@echo " Events Service: http://localhost:8085"
|
||||
@echo " Master Service: http://localhost:8086"
|
||||
@echo " Auth Server: http://localhost:8087"
|
||||
@echo " Monitoring: http://localhost:8088"
|
||||
|
||||
full-down: ## Stop complete system
|
||||
$(COMPOSE) -f docker-compose.yml -f docker-compose.services.yml -f docker-compose.clients.yml down
|
||||
|
||||
full-restart: ## Restart complete system
|
||||
@$(MAKE) full-down
|
||||
@$(MAKE) full-up
|
||||
|
||||
full-logs: ## Show all system logs
|
||||
$(COMPOSE) -f docker-compose.yml -f docker-compose.services.yml -f docker-compose.clients.yml logs -f
|
||||
|
||||
# ===================================================================
|
||||
# SSoT Developer UX (optional helpers)
|
||||
# ===================================================================
|
||||
.PHONY: versions-show versions-update docker-sync docker-validate docker-compose-gen hooks-install
|
||||
|
||||
# Show current centralized versions from docker/versions.toml
|
||||
versions-show: ## Show centralized versions (docker/versions.toml)
|
||||
@@ -148,38 +187,6 @@ hooks-install: ## Install pre-commit SSoT guard hook into .git/hooks/pre-commit
|
||||
@cp scripts/git-hooks/pre-commit-ssot .git/hooks/pre-commit
|
||||
@chmod +x .git/hooks/pre-commit
|
||||
@echo "✅ Installed .git/hooks/pre-commit (SSoT guard)"
|
||||
@echo "✅ Complete system started"
|
||||
@echo ""
|
||||
@echo "🌐 Frontend & APIs:"
|
||||
@echo " Web App: http://localhost:4000"
|
||||
@echo " API Gateway: http://localhost:8081"
|
||||
@echo ""
|
||||
@echo "🔧 Infrastructure:"
|
||||
@echo " PostgresQL: localhost:5432"
|
||||
@echo " Redis: localhost:6379"
|
||||
@echo " Keycloak: http://localhost:8180"
|
||||
@echo " Consul: http://localhost:8500"
|
||||
@echo " Prometheus: http://localhost:9090"
|
||||
@echo " Grafana: http://localhost:3000"
|
||||
@echo ""
|
||||
@echo "⚙️ Microservices:"
|
||||
@echo " Ping Service: http://localhost:8082"
|
||||
@echo " Members Service: http://localhost:8083"
|
||||
@echo " Horses Service: http://localhost:8084"
|
||||
@echo " Events Service: http://localhost:8085"
|
||||
@echo " Master Service: http://localhost:8086"
|
||||
@echo " Auth Server: http://localhost:8087"
|
||||
@echo " Monitoring: http://localhost:8088"
|
||||
|
||||
full-down: ## Stop complete system
|
||||
$(COMPOSE) -f docker-compose.yml -f docker-compose.services.yml -f docker-compose.clients.yml down
|
||||
|
||||
full-restart: ## Restart complete system
|
||||
@$(MAKE) full-down
|
||||
@$(MAKE) full-up
|
||||
|
||||
full-logs: ## Show all system logs
|
||||
$(COMPOSE) -f docker-compose.yml -f docker-compose.services.yml -f docker-compose.clients.yml logs -f
|
||||
|
||||
# ===================================================================
|
||||
# Environment Configuration Commands
|
||||
@@ -247,8 +254,8 @@ prod-restart: ## Restart production environment
|
||||
@$(MAKE) prod-down
|
||||
@$(MAKE) prod-up
|
||||
|
||||
prod-logs: ## Show production logs (simplified)
|
||||
$(COMPOSE) -f docker-compose.yml logs -f
|
||||
prod-logs: ## Show production logs
|
||||
$(COMPOSE) -f docker-compose.yml -f docker-compose.services.yml logs -f
|
||||
|
||||
# ===================================================================
|
||||
# Development Tools
|
||||
@@ -337,19 +344,23 @@ test: ## Run integration tests
|
||||
@echo "🧪 Running integration tests..."
|
||||
@$(MAKE) infrastructure-up
|
||||
@echo "⏳ Waiting for services to be ready..."
|
||||
@sleep 30
|
||||
@sleep 10
|
||||
@$(MAKE) health-check || true
|
||||
@echo "✅ Running test suite..."
|
||||
./gradlew test
|
||||
@./gradlew test || (echo "❌ Tests failed"; $(MAKE) infrastructure-down; exit 1)
|
||||
@$(MAKE) infrastructure-down
|
||||
@echo "✅ Integration tests completed successfully"
|
||||
|
||||
test-e2e: ## Run end-to-end tests with full environment
|
||||
@echo "🧪 Running end-to-end tests..."
|
||||
@$(MAKE) dev-up
|
||||
@echo "⏳ Waiting for full environment to be ready..."
|
||||
@sleep 60
|
||||
@sleep 15
|
||||
@$(MAKE) health-check || true
|
||||
@echo "✅ Running e2e test suite..."
|
||||
./gradlew :client:web-app:jsTest
|
||||
@./gradlew :client:web-app:jsTest || (echo "❌ E2E tests failed"; $(MAKE) dev-down; exit 1)
|
||||
@$(MAKE) dev-down
|
||||
@echo "✅ E2E tests completed successfully"
|
||||
|
||||
# ===================================================================
|
||||
# Information and Help
|
||||
|
||||
+3
-3
@@ -347,10 +347,10 @@ health-endpoint = "/health"
|
||||
# ===================================================================
|
||||
|
||||
[build]
|
||||
gradle-version = "9.0.0"
|
||||
gradle-version = "9.1.0"
|
||||
java-version = "21"
|
||||
node-version = "20.12.0"
|
||||
nginx-version = "1.25-alpine"
|
||||
node-version = "24.11.0"
|
||||
nginx-version = "1.29-alpine"
|
||||
docker-version = "1.0.0"
|
||||
|
||||
# ===================================================================
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# Docker Compose - Client Applications
|
||||
# Generated from docker/versions.toml
|
||||
# Environment: development
|
||||
# Generated: 2025-11-11 12:07:58 UTC
|
||||
# Generated: 2025-11-11 16:11:31 UTC
|
||||
# ===================================================================
|
||||
|
||||
services:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# Docker Compose - Application Services
|
||||
# Generated from docker/versions.toml
|
||||
# Environment: development
|
||||
# Generated: 2025-11-11 12:07:57 UTC
|
||||
# Generated: 2025-11-11 16:11:31 UTC
|
||||
# ===================================================================
|
||||
|
||||
services:
|
||||
|
||||
+40
-1
@@ -2,7 +2,7 @@
|
||||
# Docker Compose - Infrastructure Services
|
||||
# Generated from docker/versions.toml
|
||||
# Environment: development
|
||||
# Generated: 2025-11-11 12:07:57 UTC
|
||||
# Generated: 2025-11-11 16:11:31 UTC
|
||||
# ===================================================================
|
||||
|
||||
services:
|
||||
@@ -111,6 +111,9 @@ services:
|
||||
start_period: 40s
|
||||
restart: unless-stopped
|
||||
|
||||
# ===================================================================
|
||||
# Grafana
|
||||
# ===================================================================
|
||||
grafana:
|
||||
image: grafana/grafana:${DOCKER_GRAFANA_VERSION:-11.3.0}
|
||||
container_name: meldestelle-grafana
|
||||
@@ -136,6 +139,42 @@ services:
|
||||
start_period: 40s
|
||||
restart: unless-stopped
|
||||
|
||||
# ===================================================================
|
||||
# Zipkin
|
||||
# ===================================================================
|
||||
zipkin:
|
||||
image: openzipkin/zipkin:2
|
||||
ports:
|
||||
- "9411:9411"
|
||||
networks:
|
||||
- meldestelle-network
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-q", "-O", "-", "http://localhost:9411/health"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
restart: unless-stopped
|
||||
|
||||
# ===================================================================
|
||||
# Consul
|
||||
# ===================================================================
|
||||
consul:
|
||||
image: hashicorp/consul:1.15
|
||||
ports:
|
||||
- "8500:8500"
|
||||
- "8600:8600/udp"
|
||||
command: agent -server -ui -node=server-1 -bootstrap-expect=1 -client=0.0.0.0
|
||||
networks:
|
||||
- meldestelle-network
|
||||
healthcheck:
|
||||
test: [ "CMD", "curl", "-f", "http://localhost:8500/v1/status/leader" ]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 15s
|
||||
restart: unless-stopped
|
||||
|
||||
# ===================================================================
|
||||
# Volumes
|
||||
# ===================================================================
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# ===================================================================
|
||||
# Clients Docker Build Arguments - dockerfiles/clients/*
|
||||
# Source: docker/versions.toml [categories.clients]
|
||||
# Last updated: 2025-11-11 12:07:52 UTC
|
||||
# Last updated: 2025-11-11 16:11:09 UTC
|
||||
# ===================================================================
|
||||
|
||||
# --- Include Global Arguments ---
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# ===================================================================
|
||||
# Global Docker Build Arguments - Used by all categories
|
||||
# Source: docker/versions.toml
|
||||
# Last updated: 2025-11-11 12:07:52 UTC
|
||||
# Last updated: 2025-11-11 16:11:09 UTC
|
||||
# ===================================================================
|
||||
|
||||
# --- Build Tools ---
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# ===================================================================
|
||||
# Infrastructure Docker Build Arguments - dockerfiles/infrastructure/*
|
||||
# Source: docker/versions.toml [categories.infrastructure]
|
||||
# Last updated: 2025-11-11 12:07:52 UTC
|
||||
# Last updated: 2025-11-11 16:11:09 UTC
|
||||
# ===================================================================
|
||||
|
||||
# --- Include Global Arguments ---
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# ===================================================================
|
||||
# Services Docker Build Arguments - dockerfiles/services/*
|
||||
# Source: docker/versions.toml [categories.services]
|
||||
# Last updated: 2025-11-11 12:07:52 UTC
|
||||
# Last updated: 2025-11-11 16:11:09 UTC
|
||||
# ===================================================================
|
||||
|
||||
# --- Include Global Arguments ---
|
||||
|
||||
@@ -378,7 +378,7 @@ scrape_configs:
|
||||
- 'members-service:8082'
|
||||
- 'horses-service:8083'
|
||||
- 'events-service:8084'
|
||||
- 'gateway:8080'
|
||||
- 'gateway:8081'
|
||||
```
|
||||
|
||||
### Grafana Dashboards
|
||||
@@ -430,7 +430,7 @@ spec:
|
||||
- name: gateway
|
||||
image: meldestelle/api-gateway:latest
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
- containerPort: 8081
|
||||
env:
|
||||
- name: REDIS_HOST
|
||||
value: "redis-service"
|
||||
@@ -535,10 +535,10 @@ kafka-consumer-groups --bootstrap-server localhost:9092 --describe --group melde
|
||||
|
||||
```bash
|
||||
# Gateway Health Check
|
||||
curl http://localhost:8080/actuator/health
|
||||
curl http://localhost:8081/actuator/health
|
||||
|
||||
# Route Configuration prüfen
|
||||
curl http://localhost:8080/actuator/gateway/routes
|
||||
curl http://localhost:8081/actuator/gateway/routes
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
@@ -279,7 +279,7 @@ cd /home/stefan/WsMeldestelle/Meldestelle
|
||||
|
||||
# Mit Docker
|
||||
docker build -t meldestelle/gateway:latest -f infrastructure/gateway/Dockerfile .
|
||||
docker run -p 8080:8080 meldestelle/gateway:latest
|
||||
docker run -p 8081:8081 meldestelle/gateway:latest
|
||||
```
|
||||
|
||||
📖 **Detaillierte Startup-Anleitung:** Siehe `GATEWAY-STARTUP-GUIDE.md` im Projekt-Root für vollständige Befehle und Fehlerbehebung.
|
||||
@@ -324,7 +324,7 @@ docker build -t meldestelle/gateway:1.0.0 \
|
||||
# Container starten
|
||||
docker run -d \
|
||||
--name gateway \
|
||||
-p 8080:8080 \
|
||||
-p 8081:8081 \
|
||||
-e SPRING_PROFILES_ACTIVE=prod \
|
||||
-e CONSUL_HOST=consul \
|
||||
meldestelle/gateway:1.0.0
|
||||
@@ -348,11 +348,11 @@ spec:
|
||||
- name: gateway
|
||||
image: meldestelle/gateway:1.0.0
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
- containerPort: 8081
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /actuator/health
|
||||
port: 8080
|
||||
port: 8081
|
||||
initialDelaySeconds: 90
|
||||
periodSeconds: 30
|
||||
```
|
||||
@@ -394,10 +394,10 @@ spec:
|
||||
docker logs gateway | grep "correlationId"
|
||||
|
||||
# Circuit Breaker Status
|
||||
curl http://localhost:8080/actuator/circuitbreakers
|
||||
curl http://localhost:8081/actuator/circuitbreakers
|
||||
|
||||
# Health Details
|
||||
curl http://localhost:8080/actuator/health
|
||||
curl http://localhost:8081/actuator/health
|
||||
```
|
||||
|
||||
## Zukünftige Erweiterungen
|
||||
|
||||
@@ -11,16 +11,16 @@ spring:
|
||||
resourceserver:
|
||||
jwt:
|
||||
# Issuer URI for JWT validation - Docker internal: keycloak:8080, External: localhost:8180
|
||||
issuer-uri: ${KEYCLOAK_ISSUER_URI:http://keycloak:8080/realms/meldestelle}
|
||||
issuer-uri: ${KEYCLOAK_ISSUER_URI:http://keycloak:8180/realms/meldestelle}
|
||||
# JWK Set URI for fetching public keys to validate JWT signatures
|
||||
jwk-set-uri: ${KEYCLOAK_JWK_SET_URI:http://keycloak:8080/realms/meldestelle/protocol/openid-connect/certs}
|
||||
jwk-set-uri: ${KEYCLOAK_JWK_SET_URI:http://keycloak:8180/realms/meldestelle/protocol/openid-connect/certs}
|
||||
|
||||
# Keycloak-spezifische Konfiguration
|
||||
keycloak:
|
||||
# Internal Docker service name, external via port 8180
|
||||
server-url: ${KEYCLOAK_SERVER_URL:http://keycloak:8080}
|
||||
issuer-uri: ${KEYCLOAK_ISSUER_URI:http://keycloak:8080/realms/meldestelle}
|
||||
jwk-set-uri: ${KEYCLOAK_JWK_SET_URI:http://keycloak:8080/realms/meldestelle/protocol/openid-connect/certs}
|
||||
server-url: ${KEYCLOAK_SERVER_URL:http://keycloak:8180}
|
||||
issuer-uri: ${KEYCLOAK_ISSUER_URI:http://keycloak:8180/realms/meldestelle}
|
||||
jwk-set-uri: ${KEYCLOAK_JWK_SET_URI:http://keycloak:8180/realms/meldestelle/protocol/openid-connect/certs}
|
||||
realm: ${KEYCLOAK_REALM:meldestelle}
|
||||
resource: ${KEYCLOAK_CLIENT_ID:api-gateway}
|
||||
client-id: ${KEYCLOAK_CLIENT_ID:api-gateway}
|
||||
|
||||
@@ -239,7 +239,7 @@ management:
|
||||
zipkin:
|
||||
tracing:
|
||||
endpoint: ${ZIPKIN_TRACING_ENDPOINT:http://localhost:9411/api/v2/spans}
|
||||
# Reduziert Verbindungsfehler wenn Zipkin nicht verfügbar ist
|
||||
# Reduziert Verbindungsfehler, wenn Zipkin nicht verfügbar ist
|
||||
connect-timeout: 1s
|
||||
read-timeout: 10s
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ servers:
|
||||
description: Production Server
|
||||
- url: https://staging-api.meldestelle.at
|
||||
description: Staging Server
|
||||
- url: http://localhost:8080
|
||||
- url: http://localhost:8081
|
||||
description: Local Development Server
|
||||
|
||||
tags:
|
||||
|
||||
@@ -190,3 +190,757 @@ Caused by: java.net.ConnectException: Verbindungsaufbau abgelehnt
|
||||
at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75)
|
||||
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
|
||||
... 45 common frames omitted
|
||||
2025-11-11 17:24:21.517 [background-preinit] INFO [] o.h.validator.internal.util.Version - HV000001: Hibernate Validator 8.0.3.Final
|
||||
2025-11-11 17:24:21.541 [main] INFO [] a.m.i.gateway.GatewayApplicationKt - Starting GatewayApplicationKt using Java 21.0.9 with PID 60081 (/home/stefan-mo/WsMeldestelle/Meldestelle/infrastructure/gateway/build/classes/kotlin/main started by stefan-mo in /home/stefan-mo/WsMeldestelle/Meldestelle)
|
||||
2025-11-11 17:24:21.542 [main] DEBUG [] a.m.i.gateway.GatewayApplicationKt - Running with Spring Boot v3.5.6, Spring v6.2.11
|
||||
2025-11-11 17:24:21.542 [main] INFO [] a.m.i.gateway.GatewayApplicationKt - The following 1 profile is active: "dev"
|
||||
2025-11-11 17:24:22.681 [main] INFO [] o.s.cloud.context.scope.GenericScope - BeanFactory id=4eb90187-1826-32ce-9dc7-fa80cb000915
|
||||
2025-11-11 17:24:24.774 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [After]
|
||||
2025-11-11 17:24:24.774 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Before]
|
||||
2025-11-11 17:24:24.774 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Between]
|
||||
2025-11-11 17:24:24.775 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Cookie]
|
||||
2025-11-11 17:24:24.775 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Header]
|
||||
2025-11-11 17:24:24.775 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Host]
|
||||
2025-11-11 17:24:24.775 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Method]
|
||||
2025-11-11 17:24:24.775 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Path]
|
||||
2025-11-11 17:24:24.775 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Query]
|
||||
2025-11-11 17:24:24.775 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [ReadBody]
|
||||
2025-11-11 17:24:24.775 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [RemoteAddr]
|
||||
2025-11-11 17:24:24.775 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [XForwardedRemoteAddr]
|
||||
2025-11-11 17:24:24.775 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Weight]
|
||||
2025-11-11 17:24:24.775 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [CloudFoundryRouteService]
|
||||
2025-11-11 17:24:25.480 [main] INFO [] o.s.b.a.e.web.EndpointLinksResolver - Exposing 6 endpoints beneath base path '/actuator'
|
||||
2025-11-11 17:24:26.114 [main] WARN [] o.s.c.l.c.LoadBalancerCacheAutoConfiguration$LoadBalancerCaffeineWarnLogger - Spring Cloud LoadBalancer is currently working with the default cache. While this cache implementation is useful for development and tests, it's recommended to use Caffeine cache in production.You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
|
||||
2025-11-11 17:24:26.202 [catalogWatchTaskScheduler-1] ERROR [] o.s.c.c.discovery.ConsulCatalogWatch - Error watching Consul CatalogServices
|
||||
com.ecwid.consul.transport.TransportException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:8500 [localhost/127.0.0.1] failed: Verbindungsaufbau abgelehnt
|
||||
at com.ecwid.consul.transport.AbstractHttpTransport.executeRequest(AbstractHttpTransport.java:83)
|
||||
at com.ecwid.consul.transport.AbstractHttpTransport.makeGetRequest(AbstractHttpTransport.java:36)
|
||||
at com.ecwid.consul.v1.ConsulRawClient.makeGetRequest(ConsulRawClient.java:139)
|
||||
at com.ecwid.consul.v1.catalog.CatalogConsulClient.getCatalogServices(CatalogConsulClient.java:143)
|
||||
at com.ecwid.consul.v1.ConsulClient.getCatalogServices(ConsulClient.java:400)
|
||||
at org.springframework.cloud.consul.discovery.ConsulCatalogWatch.catalogServicesWatch(ConsulCatalogWatch.java:131)
|
||||
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
|
||||
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
|
||||
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
|
||||
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
|
||||
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
|
||||
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
|
||||
at java.base/java.lang.Thread.run(Thread.java:1583)
|
||||
Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:8500 [localhost/127.0.0.1] failed: Verbindungsaufbau abgelehnt
|
||||
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:156)
|
||||
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
|
||||
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
|
||||
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
|
||||
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
|
||||
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
|
||||
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
|
||||
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
|
||||
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72)
|
||||
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:221)
|
||||
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:165)
|
||||
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:140)
|
||||
at com.ecwid.consul.transport.AbstractHttpTransport.executeRequest(AbstractHttpTransport.java:70)
|
||||
... 12 common frames omitted
|
||||
Caused by: java.net.ConnectException: Verbindungsaufbau abgelehnt
|
||||
at java.base/sun.nio.ch.Net.pollConnect(Native Method)
|
||||
at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682)
|
||||
at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542)
|
||||
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:592)
|
||||
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
|
||||
at java.base/java.net.Socket.connect(Socket.java:751)
|
||||
at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75)
|
||||
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
|
||||
... 24 common frames omitted
|
||||
2025-11-11 17:24:26.221 [main] INFO [] o.s.b.w.e.netty.NettyWebServer - Netty started on port 8080 (http)
|
||||
2025-11-11 17:24:26.224 [main] INFO [] o.s.c.c.s.ConsulServiceRegistry - Registering service with consul: NewService{id='meldestelle-8080-3272ca20-9767-47d5-907c-f731f4d8125e', name='meldestelle', tags=[], address='10.0.0.18', meta={secure=false}, port=8080, enableTagOverride=null, check=Check{script='null', dockerContainerID='null', shell='null', interval='10s', ttl='null', http='http://10.0.0.18:8080/actuator/health', method='null', header={}, tcp='null', timeout='null', deregisterCriticalServiceAfter='null', tlsSkipVerify=null, status='null', grpc='null', grpcUseTLS=null}, checks=null}
|
||||
2025-11-11 17:24:26.233 [main] ERROR [] o.s.c.c.s.ConsulServiceRegistry - Error registering service with consul: NewService{id='meldestelle-8080-3272ca20-9767-47d5-907c-f731f4d8125e', name='meldestelle', tags=[], address='10.0.0.18', meta={secure=false}, port=8080, enableTagOverride=null, check=Check{script='null', dockerContainerID='null', shell='null', interval='10s', ttl='null', http='http://10.0.0.18:8080/actuator/health', method='null', header={}, tcp='null', timeout='null', deregisterCriticalServiceAfter='null', tlsSkipVerify=null, status='null', grpc='null', grpcUseTLS=null}, checks=null}
|
||||
com.ecwid.consul.transport.TransportException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:8500 [localhost/127.0.0.1] failed: Verbindungsaufbau abgelehnt
|
||||
at com.ecwid.consul.transport.AbstractHttpTransport.executeRequest(AbstractHttpTransport.java:83)
|
||||
at com.ecwid.consul.transport.AbstractHttpTransport.makePutRequest(AbstractHttpTransport.java:49)
|
||||
at com.ecwid.consul.v1.ConsulRawClient.makePutRequest(ConsulRawClient.java:163)
|
||||
at com.ecwid.consul.v1.agent.AgentConsulClient.agentServiceRegister(AgentConsulClient.java:273)
|
||||
at com.ecwid.consul.v1.ConsulClient.agentServiceRegister(ConsulClient.java:310)
|
||||
at org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistry.register(ConsulServiceRegistry.java:67)
|
||||
at org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistry.register(ConsulServiceRegistry.java:43)
|
||||
at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.register(AbstractAutoServiceRegistration.java:264)
|
||||
at org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistration.register(ConsulAutoServiceRegistration.java:80)
|
||||
at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.start(AbstractAutoServiceRegistration.java:156)
|
||||
at org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistration.start(ConsulAutoServiceRegistration.java:70)
|
||||
at org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistrationListener.onApplicationEvent(ConsulAutoServiceRegistrationListener.java:60)
|
||||
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185)
|
||||
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178)
|
||||
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156)
|
||||
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:454)
|
||||
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:387)
|
||||
at org.springframework.boot.web.reactive.context.WebServerManager.start(WebServerManager.java:57)
|
||||
at org.springframework.boot.web.reactive.context.WebServerStartStopLifecycle.start(WebServerStartStopLifecycle.java:41)
|
||||
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:405)
|
||||
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:394)
|
||||
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:586)
|
||||
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
|
||||
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:364)
|
||||
at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:310)
|
||||
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:1006)
|
||||
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:630)
|
||||
at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66)
|
||||
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752)
|
||||
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:318)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350)
|
||||
at at.mocode.infrastructure.gateway.GatewayApplicationKt.main(GatewayApplication.kt:13)
|
||||
Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:8500 [localhost/127.0.0.1] failed: Verbindungsaufbau abgelehnt
|
||||
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:156)
|
||||
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
|
||||
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
|
||||
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
|
||||
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
|
||||
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
|
||||
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
|
||||
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
|
||||
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72)
|
||||
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:221)
|
||||
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:165)
|
||||
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:140)
|
||||
at com.ecwid.consul.transport.AbstractHttpTransport.executeRequest(AbstractHttpTransport.java:70)
|
||||
... 33 common frames omitted
|
||||
Caused by: java.net.ConnectException: Verbindungsaufbau abgelehnt
|
||||
at java.base/sun.nio.ch.Net.pollConnect(Native Method)
|
||||
at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682)
|
||||
at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542)
|
||||
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:592)
|
||||
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
|
||||
at java.base/java.net.Socket.connect(Socket.java:751)
|
||||
at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75)
|
||||
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
|
||||
... 45 common frames omitted
|
||||
2025-11-11 17:24:28.246 [main] WARN [] o.s.b.w.r.c.AnnotationConfigReactiveWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'
|
||||
2025-11-11 17:24:28.270 [main] INFO [] o.s.b.a.l.ConditionEvaluationReportLogger -
|
||||
|
||||
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
|
||||
2025-11-11 17:24:28.284 [main] ERROR [] o.s.boot.SpringApplication - Application run failed
|
||||
org.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'
|
||||
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:408)
|
||||
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:394)
|
||||
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:586)
|
||||
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
|
||||
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:364)
|
||||
at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:310)
|
||||
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:1006)
|
||||
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:630)
|
||||
at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66)
|
||||
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752)
|
||||
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:318)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350)
|
||||
at at.mocode.infrastructure.gateway.GatewayApplicationKt.main(GatewayApplication.kt:13)
|
||||
Caused by: com.ecwid.consul.transport.TransportException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:8500 [localhost/127.0.0.1] failed: Verbindungsaufbau abgelehnt
|
||||
at com.ecwid.consul.transport.AbstractHttpTransport.executeRequest(AbstractHttpTransport.java:83)
|
||||
at com.ecwid.consul.transport.AbstractHttpTransport.makePutRequest(AbstractHttpTransport.java:49)
|
||||
at com.ecwid.consul.v1.ConsulRawClient.makePutRequest(ConsulRawClient.java:163)
|
||||
at com.ecwid.consul.v1.agent.AgentConsulClient.agentServiceRegister(AgentConsulClient.java:273)
|
||||
at com.ecwid.consul.v1.ConsulClient.agentServiceRegister(ConsulClient.java:310)
|
||||
at org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistry.register(ConsulServiceRegistry.java:67)
|
||||
at org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistry.register(ConsulServiceRegistry.java:43)
|
||||
at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.register(AbstractAutoServiceRegistration.java:264)
|
||||
at org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistration.register(ConsulAutoServiceRegistration.java:80)
|
||||
at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.start(AbstractAutoServiceRegistration.java:156)
|
||||
at org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistration.start(ConsulAutoServiceRegistration.java:70)
|
||||
at org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistrationListener.onApplicationEvent(ConsulAutoServiceRegistrationListener.java:60)
|
||||
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185)
|
||||
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178)
|
||||
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156)
|
||||
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:454)
|
||||
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:387)
|
||||
at org.springframework.boot.web.reactive.context.WebServerManager.start(WebServerManager.java:57)
|
||||
at org.springframework.boot.web.reactive.context.WebServerStartStopLifecycle.start(WebServerStartStopLifecycle.java:41)
|
||||
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:405)
|
||||
... 14 common frames omitted
|
||||
Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:8500 [localhost/127.0.0.1] failed: Verbindungsaufbau abgelehnt
|
||||
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:156)
|
||||
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
|
||||
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
|
||||
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
|
||||
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
|
||||
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
|
||||
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
|
||||
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
|
||||
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72)
|
||||
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:221)
|
||||
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:165)
|
||||
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:140)
|
||||
at com.ecwid.consul.transport.AbstractHttpTransport.executeRequest(AbstractHttpTransport.java:70)
|
||||
... 33 common frames omitted
|
||||
Caused by: java.net.ConnectException: Verbindungsaufbau abgelehnt
|
||||
at java.base/sun.nio.ch.Net.pollConnect(Native Method)
|
||||
at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682)
|
||||
at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542)
|
||||
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:592)
|
||||
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
|
||||
at java.base/java.net.Socket.connect(Socket.java:751)
|
||||
at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75)
|
||||
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
|
||||
... 45 common frames omitted
|
||||
2025-11-11 17:41:20.785 [background-preinit] INFO [] o.h.validator.internal.util.Version - HV000001: Hibernate Validator 8.0.3.Final
|
||||
2025-11-11 17:41:20.807 [main] INFO [] a.m.i.gateway.GatewayApplicationKt - Starting GatewayApplicationKt using Java 21.0.9 with PID 66761 (/home/stefan-mo/WsMeldestelle/Meldestelle/infrastructure/gateway/build/classes/kotlin/main started by stefan-mo in /home/stefan-mo/WsMeldestelle/Meldestelle)
|
||||
2025-11-11 17:41:20.807 [main] DEBUG [] a.m.i.gateway.GatewayApplicationKt - Running with Spring Boot v3.5.6, Spring v6.2.11
|
||||
2025-11-11 17:41:20.807 [main] INFO [] a.m.i.gateway.GatewayApplicationKt - The following 1 profile is active: "dev"
|
||||
2025-11-11 17:41:21.890 [main] INFO [] o.s.cloud.context.scope.GenericScope - BeanFactory id=4eb90187-1826-32ce-9dc7-fa80cb000915
|
||||
2025-11-11 17:41:23.800 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [After]
|
||||
2025-11-11 17:41:23.800 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Before]
|
||||
2025-11-11 17:41:23.800 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Between]
|
||||
2025-11-11 17:41:23.800 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Cookie]
|
||||
2025-11-11 17:41:23.800 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Header]
|
||||
2025-11-11 17:41:23.800 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Host]
|
||||
2025-11-11 17:41:23.800 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Method]
|
||||
2025-11-11 17:41:23.800 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Path]
|
||||
2025-11-11 17:41:23.800 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Query]
|
||||
2025-11-11 17:41:23.800 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [ReadBody]
|
||||
2025-11-11 17:41:23.800 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [RemoteAddr]
|
||||
2025-11-11 17:41:23.800 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [XForwardedRemoteAddr]
|
||||
2025-11-11 17:41:23.800 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Weight]
|
||||
2025-11-11 17:41:23.801 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [CloudFoundryRouteService]
|
||||
2025-11-11 17:41:24.395 [main] INFO [] o.s.b.a.e.web.EndpointLinksResolver - Exposing 6 endpoints beneath base path '/actuator'
|
||||
2025-11-11 17:41:25.036 [main] WARN [] o.s.c.l.c.LoadBalancerCacheAutoConfiguration$LoadBalancerCaffeineWarnLogger - Spring Cloud LoadBalancer is currently working with the default cache. While this cache implementation is useful for development and tests, it's recommended to use Caffeine cache in production.You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
|
||||
2025-11-11 17:41:25.145 [main] INFO [] o.s.b.w.e.netty.NettyWebServer - Netty started on port 8080 (http)
|
||||
2025-11-11 17:41:25.148 [main] INFO [] o.s.c.c.s.ConsulServiceRegistry - Registering service with consul: NewService{id='meldestelle-8080-4eca3f58-3081-422e-8d6f-88fd29eca82b', name='meldestelle', tags=[], address='10.0.0.18', meta={secure=false}, port=8080, enableTagOverride=null, check=Check{script='null', dockerContainerID='null', shell='null', interval='10s', ttl='null', http='http://10.0.0.18:8080/actuator/health', method='null', header={}, tcp='null', timeout='null', deregisterCriticalServiceAfter='null', tlsSkipVerify=null, status='null', grpc='null', grpcUseTLS=null}, checks=null}
|
||||
2025-11-11 17:41:25.293 [main] INFO [] a.m.i.gateway.GatewayApplicationKt - Started GatewayApplicationKt in 4.771 seconds (process running for 5.315)
|
||||
2025-11-11 17:44:40.693 [parallel-4] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /[0:0:0:0:0:0:0:1]:60764
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.775 [parallel-7] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49250
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.781 [parallel-10] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49256
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.786 [parallel-13] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49272
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.790 [parallel-16] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49284
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.795 [parallel-3] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49300
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.800 [parallel-6] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49312
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.804 [parallel-9] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49316
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.809 [parallel-12] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49328
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.814 [parallel-15] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49336
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.818 [parallel-2] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49340
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.822 [parallel-5] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49342
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.827 [parallel-8] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49352
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.832 [parallel-11] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49366
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.835 [parallel-14] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49368
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.839 [parallel-1] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49370
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.843 [parallel-4] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49372
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.848 [parallel-7] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49382
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.851 [parallel-10] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49390
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.854 [parallel-13] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49404
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.857 [parallel-16] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49408
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.861 [parallel-3] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49412
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.865 [parallel-6] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49414
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.868 [parallel-9] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49424
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.871 [parallel-12] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49434
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.874 [parallel-15] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49448
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.891 [reactor-http-epoll-16] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 503 SERVICE_UNAVAILABLE
|
||||
ResponseTime: 17ms
|
||||
2025-11-11 17:44:40.894 [reactor-http-epoll-16] WARN [] i.m.p.PrometheusMeterRegistry - The meter (MeterId{name='gateway_errors_total', tags=[tag(application=meldestelle),tag(component=infrastructure),tag(environment=dev),tag(error_type=server_error),tag(gateway=api-gateway),tag(instance=meldestelle-8080-7c278a17-e0ca-4d8a-ac26-1dbd531a9168),tag(method=GET),tag(path=/),tag(service=gateway),tag(status=503),tag(status_series=5xx)]}) registration has failed: Prometheus requires that all meters with the same name have the same set of tag keys. There is already an existing meter named 'gateway_errors' containing tag keys [application, component, environment, gateway, instance, service]. The meter you are attempting to register has keys [application, component, environment, error_type, gateway, instance, method, path, service, status, status_series]. Note that subsequent logs will be logged at debug level.
|
||||
2025-11-11 17:44:40.950 [parallel-4] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49464
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:40.952 [reactor-http-epoll-2] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 503 SERVICE_UNAVAILABLE
|
||||
ResponseTime: 2ms
|
||||
2025-11-11 17:44:41.058 [parallel-9] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49478
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.060 [reactor-http-epoll-4] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 503 SERVICE_UNAVAILABLE
|
||||
ResponseTime: 3ms
|
||||
2025-11-11 17:44:41.265 [parallel-14] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:38924
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.267 [reactor-http-epoll-6] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 503 SERVICE_UNAVAILABLE
|
||||
ResponseTime: 2ms
|
||||
2025-11-11 17:44:41.275 [reactor-http-epoll-14] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 407ms
|
||||
2025-11-11 17:44:41.275 [reactor-http-epoll-15] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 404ms
|
||||
2025-11-11 17:44:41.276 [reactor-http-epoll-13] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 411ms
|
||||
2025-11-11 17:44:41.277 [reactor-http-epoll-12] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 416ms
|
||||
2025-11-11 17:44:41.278 [reactor-http-epoll-11] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 421ms
|
||||
2025-11-11 17:44:41.279 [reactor-http-epoll-10] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 425ms
|
||||
2025-11-11 17:44:41.280 [reactor-http-epoll-9] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 429ms
|
||||
2025-11-11 17:44:41.282 [reactor-http-epoll-8] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 434ms
|
||||
2025-11-11 17:44:41.283 [reactor-http-epoll-7] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 440ms
|
||||
2025-11-11 17:44:41.284 [reactor-http-epoll-6] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 445ms
|
||||
2025-11-11 17:44:41.285 [reactor-http-epoll-5] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 450ms
|
||||
2025-11-11 17:44:41.287 [reactor-http-epoll-4] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 455ms
|
||||
2025-11-11 17:44:41.288 [reactor-http-epoll-3] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 461ms
|
||||
2025-11-11 17:44:41.289 [reactor-http-epoll-2] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 467ms
|
||||
2025-11-11 17:44:41.291 [reactor-http-epoll-1] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 473ms
|
||||
2025-11-11 17:44:41.292 [reactor-http-epoll-16] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 478ms
|
||||
2025-11-11 17:44:41.294 [reactor-http-epoll-15] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 485ms
|
||||
2025-11-11 17:44:41.295 [reactor-http-epoll-14] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 491ms
|
||||
2025-11-11 17:44:41.297 [reactor-http-epoll-13] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 497ms
|
||||
2025-11-11 17:44:41.298 [reactor-http-epoll-12] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 503ms
|
||||
2025-11-11 17:44:41.300 [reactor-http-epoll-11] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 510ms
|
||||
2025-11-11 17:44:41.303 [reactor-http-epoll-10] WARN [] r.n.http.client.HttpClientConnect - [0533bbdd-1, L:/127.0.0.1:49284 - R:localhost/127.0.0.1:8080] The connection observed an error
|
||||
io.netty.handler.codec.http.TooLongHttpHeaderException: HTTP header is larger than 8192 bytes.
|
||||
at io.netty.handler.codec.http.HttpObjectDecoder$HeaderParser.newException(HttpObjectDecoder.java:1224)
|
||||
at io.netty.handler.codec.http.HttpObjectDecoder$HeaderParser.parse(HttpObjectDecoder.java:1188)
|
||||
at io.netty.handler.codec.http.HttpObjectDecoder.readHeaders(HttpObjectDecoder.java:768)
|
||||
at io.netty.handler.codec.http.HttpObjectDecoder.decode(HttpObjectDecoder.java:382)
|
||||
at io.netty.handler.codec.http.HttpClientCodec$Decoder.decode(HttpClientCodec.java:320)
|
||||
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)
|
||||
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)
|
||||
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
|
||||
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
|
||||
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
|
||||
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
|
||||
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
|
||||
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357)
|
||||
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
|
||||
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
|
||||
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868)
|
||||
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:799)
|
||||
at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe$1.run(AbstractEpollChannel.java:425)
|
||||
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
|
||||
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
|
||||
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
|
||||
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:405)
|
||||
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)
|
||||
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||
at java.base/java.lang.Thread.run(Thread.java:1583)
|
||||
2025-11-11 17:44:41.306 [reactor-http-epoll-10] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 503 SERVICE_UNAVAILABLE
|
||||
ResponseTime: 521ms
|
||||
2025-11-11 17:44:41.361 [parallel-8] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:38924
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.363 [parallel-11] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49434
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.366 [parallel-14] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49424
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.368 [parallel-1] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49414
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.370 [parallel-4] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49412
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.372 [parallel-7] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49408
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.375 [parallel-10] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49404
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.378 [parallel-13] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49390
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.380 [parallel-16] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49382
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.382 [parallel-3] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49372
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.386 [parallel-6] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49370
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.388 [parallel-9] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49368
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.391 [parallel-12] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49366
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.394 [parallel-15] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49352
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.396 [parallel-2] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49342
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.399 [parallel-5] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49340
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.401 [parallel-8] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49336
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.404 [parallel-11] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49328
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.405 [parallel-14] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49316
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.408 [parallel-1] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49312
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.410 [parallel-4] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:49300
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.413 [parallel-7] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:38930
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.416 [parallel-10] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:38936
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.416 [parallel-10] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 429 TOO_MANY_REQUESTS
|
||||
ResponseTime: 0ms
|
||||
2025-11-11 17:44:41.419 [reactor-http-epoll-7] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 6ms
|
||||
2025-11-11 17:44:41.419 [reactor-http-epoll-12] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 9ms
|
||||
2025-11-11 17:44:41.420 [reactor-http-epoll-13] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 12ms
|
||||
2025-11-11 17:44:41.421 [reactor-http-epoll-14] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 16ms
|
||||
2025-11-11 17:44:41.422 [reactor-http-epoll-15] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 18ms
|
||||
2025-11-11 17:44:41.424 [reactor-http-epoll-16] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 23ms
|
||||
2025-11-11 17:44:41.425 [reactor-http-epoll-1] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 26ms
|
||||
2025-11-11 17:44:41.426 [reactor-http-epoll-2] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 30ms
|
||||
2025-11-11 17:44:41.427 [reactor-http-epoll-3] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 33ms
|
||||
2025-11-11 17:44:41.428 [reactor-http-epoll-4] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 37ms
|
||||
2025-11-11 17:44:41.429 [reactor-http-epoll-5] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 41ms
|
||||
2025-11-11 17:44:41.430 [reactor-http-epoll-6] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 44ms
|
||||
2025-11-11 17:44:41.432 [reactor-http-epoll-7] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 50ms
|
||||
2025-11-11 17:44:41.433 [reactor-http-epoll-8] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 53ms
|
||||
2025-11-11 17:44:41.434 [reactor-http-epoll-9] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 56ms
|
||||
2025-11-11 17:44:41.435 [reactor-http-epoll-10] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 60ms
|
||||
2025-11-11 17:44:41.436 [reactor-http-epoll-11] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 64ms
|
||||
2025-11-11 17:44:41.438 [reactor-http-epoll-12] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 67ms
|
||||
2025-11-11 17:44:41.439 [reactor-http-epoll-13] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 71ms
|
||||
2025-11-11 17:44:41.441 [reactor-http-epoll-14] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 75ms
|
||||
2025-11-11 17:44:41.441 [reactor-http-epoll-13] WARN [] r.n.http.client.HttpClientConnect - [5e3549f4-2, L:/127.0.0.1:49424 - R:localhost/127.0.0.1:8080] The connection observed an error
|
||||
io.netty.handler.codec.http.TooLongHttpHeaderException: HTTP header is larger than 8192 bytes.
|
||||
at io.netty.handler.codec.http.HttpObjectDecoder$HeaderParser.newException(HttpObjectDecoder.java:1224)
|
||||
at io.netty.handler.codec.http.HttpObjectDecoder$HeaderParser.parse(HttpObjectDecoder.java:1188)
|
||||
at io.netty.handler.codec.http.HttpObjectDecoder.readHeaders(HttpObjectDecoder.java:768)
|
||||
at io.netty.handler.codec.http.HttpObjectDecoder.decode(HttpObjectDecoder.java:382)
|
||||
at io.netty.handler.codec.http.HttpClientCodec$Decoder.decode(HttpClientCodec.java:320)
|
||||
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)
|
||||
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)
|
||||
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
|
||||
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
|
||||
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
|
||||
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
|
||||
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
|
||||
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357)
|
||||
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
|
||||
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
|
||||
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868)
|
||||
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:799)
|
||||
at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe$1.run(AbstractEpollChannel.java:425)
|
||||
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
|
||||
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
|
||||
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
|
||||
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:405)
|
||||
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)
|
||||
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||
at java.base/java.lang.Thread.run(Thread.java:1583)
|
||||
2025-11-11 17:44:41.443 [reactor-http-epoll-13] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 503 SERVICE_UNAVAILABLE
|
||||
ResponseTime: 80ms
|
||||
2025-11-11 17:44:41.497 [parallel-3] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [REQUEST] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Method: GET
|
||||
URI: http://localhost:8080/
|
||||
RemoteAddress: /127.0.0.1:38936
|
||||
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
|
||||
2025-11-11 17:44:41.497 [parallel-3] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 429 TOO_MANY_REQUESTS
|
||||
ResponseTime: 0ms
|
||||
2025-11-11 17:44:41.500 [reactor-http-epoll-6] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 139ms
|
||||
2025-11-11 17:44:41.501 [reactor-http-epoll-9] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 720ms
|
||||
2025-11-11 17:44:41.502 [reactor-http-epoll-8] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 727ms
|
||||
2025-11-11 17:44:41.502 [reactor-http-epoll-6] INFO [] a.m.i.g.config.EnhancedLoggingFilter - [RESPONSE] [f8c25936-6e27-4bee-9288-a72992217a64]
|
||||
Status: 200 OK
|
||||
ResponseTime: 809ms
|
||||
2025-11-11 17:54:36.819 [SpringApplicationShutdownHook] INFO [] o.s.b.w.e.netty.GracefulShutdown - Commencing graceful shutdown. Waiting for active requests to complete
|
||||
2025-11-11 17:54:36.821 [netty-shutdown] INFO [] o.s.b.w.e.netty.GracefulShutdown - Graceful shutdown complete
|
||||
2025-11-11 17:54:38.831 [SpringApplicationShutdownHook] INFO [] o.s.c.c.s.ConsulServiceRegistry - Deregistering service with consul: meldestelle-8080-4eca3f58-3081-422e-8d6f-88fd29eca82b
|
||||
2025-11-11 17:56:49.328 [background-preinit] INFO [] o.h.validator.internal.util.Version - HV000001: Hibernate Validator 8.0.3.Final
|
||||
2025-11-11 17:56:49.354 [main] INFO [] a.m.i.gateway.GatewayApplicationKt - Starting GatewayApplicationKt using Java 21.0.9 with PID 77080 (/home/stefan-mo/WsMeldestelle/Meldestelle/infrastructure/gateway/build/classes/kotlin/main started by stefan-mo in /home/stefan-mo/WsMeldestelle/Meldestelle)
|
||||
2025-11-11 17:56:49.355 [main] DEBUG [] a.m.i.gateway.GatewayApplicationKt - Running with Spring Boot v3.5.6, Spring v6.2.11
|
||||
2025-11-11 17:56:49.355 [main] INFO [] a.m.i.gateway.GatewayApplicationKt - The following 1 profile is active: "dev"
|
||||
2025-11-11 17:56:50.482 [main] INFO [] o.s.cloud.context.scope.GenericScope - BeanFactory id=4eb90187-1826-32ce-9dc7-fa80cb000915
|
||||
2025-11-11 17:56:52.459 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [After]
|
||||
2025-11-11 17:56:52.460 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Before]
|
||||
2025-11-11 17:56:52.460 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Between]
|
||||
2025-11-11 17:56:52.460 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Cookie]
|
||||
2025-11-11 17:56:52.460 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Header]
|
||||
2025-11-11 17:56:52.460 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Host]
|
||||
2025-11-11 17:56:52.460 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Method]
|
||||
2025-11-11 17:56:52.460 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Path]
|
||||
2025-11-11 17:56:52.460 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Query]
|
||||
2025-11-11 17:56:52.460 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [ReadBody]
|
||||
2025-11-11 17:56:52.460 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [RemoteAddr]
|
||||
2025-11-11 17:56:52.460 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [XForwardedRemoteAddr]
|
||||
2025-11-11 17:56:52.460 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Weight]
|
||||
2025-11-11 17:56:52.460 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [CloudFoundryRouteService]
|
||||
2025-11-11 17:56:53.117 [main] INFO [] o.s.b.a.e.web.EndpointLinksResolver - Exposing 6 endpoints beneath base path '/actuator'
|
||||
2025-11-11 17:56:53.677 [main] WARN [] o.s.c.l.c.LoadBalancerCacheAutoConfiguration$LoadBalancerCaffeineWarnLogger - Spring Cloud LoadBalancer is currently working with the default cache. While this cache implementation is useful for development and tests, it's recommended to use Caffeine cache in production.You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
|
||||
2025-11-11 17:56:53.786 [main] INFO [] o.s.b.w.e.netty.NettyWebServer - Netty started on port 8080 (http)
|
||||
2025-11-11 17:56:53.788 [main] INFO [] o.s.c.c.s.ConsulServiceRegistry - Registering service with consul: NewService{id='meldestelle-8080-53c3b7cb-cff4-4c60-a423-ee7f507acd3b', name='meldestelle', tags=[], address='10.0.0.18', meta={secure=false}, port=8080, enableTagOverride=null, check=Check{script='null', dockerContainerID='null', shell='null', interval='10s', ttl='null', http='http://10.0.0.18:8080/actuator/health', method='null', header={}, tcp='null', timeout='null', deregisterCriticalServiceAfter='null', tlsSkipVerify=null, status='null', grpc='null', grpcUseTLS=null}, checks=null}
|
||||
2025-11-11 17:56:53.925 [main] INFO [] a.m.i.gateway.GatewayApplicationKt - Started GatewayApplicationKt in 4.9 seconds (process running for 5.483)
|
||||
2025-11-11 17:57:12.800 [SpringApplicationShutdownHook] INFO [] o.s.b.w.e.netty.GracefulShutdown - Commencing graceful shutdown. Waiting for active requests to complete
|
||||
2025-11-11 17:57:12.802 [netty-shutdown] INFO [] o.s.b.w.e.netty.GracefulShutdown - Graceful shutdown complete
|
||||
2025-11-11 17:57:14.812 [SpringApplicationShutdownHook] INFO [] o.s.c.c.s.ConsulServiceRegistry - Deregistering service with consul: meldestelle-8080-53c3b7cb-cff4-4c60-a423-ee7f507acd3b
|
||||
2025-11-11 18:13:55.110 [background-preinit] INFO [] o.h.validator.internal.util.Version - HV000001: Hibernate Validator 8.0.3.Final
|
||||
2025-11-11 18:13:55.137 [main] INFO [] a.m.i.gateway.GatewayApplicationKt - Starting GatewayApplicationKt using Java 21.0.9 with PID 91093 (/home/stefan-mo/WsMeldestelle/Meldestelle/infrastructure/gateway/build/classes/kotlin/main started by stefan-mo in /home/stefan-mo/WsMeldestelle/Meldestelle)
|
||||
2025-11-11 18:13:55.138 [main] DEBUG [] a.m.i.gateway.GatewayApplicationKt - Running with Spring Boot v3.5.6, Spring v6.2.11
|
||||
2025-11-11 18:13:55.138 [main] INFO [] a.m.i.gateway.GatewayApplicationKt - The following 1 profile is active: "dev"
|
||||
2025-11-11 18:13:56.308 [main] INFO [] o.s.cloud.context.scope.GenericScope - BeanFactory id=4eb90187-1826-32ce-9dc7-fa80cb000915
|
||||
2025-11-11 18:13:58.251 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [After]
|
||||
2025-11-11 18:13:58.251 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Before]
|
||||
2025-11-11 18:13:58.251 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Between]
|
||||
2025-11-11 18:13:58.252 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Cookie]
|
||||
2025-11-11 18:13:58.252 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Header]
|
||||
2025-11-11 18:13:58.252 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Host]
|
||||
2025-11-11 18:13:58.252 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Method]
|
||||
2025-11-11 18:13:58.252 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Path]
|
||||
2025-11-11 18:13:58.252 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Query]
|
||||
2025-11-11 18:13:58.252 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [ReadBody]
|
||||
2025-11-11 18:13:58.252 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [RemoteAddr]
|
||||
2025-11-11 18:13:58.252 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [XForwardedRemoteAddr]
|
||||
2025-11-11 18:13:58.252 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [Weight]
|
||||
2025-11-11 18:13:58.252 [main] INFO [] o.s.c.g.r.RouteDefinitionRouteLocator - Loaded RoutePredicateFactory [CloudFoundryRouteService]
|
||||
2025-11-11 18:13:58.898 [main] INFO [] o.s.b.a.e.web.EndpointLinksResolver - Exposing 6 endpoints beneath base path '/actuator'
|
||||
2025-11-11 18:13:59.469 [main] WARN [] o.s.c.l.c.LoadBalancerCacheAutoConfiguration$LoadBalancerCaffeineWarnLogger - Spring Cloud LoadBalancer is currently working with the default cache. While this cache implementation is useful for development and tests, it's recommended to use Caffeine cache in production.You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
|
||||
2025-11-11 18:13:59.562 [main] INFO [] o.s.b.w.e.netty.NettyWebServer - Netty started on port 8080 (http)
|
||||
2025-11-11 18:13:59.564 [main] INFO [] o.s.c.c.s.ConsulServiceRegistry - Registering service with consul: NewService{id='meldestelle-8080-d4055d7b-f605-4fde-a992-8b4f3adb8a86', name='meldestelle', tags=[], address='10.0.0.18', meta={secure=false}, port=8080, enableTagOverride=null, check=Check{script='null', dockerContainerID='null', shell='null', interval='10s', ttl='null', http='http://10.0.0.18:8080/actuator/health', method='null', header={}, tcp='null', timeout='null', deregisterCriticalServiceAfter='null', tlsSkipVerify=null, status='null', grpc='null', grpcUseTLS=null}, checks=null}
|
||||
2025-11-11 18:13:59.707 [main] INFO [] a.m.i.gateway.GatewayApplicationKt - Started GatewayApplicationKt in 4.898 seconds (process running for 5.441)
|
||||
2025-11-11 18:14:46.705 [SpringApplicationShutdownHook] INFO [] o.s.b.w.e.netty.GracefulShutdown - Commencing graceful shutdown. Waiting for active requests to complete
|
||||
2025-11-11 18:14:46.706 [netty-shutdown] INFO [] o.s.b.w.e.netty.GracefulShutdown - Graceful shutdown complete
|
||||
2025-11-11 18:14:48.719 [SpringApplicationShutdownHook] INFO [] o.s.c.c.s.ConsulServiceRegistry - Deregistering service with consul: meldestelle-8080-d4055d7b-f605-4fde-a992-8b4f3adb8a86
|
||||
|
||||
@@ -38,8 +38,8 @@ readonly SERVICES_CONFIG=(
|
||||
"postgres:5432:PostgreSQL:pg_isready -U meldestelle"
|
||||
"redis:6379:Redis:redis-cli ping"
|
||||
"consul:8500:Consul:http://localhost:8500/v1/status/leader"
|
||||
"api-gateway:8081:API Gateway:http://localhost:8082/actuator/health"
|
||||
"ping-service:8082Ping Service:http://localhost:8082actuator/health"
|
||||
"api-gateway:8081:API Gateway:http://localhost:8082actuator/health"
|
||||
"ping-service:8082ing Service:http://localhost:8082ctuator/health"
|
||||
)
|
||||
|
||||
# Integration with central Docker version management
|
||||
@@ -169,11 +169,11 @@ test_application_services() {
|
||||
|
||||
# Test API Gateway
|
||||
log_info "Testing API Gateway..."
|
||||
wait_for_service_with_retry "API Gateway" "http_health_check http://localhost:8082/actuator/health" || return 1
|
||||
wait_for_service_with_retry "API Gateway" "http_health_check http://localhost:8082actuator/health" || return 1
|
||||
|
||||
# Test Ping Service
|
||||
log_info "Testing Ping Service..."
|
||||
wait_for_service_with_retry "Ping Service" "http_health_check http://localhost:8082actuator/health" || return 1
|
||||
wait_for_service_with_retry "Ping Service" "http_health_check http://localhost:8082ctuator/health" || return 1
|
||||
|
||||
log_success "All application services are healthy!"
|
||||
}
|
||||
@@ -211,7 +211,7 @@ test_network_connectivity() {
|
||||
log_info "Testing service-to-service connectivity..."
|
||||
|
||||
# Test API Gateway can reach backend services
|
||||
if docker exec meldestelle-api-gateway curl -f -s --max-time 5 http://ping-service:8082actuator/health > /dev/null 2>&1; then
|
||||
if docker exec meldestelle-api-gateway curl -f -s --max-time 5 http://ping-service:8082ctuator/health > /dev/null 2>&1; then
|
||||
log_success "API Gateway can reach Ping Service"
|
||||
else
|
||||
log_error "API Gateway cannot reach Ping Service"
|
||||
|
||||
@@ -241,7 +241,7 @@ CREATE TABLE platz (
|
||||
#### Land erstellen
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:8080/api/masterdata/countries \
|
||||
curl -X POST http://localhost:8081/api/masterdata/countries \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"isoAlpha2Code": "AT",
|
||||
@@ -257,13 +257,13 @@ curl -X POST http://localhost:8080/api/masterdata/countries \
|
||||
#### Altersklassen für 16-jährigen Dressurreiter abrufen
|
||||
|
||||
```bash
|
||||
curl "http://localhost:8080/api/masterdata/altersklassen/age/16?sparte=DRESSUR"
|
||||
curl "http://localhost:8081/api/masterdata/altersklassen/age/16?sparte=DRESSUR"
|
||||
```
|
||||
|
||||
#### Geeignete Dressurplätze finden
|
||||
|
||||
```bash
|
||||
curl "http://localhost:8080/api/masterdata/plaetze/suitable?typ=DRESSURPLATZ&dimension=20x60m"
|
||||
curl "http://localhost:8081/api/masterdata/plaetze/suitable?typ=DRESSURPLATZ&dimension=20x60m"
|
||||
```
|
||||
|
||||
## Konfiguration
|
||||
|
||||
Reference in New Issue
Block a user