Projects
A live, self-hosted DevOps monitoring stack I built and run myself.
Live DevOps Monitoring Stack
Self-hosted monitoring & observability environment — gio-devops-projects.com
A containerized DevOps platform I designed, deployed, and run myself on an Ubuntu server (AWS EC2). Every service is a separate Docker container, wired together through a reverse proxy that handles routing and TLS automatically — no manually managed ports or certificates.
Architecture
- Reverse proxy / TLS: Traefik auto-discovers containers via Docker labels and routes each subdomain (
grafana.,prometheus.,api.,status.,metrics.) to the right service, with Let's Encrypt certificates issued and renewed automatically via TLS challenge. - Metrics collection: Prometheus scrapes targets on a schedule and evaluates alert rules defined in
alerts.yml(instance down, high CPU, low memory, disk almost full). - Alerting & notifications: Alertmanager receives firing alerts from Prometheus and sends real email notifications over Gmail SMTP — verified end-to-end with a test alert.
- Host metrics: node-exporter exposes system-level metrics (CPU, memory, disk, network) from the host itself.
- Container metrics: cAdvisor tracks per-container resource usage across the whole Docker environment.
- Visualization: Grafana dashboards on top of Prometheus, configured for anonymous read-only (Viewer) access so dashboards are viewable without a login.
- Uptime / status page: Uptime Kuma monitors service availability and serves a public status dashboard.
- Custom API: a backend service I built and containerized, routed through Traefik like everything else.
- Static site hosting: this portfolio itself is served from an Nginx container, also behind Traefik.
Tools
Docker & Docker Compose, Traefik, Let's Encrypt (ACME), Prometheus, Alertmanager, Grafana, node-exporter, cAdvisor, Uptime Kuma, AWS EC2, Nginx, Git