🏰 System Architecture
This document provides an overview of the system architecture following the C4 Model, progressively detailing context (level 1) and containers (level 2) structures.
📡 System Context
The System Context Diagram provides a high-level view of HESTIA, showing:
- Who interacts with it (Users, External Systems).
- How it fits into the ecosystem.
graph TB;
developer["👨💻 Developer"] --> hestia["📜 HESTIA Asynchronous Logger"];
app["🖥️ Application (FastAPI, Flask, CLI)"] --> hestia;
externalAPIs["🔗 External Logging APIs"] --> hestia;
hestia --> logStorage["📝 Log Storage (JSON and TXT)"];
hestia --> console["🖥️ Console (Human-Readable Logs)"];
logStorage --Parse/Forward Logs--- logForwarder["🛢️ Fluent Bit"]
logForwarder --> elasticsearch["🔍 Elasticsearch"]
elasticsearch --Full Text-Search--> kibana["📊 Kibana"];
elasticsearch --Monitoring Dashboards--> grafana["🎨 Grafana"];
📦 Container Diagram
This diagram details the deployed containers in the HESTIA Logger demo, showing log flow from a microservice to an observability stack, orchestrated by a setup script.
graph TB
dev["👨💻 Developer"] -.- logGen["🖥️ Log Generator<br>services/log-generator"]
subgraph Hestia_Logger_System ["HESTIA Logger System"]
logGen -->|Writes Logs| vol[(/var/logs/hestia<br>Shared Storage)]
vol -->|Reads Logs| fluent["🛢️ Fluent Bit<br>services/fluentbit"]
subgraph Docker_Compose ["Docker Compose"]
logGen
fluent
subgraph Elasticsearch_Cluster ["Elasticsearch Cluster"]
es01["🔍 Elasticsearch Node 1<br>es01"]
es02["🔍 Elasticsearch Node 2<br>es02"]
end
kibana["📊 Kibana<br>PORT: 5601"]
grafana["🎨 Grafana<br>PORT: 3000"]
end
fluent -->|Forwards| es01
fluent -->|Forwards| es02
es01 -->|Stores| indices[(hestia-logs-*<br>INDICES)]
es02 -->|Stores| indices
indices -->|Queries| kibana
indices -->|Queries| grafana
end
setup["⚙️ setup_microservices.sh"] -->|Orchestrates| logGen
setup -->|Orchestrates| fluent
setup -->|Orchestrates| es01
setup -->|Orchestrates| es02
setup -->|Orchestrates| kibana
setup -->|Orchestrates| grafana