# hosseinzadeh-parsa/grafana-observability-stack architecture

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

- Interactive diagram: https://gitdiagram.com/hosseinzadeh-parsa/grafana-observability-stack
- Repository: https://github.com/hosseinzadeh-parsa/grafana-observability-stack

## Overview

This repository defines a self-hosted observability stack: an operator selects Docker Compose profiles to run metric collection, log aggregation, tracing, dashboards, alerting, and ingress. Prometheus gathers and stores metrics and forwards alerts; Promtail and Loki provide the documented log path; Grafana visualizes metrics, logs, and traces. Traefik provides external routing. The available evidence is the README and file tree only, so edges reflect documented relationships rather than inspected runtime configuration details.

Main entry points: [`docker-compose.yml`](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/docker-compose.yml) (Compose profiles), [`prometheus/prometheus.yml`](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/prometheus/prometheus.yml) (Prometheus), [`grafana/datasources/datasource.yml`](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/grafana/datasources/datasource.yml) (Grafana), [`traefik-core/docker-compose.yml`](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/traefik-core/docker-compose.yml) (Traefik ingress)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_deployment["Stack deployment"]
  node_compose["Compose profiles<br/>[docker-compose.yml]"]
end

subgraph group_metrics["Metrics"]
  node_prometheus[("Prometheus<br/>[prometheus.yml]")]
  node_metric_rules["Metric alert rules"]
  node_blackbox["Blackbox Exporter"]
  node_host_container_exporters["Host and container exporters<br/>[docker-compose.yml]"]
  node_pushgateway["Pushgateway<br/>[docker-compose.yml]"]
end

subgraph group_logging["Logging"]
  node_loki[("Loki<br/>[loki.yml]")]
  node_promtail["Promtail<br/>[promtail.yml]"]
end

subgraph group_tracing["Tracing"]
  node_tempo[("Tempo<br/>[tempo.yml]")]
  node_trace_support["Trace support services<br/>[docker-compose.yml]"]
end

subgraph group_access["Dashboards and access"]
  node_grafana["Grafana<br/>[datasource.yml]"]
  node_dashboards["Dashboards"]
  node_traefik["Traefik ingress<br/>[docker-compose.yml]"]
end

subgraph group_alerts["Alerting"]
  node_alertmanager["Alertmanager<br/>[alertmanager.yml]"]
end

node_operator(("Stack operator"))

node_operator -->|"selects profiles"| node_compose
node_compose -->|"starts service"| node_prometheus
node_compose -->|"starts service"| node_grafana
node_compose -->|"starts service"| node_alertmanager
node_compose -->|"starts service"| node_blackbox
node_compose -->|"starts services"| node_host_container_exporters
node_compose -->|"starts service"| node_pushgateway
node_compose -->|"starts service"| node_loki
node_compose -->|"starts service"| node_promtail
node_compose -->|"starts service"| node_tempo
node_compose -->|"starts services"| node_trace_support
node_prometheus -->|"scrapes metrics"| node_host_container_exporters
node_prometheus -->|"scrapes probes"| node_blackbox
node_prometheus -->|"scrapes metrics"| node_pushgateway
node_prometheus -->|"evaluates rules"| node_metric_rules
node_prometheus -->|"sends alerts"| node_alertmanager
node_promtail -->|"aggregates logs"| node_loki
node_grafana -->|"queries metrics"| node_prometheus
node_grafana -->|"queries logs"| node_loki
node_grafana -->|"queries traces"| node_tempo
node_grafana -->|"displays"| node_dashboards
node_traefik -->|"routes traffic"| node_grafana
node_traefik -->|"routes traffic"| node_prometheus
node_traefik -->|"routes traffic"| node_loki
node_traefik -->|"routes traffic"| node_alertmanager

