El problema
Un panel de contenedores es útil, pero quise trabajar más cerca de la fuente de las mediciones. Este proyecto individual de Sistemas Operativos 1 sigue información de CPU, memoria e I/O desde Linux hasta un sistema pequeño de monitoreo y gestión de carga.
Mi contribución
Implementé el proyecto de extremo a extremo: módulo de kernel en C, servicio en Rust, scripts de carga, API en Python e integración de visualización. Es un laboratorio académico de Linux, no un producto de monitoreo en producción.
Arquitectura técnica
El módulo de kernel expone JSON mediante una entrada personalizada en /proc. Usa trabajo diferido para muestreo de CPU del host e inspecciona cgroups para asociar estadísticas de recursos con cargas Docker.
La implementación lee interfaces como cpu.stat, memory.current e io.stat. Un proceso en Rust consume la información estructurada, coordina tareas concurrentes y registra acciones de gestión de carga. FastAPI expone esos datos para visualización en Grafana.
Gestión de carga
Bash crea cargas controladas de estrés en contenedores. El servicio en Rust reconoce categorías de estrés y puede detener cargas duplicadas del mismo tipo. Un log compartido se protege con primitivas de sincronización para evitar escrituras inseguras en concurrencia.
Este comportamiento corresponde a lógica de control de carga del laboratorio. No es un sistema de detección de amenazas ni un agente de respuesta en endpoints.
Resultados y limitaciones
El repositorio incluye módulo, servicio, API, scripts y una vista de Grafana documentada. En conjunto, demuestran un camino desde información de bajo nivel hasta una interfaz legible.
Las estructuras de kernel y los layouts de cgroups afectan la portabilidad. Los intervalos de medición y decisiones de contabilidad también influyen en la interpretación de métricas. El proyecto no afirma compatibilidad con todos los kernels Linux ni un nivel de precisión medido por benchmark formal.
Lecciones de ingeniería
La parte más interesante está en la frontera entre capas: volver consumible la información del kernel, gestionar concurrencia en espacio de usuario y mantener acciones automáticas alineadas con reglas de laboratorio. Es un ejemplo práctico de programación de sistemas para comprender infraestructura.
