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