PORTAFOLIO DEVOPS / SRE · LABORATORIO LOCALDEVOPS / SRE PORTFOLIO · LOCAL LAB

IT Infrastructure
Monitoring Center

DevOps & SRE Observability Platform

Un laboratorio reproducible para observar infraestructura y contenedores, probar el ciclo de alertas y validar configuraciones con evidencia real.

A reproducible lab for infrastructure and container observability, alert lifecycle testing, and configuration validation backed by real evidence.

PrometheusGrafanaAlertmanagerDocker Compose
05servicios ComposeCompose services
02dashboards provisionadosprovisioned dashboards
26paneles GrafanaGrafana panels
04jobs CI validados en mainCI jobs verified on main

Alcance basado en configuración y evidencia; no son contadores en vivo.Scope from configuration and evidence; these are not live counters.

01 / PROJECT OVERVIEW

Observar. Alertar. Aprender.Observe. Alert. Learn.

El proyecto conecta métricas de infraestructura con visibilidad operativa, pruebas controladas de incidentes y validaciones repetibles.

The project connects infrastructure metrics to operational visibility, controlled incident tests, and repeatable validation.

01

Visibilidad de infraestructuraInfrastructure visibility

CPU, memoria, filesystem, red, uptime y disponibilidad de targets a través de Prometheus y Node Exporter.

CPU, memory, filesystem, network, uptime, and target availability through Prometheus and Node Exporter.

02

Observación por contenedorPer-container observation

Un proceso Python opcional obtiene snapshots del Docker CLI en el host Windows, filtrados por etiqueta Compose.

An optional Python process collects Docker CLI snapshots on the Windows host, filtered by Compose project label.

03

Ciclo de incidentesIncident lifecycle

Reglas Prometheus, agrupación de Alertmanager y registro persistente de notificaciones FIRING y RESOLVED.

Prometheus rules, Alertmanager grouping, and persistent logging of FIRING and RESOLVED notifications.

04

Validación reproducibleRepeatable validation

Pruebas unitarias y comprobaciones estáticas en runners de GitHub Actions, sin depender de Docker Desktop.

Unit tests and static checks on GitHub Actions runners, independent of Docker Desktop.

IMPLEMENTED STACK

Tecnologías del repositorioTechnologies in the repository

ImplementadoImplemented
013.15.0

Prometheus

Scraping, reglas y TSDB

Scraping, rules, and TSDB

0213.2.4

Grafana

Dashboards provisionados

Provisioned dashboards

031.12.1

Node Exporter

Métricas del Linux del Engine

Docker Engine Linux metrics

040.34.1

Alertmanager

Agrupación y notificaciones

Alert grouping and delivery

05Python 3.13

Incident Logger

Webhook interno e historial rotado

Internal webhook and rotated history

06Python 3.10+

Container Exporter

Opcional · proceso manual en Windows

Optional · manually started Windows process

Alcance del host: CPU, RAM, red y uptime de Node Exporter representan el Linux que ve Docker Engine/WSL2, no el Windows físico.Host scope: Node Exporter CPU, memory, network, and uptime describe the Linux environment visible to Docker Engine/WSL2, not physical Windows.

02 / DASHBOARD GALLERY

Evidencia de observabilidadObservability evidence

Seis capturas auténticas del laboratorio. Los números reflejan el instante capturado; no son métricas actuales ni una demo cloud en vivo.

Six authentic lab screenshots. Values reflect their capture time; they are not current metrics or a live cloud demo.

03 / ARCHITECTURE

Dos entornos, sin confundirlosTwo environments, clearly separated

La solución actual es local. La arquitectura cloud está en diseño y no se ha desplegado ni conectado a este host.

The current solution is local. The cloud architecture is under design and has not been deployed or connected to this host.

AActual · implementadoCurrent · implemented

Windows + Docker Desktop / WSL2Windows + Docker Desktop / WSL2

Node Exporter observa el Linux del Engine. Prometheus scrapea Node Exporter y sus reglas; Grafana consume Prometheus; Alertmanager reenvía incidentes al logger interno.

Node Exporter observes Engine Linux. Prometheus scrapes Node Exporter and evaluates rules; Grafana reads Prometheus; Alertmanager sends incidents to the internal logger.

Node ExporterPrometheusGrafana
Prometheus rulesAlertmanagerIncident Logger
Windows Docker CLIPython exporterhost.docker.internalPrometheus

Ningún contenedor monta el socket Docker. El exporter en Windows conserva acceso significativo al daemon.No container mounts the Docker socket. The Windows exporter retains significant daemon access.

BPropuesto · no desplegadoProposed · not deployed

OCI ARM64 + Cloudflare PagesOCI ARM64 + Cloudflare Pages

El portal estático vive por separado del laboratorio. En OCI, un reverse proxy sería la única entrada web; los servicios de métricas quedarían en redes privadas.

The static portfolio is separate from the lab. On OCI, a reverse proxy would be the only web ingress; monitoring services stay on private networks.

Cloudflare Pagesportal estáticostatic portfolio
INDEPENDENT
HTTPS :443Reverse proxyGrafana
Prometheusscrape privadoprivate scrapeNode ExporterAlertmanager

