app_para_monitoreo_de_estado_y_reportes_de_backups
This is an old revision of the document!
Resumen del Proyecto
Este documento resume malísimamente los pasos y desarrollos realizados hasta la fecha en el proyecto de monitoreo y registro de eventos para hosts y Backup Vaults.
1. Creación de Tablas por Host/Backup Vault
- Se configuró la aplicación para que, al recibir datos, cree dinámicamente una tabla para cada host o Backup Vault si no existe.
- Cada tabla individual almacena los siguientes campos:
- `id`: INT, AUTO_INCREMENT, PRIMARY KEY
- `creationtime`: `VARCHAR(255)` - Hora de creación en formato cadena.
- `vmname`: `VARCHAR(255)` - Nombre de la VM o recurso.
- `type`: `VARCHAR(255)` - Tipo de tarea.
- `result`: `VARCHAR(255)` - Resultado de la tarea.
- `detail`: `TEXT` - Detalles adicionales.
2. Implementación de Nuevas Columnas para Timestamps
- Se agregó una columna adicional `datetime` a las tablas por host.
- Esta columna almacena el tiempo de creación (`creationtime`) en formato `DATETIME`, estandarizando las fechas para facilitar futuras consultas y análisis.
- Se implementó un script para procesar y convertir los diferentes formatos de fecha/hora recibidos al formato `DATETIME`.
3. Autenticación en la API
- Se añadió un mecanismo básico de autenticación por token en el endpoint `/upload`.
- Solo se permite la carga de datos si el token es válido.
4. Filtrado de Eventos No Exitosos
- Se implementó una lógica para filtrar los eventos con resultados diferentes a 'Success'.
- Estos eventos se almacenan en una tabla central llamada `unsuccessful_tasks`.
- El objetivo de esta tabla es permitir la generación de reportes que muestren la frecuencia y distribución de fallos en los últimos 30 días.
Guardado de eventos no exitosos
1. Diseño de la Tabla `unsuccessful_tasks`
- Columnas:
- `id`: INT, AUTO_INCREMENT, PRIMARY KEY
- `creationtime`: `DATETIME` - Timestamp del evento.
- `hostname`: `VARCHAR(255)` - El nombre del host o Backup Vault.
- `vmname`: `VARCHAR(255)` - El nombre de la VM o recurso.
- `type`: `VARCHAR(255)` - El tipo de tarea (e.g., Backup, Snapshot).
- `result`: `VARCHAR(255)` - El resultado (e.g., Fail, Warn).
- `detail`: `TEXT` - Detalles adicionales del evento.
2. Proceso de Inserción de Datos
- Filtrado de Eventos No Exitosos:
- Cada vez que se registre un evento en las tablas por host, la aplicación debe revisar el campo `result`. Si el valor no es 'Success' o el equivalente en Azure, se inserta un registro en `unsuccessful_tasks`.
- Job Automático de Monitoreo:
- Un script de Python podría ejecutarse cada 4 horas para:
- Conectar a las tablas de cada host y revisar nuevos registros.
- Filtrar los eventos no exitosos (`result != 'Success'`).
- Insertar estos eventos en `unsuccessful_tasks`, eliminando cualquier duplicado que ya exista en esa tabla.
- Mantener un historial de 30 días y eliminar registros más antiguos para mantener la tabla manejable.
3. Consultas y Reportes
- Reporte de Frecuencia de Fallos:
- Crear una consulta que filtre por `hostname` y/o `vmname` para contar cuántas veces se ha registrado un fallo o advertencia en los últimos X días.
- Este reporte es útil para identificar patrones de fallos o problemas recurrentes.
4. Mantenimiento
- Limpieza Regular:
- Programar un job que elimine registros más antiguos de 30 días (o el período que se decida), para mantener la tabla `unsuccessful_tasks` ligera y rápida en sus consultas.
5. Desarrollo de Script de Monitoreo Automático
- Se diseñó un job en Python que se ejecuta cada 4 horas.
- Este script realiza las siguientes tareas:
- Filtrar eventos no exitosos de las tablas por host.
- Insertar estos eventos en la tabla `unsuccessful_tasks`.
- Eliminar registros duplicados o más antiguos de 30 días.
6. Optimización de Consultas y Mantenimiento
- Se establecieron planes para la limpieza regular de la tabla `unsuccessful_tasks` para mantener su eficiencia.
- Además, se consideró la creación de reportes específicos para detectar patrones de fallos.
7. Próximos Pasos
- Integrar más controles de calidad y validación de datos.
- Optimizar el rendimiento de la base de datos para manejar grandes volúmenes de eventos.
- Expandir la lógica de filtrado para incluir otros tipos de eventos importantes.
nginx/ ├── config/ │ └── www/ │ └── demoBackups/ │ ├── app.py │ ├── templates/ │ │ ├── admin.html │ │ └── index.html │ └── static/ │ └── styles.css
app_para_monitoreo_de_estado_y_reportes_de_backups.1723774046.txt.gz · Last modified: 2024/10/17 21:42 (external edit)
