Skip to main content

Network Topology

Docker Network​

Semua services berkomunikasi melalui Docker bridge network monitoring.

┌─────────────────────────────────────────────────────────────────┐
│ Docker Network: monitoring │
│ │
│ All services communicate via internal network │
│ External ports exposed: │
│ - 8085: Frontend (Nginx) │
│ - 8081: CLM Backend (API) │
│ - 8080: Keycloak (Auth) │
│ - 9200: OpenSearch (REST API) │
│ - 5601: OpenSearch Dashboards │
│ - 1514: Wazuh Agent (syslog) │
│ - 1515: Wazuh Agent enrollment │
│ - 55000: Wazuh API │
│ - 9090: Prometheus │
│ - 3001: Grafana │
│ - 5672: RabbitMQ AMQP │
│ - 15672: RabbitMQ Management │
│ - 9000/9001: MinIO │
│ - 8084: Kestra │
│ - 4317/4318: OTel Collector │
└─────────────────────────────────────────────────────────────────┘

Port Mapping​

Application Services​

ServiceInternal PortExternal PortProtocolDescription
Frontend808085HTTPNginx serving static files
Backend80818081HTTPGo API server
Keycloak80808080HTTPAuthentication server

Data Storage​

ServiceInternal PortExternal PortProtocolDescription
OpenSearch92009200HTTPSREST API
OpenSearch96009600HTTPPerformance analyzer
OpenSearch Dashboards56015601HTTPVisualization UI
PostgreSQL54325432TCPRBAC database
MinIO API90009000HTTPS3 API
MinIO Console90019001HTTPWeb console

Log Pipeline​

ServiceInternal PortExternal PortProtocolDescription
Fluent Bit2020-HTTPInput port
Fluentd2422424224TCP/UDPForward input
Fluentd98809880HTTPMonitoring
Logstash50445044TCPBeats input
Logstash96009601HTTPNode stats

Security Monitoring​

ServiceInternal PortExternal PortProtocolDescription
Wazuh Manager15141514TCP/UDPAgent connection
Wazuh Manager15151515TCPAgent enrollment
Wazuh Manager5500055000HTTPSAPI

Monitoring​

ServiceInternal PortExternal PortProtocolDescription
Prometheus90909090HTTPMetrics API
Grafana30003001HTTPDashboard UI
cAdvisor80808082HTTPContainer metrics
Node Exporter91009100HTTPHost metrics
OTel Collector43174317gRPCOTLP gRPC
OTel Collector43184318HTTPOTLP HTTP
OTel Collector88888888HTTPzPages
OTel Collector88898889HTTPPrometheus scrape

Message Bus​

ServiceInternal PortExternal PortProtocolDescription
RabbitMQ56725672TCPAMQP
RabbitMQ1567215672HTTPManagement UI

Workflow​

ServiceInternal PortExternal PortProtocolDescription
Kestra80808084HTTPWorkflow UI
Camel81818181HTTPActuator health
Camel88888890HTTPDebug port

Inter-Service Communication​

Backend → Keycloak​

Backend :8081 ──HTTP──▶ Keycloak :8080
- Password grant for login
- JWT token validation
- User creation
- Role assignment

Backend → OpenSearch​

Backend :8081 ──HTTPS──▶ OpenSearch :9200
- Log search & pagination
- Log histogram
- Field distinct values
- Audit log indexing
- Alert queries
- Dashboard metrics

Backend → PostgreSQL​

Backend :8081 ──TCP──▶ PostgreSQL :5432
- RBAC queries
- Tenant management
- User management
- Permission checks

Fluent Bit → Fluentd​

Fluent Bit ──TCP:24224──▶ Fluentd :24224
- Log forwarding
- Tag-based routing

Fluentd → OpenSearch​

Fluentd ──HTTPS:9200──▶ OpenSearch :9200
- Log indexing
- Bulk operations
- Index rotation

Wazuh Agent → Wazuh Manager​

Wazuh Agent ──TCP:1514──▶ Wazuh Manager :1514
- Log forwarding
- Agent registration
- Command execution

Wazuh Manager → OpenSearch​

Wazuh Manager ──HTTPS:9200──▶ OpenSearch :9200
- Alert indexing
- Alert correlation

Backend → RabbitMQ​

Backend ──AMQP:5672──▶ RabbitMQ :5672
- Event publishing
- Alert notifications

RabbitMQ → Consumer​

RabbitMQ :5672 ──AMQP──▶ Consumer
- Message consumption
- Event processing

Consumer → OpenSearch​

Consumer ──HTTPS:9200──▶ OpenSearch :9200
- Processed event indexing

DNS Resolution​

Docker Compose menggunakan service names sebagai hostname:

HostnameResolves To
backendCLM Backend container
opensearchOpenSearch container
keycloakKeycloak container
fluentdFluentd container
fluent-bitFluent Bit container
wazuh-managerWazuh Manager container
postgresPostgreSQL container
rabbitmqRabbitMQ container
minioMinIO container
grafanaGrafana container
prometheusPrometheus container
kestraKestra container
camelApache Camel container
otel-collectorOTel Collector container
consumerConsumer service container

Security Considerations​

Network Isolation​

  • Semua services berada di Docker bridge network monitoring
  • Hanya ports yang diperlukan yang di-expose ke host
  • Internal communication menggunakan Docker DNS

TLS​

  • OpenSearch menggunakan HTTPS (self-signed untuk PoC)
  • Keycloak menggunakan HTTP (start-dev mode)
  • Backend menggunakan HTTP (reverse proxy untuk production)

Authentication​

  • Keycloak untuk user authentication
  • JWT tokens untuk API access
  • API keys untuk service-to-service communication

Next Steps​