click node_compose "https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/docker-compose.yml"
click node_prometheus "https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/prometheus/prometheus.yml"
click node_metric_rules "https://github.com/hosseinzadeh-parsa/grafana-observability-stack/tree/main/prometheus/alerts"
click node_blackbox "https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/blackbox/blackbox-exporter.yml"
click node_host_container_exporters "https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/docker-compose.yml"
click node_pushgateway "https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/docker-compose.yml"
click node_loki "https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/loki/loki.yml"
click node_promtail "https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/promtail/promtail.yml"
click node_tempo "https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/tempo/tempo.yml"
click node_trace_support "https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/docker-compose.yml"
click node_grafana "https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/grafana/datasources/datasource.yml"
click node_dashboards "https://github.com/hosseinzadeh-parsa/grafana-observability-stack/tree/main/grafana/dashboards"
click node_traefik "https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/traefik-core/docker-compose.yml"
click node_alertmanager "https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/alertmanager/alertmanager.yml"

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_compose toneBlue
class node_prometheus,node_metric_rules,node_blackbox,node_host_container_exporters,node_pushgateway toneAmber
class node_loki,node_promtail toneMint
class node_tempo,node_trace_support toneRose
class node_grafana,node_dashboards,node_traefik,node_operator toneIndigo
class node_alertmanager toneTeal
```

## Components

### Stack deployment

- [Compose profiles](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/docker-compose.yml): `docker-compose.yml`

### Metrics

- [Prometheus](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/prometheus/prometheus.yml): `prometheus/prometheus.yml`
- [Metric alert rules](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/tree/main/prometheus/alerts): `prometheus/alerts`
- [Blackbox Exporter](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/blackbox/blackbox-exporter.yml): `blackbox/blackbox-exporter.yml`
- [Host and container exporters](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/docker-compose.yml): `docker-compose.yml`
- [Pushgateway](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/docker-compose.yml): `docker-compose.yml`

### Logging

- [Loki](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/loki/loki.yml): `loki/loki.yml`
- [Promtail](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/promtail/promtail.yml): `promtail/promtail.yml`

### Tracing

- [Tempo](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/tempo/tempo.yml): `tempo/tempo.yml`
- [Trace support services](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/docker-compose.yml): `docker-compose.yml`

### Dashboards and access

- [Grafana](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/grafana/datasources/datasource.yml): `grafana/datasources/datasource.yml`
- [Dashboards](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/tree/main/grafana/dashboards): `grafana/dashboards`
- [Traefik ingress](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/traefik-core/docker-compose.yml): `traefik-core/docker-compose.yml`

### Alerting

- [Alertmanager](https://github.com/hosseinzadeh-parsa/grafana-observability-stack/blob/main/alertmanager/alertmanager.yml): `alertmanager/alertmanager.yml`

### Other components

- **Stack operator**

## Connections

- Stack operator → Compose profiles: selects profiles (evidence: `README.md`)
- Compose profiles → Prometheus: starts service (evidence: `README.md`)
- Compose profiles → Grafana: starts service (evidence: `README.md`)
- Compose profiles → Alertmanager: starts service (evidence: `README.md`)
- Compose profiles → Blackbox Exporter: starts service (evidence: `README.md`)
- Compose profiles → Host and container exporters: starts services (evidence: `README.md`)
- Compose profiles → Pushgateway: starts service (evidence: `README.md`)
- Compose profiles → Loki: starts service (evidence: `README.md`)
- Compose profiles → Promtail: starts service (evidence: `README.md`)
- Compose profiles → Tempo: starts service (evidence: `README.md`)
- Compose profiles → Trace support services: starts services (evidence: `README.md`)
- Prometheus → Host and container exporters: scrapes metrics (evidence: `README.md`)
- Prometheus → Blackbox Exporter: scrapes probes (evidence: `README.md`)
- Prometheus → Pushgateway: scrapes metrics (evidence: `README.md`)
- Prometheus → Metric alert rules: evaluates rules (evidence: `README.md`)
- Prometheus → Alertmanager: sends alerts (evidence: `README.md`)
- Promtail → Loki: aggregates logs (evidence: `README.md`)
- Grafana → Prometheus: queries metrics (evidence: `README.md`)
- Grafana → Loki: queries logs (evidence: `README.md`)
- Grafana → Tempo: queries traces (evidence: `README.md`)
- Grafana → Dashboards: displays (evidence: `README.md`)
- Traefik ingress → Grafana: routes traffic (evidence: `README.md`)
- Traefik ingress → Prometheus: routes traffic (evidence: `README.md`)
- Traefik ingress → Loki: routes traffic (evidence: `README.md`)
- Traefik ingress → Alertmanager: routes traffic (evidence: `README.md`)