El exporter Linux por contenedor queda fuera de la línea base hasta aprobar un límite de permisos seguro.Per-container Linux exporter stays out of the baseline until a safe privilege boundary is approved.

Leer arquitectura propuesta y diagramas MermaidRead the proposed architecture and Mermaid diagrams

04 / INCIDENT LIFECYCLE

Del síntoma a la recuperaciónFrom signal to recovery

La simulación controlada verifica el flujo de reglas y notificaciones, sin presentar tiempos como un SLO de producción.

Controlled simulations validate alert and notification flow without presenting timings as a production SLO.

  1. 01NORMAL

    Métricas dentro de umbral

    Metrics within thresholds

  2. 02PENDING

    Condición sostenida

    Condition sustained

  3. 03FIRING

    Regla activa

    Rule is active

  4. 04NOTIFICATION

    Alertmanager → logger

    Alertmanager → logger

  5. 05RESOLVED

    Recuperación registrada

    Recovery recorded

TestIncident permanece inactiva por defecto. Las capturas muestran un laboratorio en estado normal y sin grupos de alertas activos.

TestIncident stays inactive by default. The screenshots show the lab in a normal state with no active alert groups.

05 / CI & DELIVERY

Validaciones en GitHub ActionsGitHub Actions validation

Ejecución remota consultada para el commit de `main` que etiqueta v1.0.0. No valida esta rama local todavía.

Remote run checked for the `main` commit tagged v1.0.0. It does not validate this local branch yet.

EJECUCIÓN REAL VERIFICADA · MAINREAL RUN VERIFIED · MAIN3e847f5 · 24 Oct 2026

Los cuatro jobs finalizaron con éxito en GitHub Actions.

All four jobs completed successfully in GitHub Actions.

Ver ejecuciónView run
01

Python 3.10 tests

Pruebas unitarias y scripts PowerShell

Unit tests and PowerShell script parsing

SUCCESS · MAIN
02

Python 3.13 tests

Pruebas unitarias y scripts PowerShell

Unit tests and PowerShell script parsing

SUCCESS · MAIN
03

Static quality and security checks

Lint, dependencias, higiene y secretos

Lint, dependencies, repository hygiene, and secret scan

SUCCESS · MAIN
04

Dashboard and monitoring configuration validation

Dashboards, Compose, Prometheus y Alertmanager

Dashboards, Compose, Prometheus, and Alertmanager

SUCCESS · MAIN

La evidencia visual de la galería es la ejecución #4; el enlace lleva a la ejecución #40116633928 para el commit estable actual. No se habilita CD.The gallery image is from run #4; the link opens run #40116633928 for the current stable commit. No CD is enabled.

06 / SECURITY BY DESIGN

Los límites también son arquitecturaSecurity boundaries are architecture

El laboratorio está aislado para aprendizaje. Una ruta de observación no debe convertirse en una API de administración expuesta.

The lab is isolated for learning. An observation path must not become an exposed administration API.

01

Sin socket en contenedoresNo socket in containers

Ningún servicio recibe `/var/run/docker.sock`. El exporter host-side usa Docker CLI, pero su usuario mantiene facultades importantes sobre el daemon.

No service receives `/var/run/docker.sock`. The host-side exporter uses Docker CLI, while its user retains significant daemon privileges.

02

Redes y alcance privadosPrivate network scope

Prometheus, Alertmanager, exporters y webhook no son servicios públicos. La red local de Docker Desktop no equivale a un firewall de aplicación.

Prometheus, Alertmanager, exporters, and webhook are not public services. Docker Desktop networking is not an application firewall.

03

Secretos fuera del repositorioSecrets stay out of Git

`.env` y `data/` se excluyen de Git. El portal no usa credenciales, variables secretas, base de datos ni API privada.

`.env` and `data/` are excluded from Git. The portfolio has no credentials, secret variables, database, or private API.

04

Telemetría no es SLOTelemetry is not an SLO

Las capturas son evidencias fechadas. `host.docker.internal` facilita una ruta desde Docker Desktop, pero no autentica al cliente Prometheus.

Screenshots are dated evidence. `host.docker.internal` provides a Docker Desktop route but does not authenticate the Prometheus client.

Ver modelo de seguridad para OCI y el portalRead the OCI and portfolio security model

07 / ROADMAP

Progreso con evidenciaEvidence-led progress

La fase cloud se prepara en esta rama local. La etiqueta “planned” describe el despliegue, no una infraestructura online.

Cloud work is being prepared on this local branch. “Planned” describes deployment status, not online infrastructure.

Fase 1–2Prometheus, Grafana, alertas y registro de incidentesPrometheus, Grafana, alerts, and incident logging
CompletaComplete
Fase 3BExporter local host-side, sin socket dentro de contenedoresLocal host-side exporter, no container socket mount
CompletaComplete
Fase 4CI para pruebas Python y validación de configuracionesCI for Python tests and configuration validation
CompletaComplete
Fase 5Portal estático y plan ARM64; sin despliegue ni cuentas cloudStatic portfolio and ARM64 plan; no deployment or cloud accounts
PlannedPlanned