@startuml Network Health Data Flow Diagram node tor { storage tor_FS interface http_node } component collector collector --> http_node : HTTP GET collector --> tor_FS: read storage metrics_FS collector --> metrics_FS : write interface collector.tpo collector.tpo --> metrics_FS : read component onionperf interface onionperf.tpo onionperf.tpo --> onionperf : read collector --> onionperf.tpo : HTTP GET collector --> bridge_pool_assignements collector --> bridgestrap collector --> bridge_network_statuses collector --> bridge_descriptors component exitmap exitmap --> exit_lists : write collector --> exit_lists : HTTP GET? interface "consensus-health.tpo" as consensushealth.tpo component depictor depictor --> http_node : HTTP GET depictor --> consensushealth.tpo component descriptorParser database clickhouse descriptorParser --> collector.tpo : HTTP GET descriptorParser --> clickhouse : SQL INSERT component tor_fusion tor_fusion --> collector.tpo : HTTP GET tor_fusion --> clickhouse : SQL INSERT database PostgreSQL component aggregator aggregator --> clickhouse : SQL INSERT/SELECT aggregator --> PostgreSQL : SQL INSERT interface geoip aggregator --> geoip : HTTP GET component network_status_api interface nsa.tpo nsa.tpo --> network_status_api network_status_api --> clickhouse : SQL SELECT network_status_api --> PostgreSQL : SQL SELECT component tagtor interface tagtor.tpo tagtor.tpo --> tagtor tagtor --> nsa.tpo : HTTP GET component metrics interface metrics.tpo metrics.tpo --> metrics metrics --> nsa.tpo : HTTP GET component prometheus prometheus -[#blue]-> collector.tpo : HTTP GET prometheus -[#blue]-> onionoperf.tpo : HTTP GET prometheus -[#blue]-> nsa.tpo : HTTP GET prometheus -[#blue]-> tagtor.tpo : HTTP GET prometheus -[#blue]-> metrics.tpo : HTTP GET prometheus -[#blue]-> clickhouse : HTTP GET ? component grafana grafana --> prometheus : PromQL grafana --> clickhouse : SQL SELECT grafana --> PostgreSQL : SQL SELECT ' component datamodel @enduml