Skip to the content.

Architecture

Overview

Project Sauron uses a pull-based metrics architecture: Prometheus scrapes exporters on a 15-second interval, stores metrics in a local time-series database (30-day retention), and Grafana queries Prometheus to render dashboards.

All services run as Docker containers on a single EC2 t3.small instance, orchestrated by Docker Compose. This minimizes cost and operational complexity for a personal observability stack.


Component Descriptions

Prometheus

Grafana

Node Exporter

Blackbox Exporter

CloudWatch Exporter


Data Flow

External Endpoints (HTTP)
        │
        ▼
Blackbox Exporter ──────────────────────────┐
                                            │
EC2 Host ──► Node Exporter ─────────────────┤
                                            ▼
AWS CloudWatch ──► CloudWatch Exporter ──► Prometheus ──► Grafana ──► Browser
                                            │
                                     Rules Engine
                                    (Alert evaluation)

Security Model

Resource Access
Grafana (:3000) Public internet (password protected)
Prometheus (:9090) Internal only — SSH tunnel required
Node Exporter (:9100) Internal only
Blackbox (:9115) Internal only
CloudWatch (:9106) Internal only
SSH (:22) Restricted to your IP via security group

Infrastructure

Resource Value
Provider AWS
Region us-east-1 (configurable)
Instance EC2 t3.small
AMI Amazon Linux 2023 (latest)
Storage 20 GiB gp3 EBS (encrypted)
IP Elastic IP (stable across reboots)
IAM EC2 role with CloudWatch read-only

Alerting

Alert rules are defined in monitoring/prometheus/rules/alerting.yml. Configured alerts include:

Note: Alertmanager is not yet configured. Alerts are evaluated but not routed. To add notifications, add an Alertmanager service to docker-compose.yml and configure receivers (email, Slack, PagerDuty).