# maqsoodbhurgri/networking_project architecture

> Architecture diagram of the GitHub repository maqsoodbhurgri/networking_project, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/maqsoodbhurgri/networking_project
- Repository: https://github.com/maqsoodbhurgri/networking_project

## Overview

This repository appears to be a Docker-based network monitoring and security evaluation lab: experiment scripts exercise network and fault scenarios, while a monitoring stack provides metrics, logs, dashboards, and alerting. The sampled graphing script turns recorded CSV results into comparison charts. The README is empty, and only that graphing script was sampled, so most runtime wiring and experiment-to-result relationships are not verified; dashed edges mark those inferred links.

Main entry points: [`docker-compose.yml`](https://github.com/maqsoodbhurgri/networking_project/blob/main/docker-compose.yml) (Container stack), [`scripts`](https://github.com/maqsoodbhurgri/networking_project/tree/main/scripts) (Experiment scripts), [`scripts/make_graphs.py`](https://github.com/maqsoodbhurgri/networking_project/blob/main/scripts/make_graphs.py) (Graph generation), [`suricata/local.rules`](https://github.com/maqsoodbhurgri/networking_project/blob/main/suricata/local.rules) (Suricata detection)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_lab["Lab experiments"]
  node_experiment_scripts["Experiment scripts"]
  node_compose["Container stack<br/>[docker-compose.yml]"]
end

subgraph group_monitoring["Monitoring stack"]
  node_prometheus["Prometheus metrics"]
  node_alertmanager["Alert routing"]
  node_grafana["Grafana dashboards"]
  node_loki["Loki logs"]
  node_promtail["Log shipping"]
  node_blackbox["Blackbox probes"]
  node_node_exporter["Node exporter"]
end

subgraph group_network["Network and detection"]
  node_router["Router firewall<br/>[nftables.conf]"]
  node_suricata["Suricata detection<br/>[local.rules]"]
end

subgraph group_analysis["Results and analysis"]
  node_results[("Experiment results")]
  node_graph_script["Graph generation<br/>[make_graphs.py]"]
  node_graphs["Generated charts"]
end

node_operator(("Lab operator"))

node_operator -.->|"runs"| node_experiment_scripts
node_experiment_scripts -.->|"uses"| node_compose
node_compose -.->|"starts"| node_prometheus
node_compose -.->|"starts"| node_alertmanager
node_compose -.->|"starts"| node_grafana
node_compose -.->|"starts"| node_loki
node_compose -.->|"starts"| node_promtail
node_compose -.->|"starts"| node_blackbox
node_compose -.->|"starts"| node_node_exporter
node_compose -.->|"starts"| node_suricata
node_experiment_scripts -.->|"exercises"| node_router
node_experiment_scripts -.->|"tests detection"| node_suricata
node_experiment_scripts -.->|"records"| node_results
node_graph_script -->|"reads CSVs"| node_results
node_graph_script -->|"writes charts"| node_graphs

click node_experiment_scripts "https://github.com/maqsoodbhurgri/networking_project/tree/main/scripts"
click node_compose "https://github.com/maqsoodbhurgri/networking_project/blob/main/docker-compose.yml"
click node_prometheus "https://github.com/maqsoodbhurgri/networking_project/tree/main/monitoring/prometheus"
click node_alertmanager "https://github.com/maqsoodbhurgri/networking_project/tree/main/monitoring/alertmanager"
click node_grafana "https://github.com/maqsoodbhurgri/networking_project/tree/main/grafana"
click node_loki "https://github.com/maqsoodbhurgri/networking_project/tree/main/monitoring/loki"
click node_promtail "https://github.com/maqsoodbhurgri/networking_project/tree/main/monitoring/promtail"
click node_blackbox "https://github.com/maqsoodbhurgri/networking_project/tree/main/monitoring/blackbox"
click node_node_exporter "https://github.com/maqsoodbhurgri/networking_project/blob/main/images/node/Dockerfile"
click node_router "https://github.com/maqsoodbhurgri/networking_project/blob/main/router/nftables.conf"
click node_suricata "https://github.com/maqsoodbhurgri/networking_project/blob/main/suricata/local.rules"
click node_results "https://github.com/maqsoodbhurgri/networking_project/tree/main/results"
click node_graph_script "https://github.com/maqsoodbhurgri/networking_project/blob/main/scripts/make_graphs.py"
click node_graphs "https://github.com/maqsoodbhurgri/networking_project/tree/main/results/graphs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_experiment_scripts,node_compose toneBlue
class node_prometheus,node_alertmanager,node_grafana,node_loki,node_promtail,node_blackbox,node_node_exporter toneAmber
class node_router,node_suricata toneMint
class node_results,node_graph_script,node_graphs toneRose
class node_operator toneIndigo
```

## Components

### Lab experiments

- [Experiment scripts](https://github.com/maqsoodbhurgri/networking_project/tree/main/scripts): `scripts`
- [Container stack](https://github.com/maqsoodbhurgri/networking_project/blob/main/docker-compose.yml): `docker-compose.yml`

### Monitoring stack

- [Prometheus metrics](https://github.com/maqsoodbhurgri/networking_project/tree/main/monitoring/prometheus): `monitoring/prometheus`
- [Alert routing](https://github.com/maqsoodbhurgri/networking_project/tree/main/monitoring/alertmanager): `monitoring/alertmanager`
- [Grafana dashboards](https://github.com/maqsoodbhurgri/networking_project/tree/main/grafana): `grafana`
- [Loki logs](https://github.com/maqsoodbhurgri/networking_project/tree/main/monitoring/loki): `monitoring/loki`
- [Log shipping](https://github.com/maqsoodbhurgri/networking_project/tree/main/monitoring/promtail): `monitoring/promtail`
- [Blackbox probes](https://github.com/maqsoodbhurgri/networking_project/tree/main/monitoring/blackbox): `monitoring/blackbox`
- [Node exporter](https://github.com/maqsoodbhurgri/networking_project/blob/main/images/node/Dockerfile): `images/node/Dockerfile`

### Network and detection

- [Router firewall](https://github.com/maqsoodbhurgri/networking_project/blob/main/router/nftables.conf): `router/nftables.conf`
- [Suricata detection](https://github.com/maqsoodbhurgri/networking_project/blob/main/suricata/local.rules): `suricata/local.rules`

### Results and analysis

- [Experiment results](https://github.com/maqsoodbhurgri/networking_project/tree/main/results): `results`
- [Graph generation](https://github.com/maqsoodbhurgri/networking_project/blob/main/scripts/make_graphs.py): `scripts/make_graphs.py`
- [Generated charts](https://github.com/maqsoodbhurgri/networking_project/tree/main/results/graphs): `results/graphs`

### Other components

- **Lab operator**

## Connections

- Lab operator → Experiment scripts: runs
- Experiment scripts → Container stack: uses
- Container stack → Prometheus metrics: starts
- Container stack → Alert routing: starts
- Container stack → Grafana dashboards: starts
- Container stack → Loki logs: starts
- Container stack → Log shipping: starts
- Container stack → Blackbox probes: starts
- Container stack → Node exporter: starts
- Container stack → Suricata detection: starts
- Experiment scripts → Router firewall: exercises
- Experiment scripts → Suricata detection: tests detection
- Experiment scripts → Experiment results: records
- Graph generation → Experiment results: reads CSVs (evidence: `scripts/make_graphs.py`)
- Graph generation → Generated charts: writes charts (evidence: `scripts/make_graphs.py`)
