Orquesta Agentes IA que desarrollan por ti
Verificando...
23-pipeline-health-monitor
Procedimiento: Pipeline Health Monitor
Despliegue
1 plugin(s)
Editor
Preview
Tareas
1
Info
Titulo
Monitorea la salud de los pipelines CI/CD. Detecta builds fallidos recurrentes, tiempos de ejecuci├│n an├│malos, y problemas de infraestructura.
Descripcion
Contenido Markdown
9021 caracteres
Guardar
# Procedimiento: Pipeline Health Monitor ## Metadata - **ID**: PROC-23 - **Frecuencia**: Diario - **Duraci├│n estimada**: 10-20 min - **Requiere**: Acceso a GitLab CI o Azure DevOps - **Dependencias**: Ninguna - **Bloquea**: Ninguno - **Agentes**: devops-engineer --- ## Objetivo Monitorizar la salud de los pipelines CI/CD: 1. Detectar builds fallidos en ├║ltimas 24h 2. Identificar pipelines lentos o degradados 3. Verificar que ramas principales est├ín verdes 4. Alertar sobre patrones de fallos recurrentes --- ## Detecci├│n de Stack ```yaml stack: ci: "gitlab" # gitlab | azure-devops | github ``` Si no hay config, detectar por archivos: - `.gitlab-ci.yml` ÔåÆ GitLab CI - `azure-pipelines.yml` ÔåÆ Azure DevOps - `.github/workflows/` ÔåÆ GitHub Actions --- ## Umbrales de Alerta | M├®trica | WARNING | CRITICAL | |---------|---------|----------| | Build fallido en main/master | Cualquiera | >2 consecutivos | | Pipelines fallidos (24h) | >5 | >15 | | Tiempo de build | >150% baseline | >200% baseline | | Flaky pipelines | >10% tasa fallo | >25% tasa fallo | --- ## Checklist Ejecutable ### 1. Pre-verificaciones - [ ] Identificar sistema CI/CD - [ ] Verificar acceso/token configurado --- ## Para GitLab CI ### 2. Obtener Pipelines Recientes ```bash # Variables necesarias GITLAB_TOKEN="${GITLAB_TOKEN}" PROJECT_ID="${GITLAB_PROJECT_ID}" GITLAB_URL="${GITLAB_URL:-https://gitlab.com}" # ├Ültimos 20 pipelines curl -s --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ "$GITLAB_URL/api/v4/projects/$PROJECT_ID/pipelines?per_page=20" | \ jq '.[] | {id, status, ref, created_at, duration}' # Pipelines fallidos ├║ltimas 24h curl -s --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ "$GITLAB_URL/api/v4/projects/$PROJECT_ID/pipelines?status=failed&updated_after=$(date -d '24 hours ago' -Iseconds)" | \ jq 'length' ``` - [ ] Pipelines obtenidos - [ ] Fallidos ├║ltimas 24h: ___ ### 3. Estado de Ramas Principales ```bash # ├Ültimo pipeline de main/master curl -s --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ "$GITLAB_URL/api/v4/projects/$PROJECT_ID/pipelines?ref=main&per_page=1" | \ jq '.[0] | {id, status, created_at}' # ├Ültimo pipeline de develop (si existe) curl -s --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ "$GITLAB_URL/api/v4/projects/$PROJECT_ID/pipelines?ref=develop&per_page=1" | \ jq '.[0] | {id, status, created_at}' ``` - [ ] main/master: Ô£à Pasando / ÔØî Fallando - [ ] develop: Ô£à Pasando / ÔØî Fallando ### 4. Analizar Pipelines Fallidos ```bash # Detalle de un pipeline fallido PIPELINE_ID="xxx" curl -s --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ "$GITLAB_URL/api/v4/projects/$PROJECT_ID/pipelines/$PIPELINE_ID/jobs" | \ jq '.[] | select(.status == "failed") | {name, stage, failure_reason}' # Logs del job fallido JOB_ID="xxx" curl -s --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ "$GITLAB_URL/api/v4/projects/$PROJECT_ID/jobs/$JOB_ID/trace" | tail -50 ``` - [ ] Causas de fallo identificadas - [ ] Jobs problem├íticos listados ### 5. Tiempos de Build ```bash # Duraci├│n promedio ├║ltimos 10 pipelines exitosos curl -s --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ "$GITLAB_URL/api/v4/projects/$PROJECT_ID/pipelines?status=success&per_page=10" | \ jq '[.[].duration] | add / length' # Comparar con baseline (guardar en archivo de referencia) ``` - [ ] Duraci├│n promedio actual: ___ min - [ ] Duraci├│n baseline: ___ min - [ ] Degradaci├│n: ___% ### 6. Tasa de ├ëxito ```bash # ├Ültimos 50 pipelines curl -s --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ "$GITLAB_URL/api/v4/projects/$PROJECT_ID/pipelines?per_page=50" | \ jq '[.[] | .status] | group_by(.) | map({status: .[0], count: length})' ``` - [ ] Tasa de ├®xito: ___% - [ ] Pipelines flaky identificados --- ## Para Azure DevOps ### 2. Obtener Pipelines Recientes ```bash # Variables necesarias AZURE_ORG="${AZURE_ORG}" AZURE_PROJECT="${AZURE_PROJECT}" AZURE_PAT="${AZURE_PAT}" # Codificar PAT para header AUTH=$(echo -n ":$AZURE_PAT" | base64) # ├Ültimos builds curl -s -H "Authorization: Basic $AUTH" \ "https://dev.azure.com/$AZURE_ORG/$AZURE_PROJECT/_apis/build/builds?api-version=7.0&\$top=20" | \ jq '.value[] | {id, buildNumber, status, result, sourceBranch, finishTime}' # Builds fallidos ├║ltimas 24h curl -s -H "Authorization: Basic $AUTH" \ "https://dev.azure.com/$AZURE_ORG/$AZURE_PROJECT/_apis/build/builds?api-version=7.0&resultFilter=failed&minTime=$(date -d '24 hours ago' -Iseconds)" | \ jq '.count' ``` - [ ] Builds obtenidos - [ ] Fallidos ├║ltimas 24h: ___ ### 3. Estado de Ramas Principales ```bash # ├Ültimo build de main curl -s -H "Authorization: Basic $AUTH" \ "https://dev.azure.com/$AZURE_ORG/$AZURE_PROJECT/_apis/build/builds?api-version=7.0&branchName=refs/heads/main&\$top=1" | \ jq '.value[0] | {id, result, finishTime}' ``` - [ ] main: Ô£à succeeded / ÔØî failed - [ ] develop: Ô£à succeeded / ÔØî failed ### 4. Analizar Builds Fallidos ```bash # Timeline de un build (etapas y errores) BUILD_ID="xxx" curl -s -H "Authorization: Basic $AUTH" \ "https://dev.azure.com/$AZURE_ORG/$AZURE_PROJECT/_apis/build/builds/$BUILD_ID/timeline?api-version=7.0" | \ jq '.records[] | select(.result == "failed") | {name, type, issues}' # Logs curl -s -H "Authorization: Basic $AUTH" \ "https://dev.azure.com/$AZURE_ORG/$AZURE_PROJECT/_apis/build/builds/$BUILD_ID/logs?api-version=7.0" ``` - [ ] Causas de fallo identificadas ### 5. Tiempos de Build ```bash # Duraci├│n de ├║ltimos builds exitosos curl -s -H "Authorization: Basic $AUTH" \ "https://dev.azure.com/$AZURE_ORG/$AZURE_PROJECT/_apis/build/builds?api-version=7.0&resultFilter=succeeded&\$top=10" | \ jq '[.value[] | (.finishTime | fromdateiso8601) - (.startTime | fromdateiso8601)] | add / length / 60' ``` - [ ] Duraci├│n promedio: ___ min --- ## Output Esperado ``` ====== PROC-23 COMPLETADO [TIMESTAMP] ====== Proyecto: [nombre] CI/CD: GitLab CI / Azure DevOps ESTADO GENERAL: Ô£à SALUDABLE / ÔÜá´©Å DEGRADADO / ÔØî CR├ìTICO RAMAS PRINCIPALES: - main: Ô£à Pipeline #123 (hace 2h) - develop: Ô£à Pipeline #122 (hace 4h) ├ÜLTIMAS 24 HORAS: - Pipelines ejecutados: X - Exitosos: Y (Z%) - Fallidos: W PIPELINES FALLIDOS: | ID | Rama | Causa | Hace | |----|------|-------|------| | 456 | feature/x | Test failed | 3h | | 455 | feature/y | Build error | 5h | RENDIMIENTO: - Duraci├│n promedio: X min - Baseline: Y min - Degradaci├│n: Z% ALERTAS: - [lista si hay] ACCIONES REQUERIDAS: 1. [si hay builds rotos en main] 2. [si hay degradaci├│n significativa] ``` --- ## Criterios de ├ëxito - [ ] main/master en verde - [ ] Tasa de ├®xito > 80% - [ ] Sin degradaci├│n > 50% en tiempos - [ ] <10 pipelines fallidos/24h --- ## Alertas y Escalaci├│n | Severidad | Condici├│n | Acci├│n | |-----------|-----------|--------| | CRITICAL | main/master fallando | WhatsApp inmediato + fix urgente | | CRITICAL | >3 builds consecutivos fallando | Investigar bloqueo | | WARNING | >10 fallos en 24h | Revisar patrones | | WARNING | Degradaci├│n >100% | Analizar tiempos | | INFO | Todo OK | Documentar estado | --- ## Automatizaci├│n En ejecuci├│n no-interactiva: 1. Consultar API de CI/CD 2. Calcular m├®tricas 3. Comparar con baselines 4. Generar alertas 5. Enviar resumen si hay problemas --- --- ## Output Estructurado (Nexus) Al finalizar, el agente DEBE generar un bloque JSON con el siguiente formato para que Nexus pueda procesarlo automaticamente: ```json { "result": "success", "summary": "Ejecucion de PROC-23 completada. [Descripcion breve de resultados]", "metrics": { "issues_found": 0, "issues_resolved": 0, "pipelines_checked": 10, "failures_found": 1, "custom": { "procedure_specific_metric": "value" } }, "backlog_items": [ { "title": "Titulo del item de seguimiento", "description": "Descripcion detallada si se requiere accion futura", "priority": "medium", "type": "improvement", "tags": ["proc-23"] } ], "next_steps": [ "Accion recomendada 1", "Accion recomendada 2" ], "warnings": [ "Advertencias encontradas durante la ejecucion" ] } ``` **Campos requeridos:** - `result`: `"success"` | `"partial"` | `"failed"` - `summary`: Resumen ejecutivo en 1-3 lineas **Metricas especificas de este procedure:** - pipelines_checked, failures_found, avg_duration_min **Criterios de resultado:** - `success`: Procedimiento completado sin errores criticos - `partial`: Completado con algunos problemas menores o items pendientes - `failed`: Error critico o no se pudo completar ## Historial de Ejecuciones | Fecha | Proyecto | CI/CD | Tasa ├ëxito | Fallidos 24h | Main OK | Alertas | |-------|----------|-------|------------|--------------|---------|---------| | | | | | | | |
H1
H2
H3
Bold
Italic
Code
Lista
Num
Task
Code Block
Link
Nexus Platform
Reconectando
Recuperando la conexion
Se ha interrumpido la conexion con el servidor. Estamos reconectando automaticamente.
Reconectando...
Manten esta pestana abierta, volvemos enseguida.
No hemos podido reconectar
El servidor puede estar reiniciandose o tu conexion a internet es inestable.
Reintentar
La sesion ha expirado
Recarga la pagina para iniciar una nueva sesion.
Recargar
Si no vuelve en 30 segundos, recarga la pagina.