CreaRack-SL

Tool MCP report_service_status — publicar estado de servicios internos

Descripción

Tool MCP que publica la foto completa del estado de servicios internos monitoreados por la sonda servicios-check de OPS. Se ejecuta desde el cron cada 5 minutos (cuando la sonda publica).

Entrada: array targets donde cada target es {name, server, label, status, http_code}. Acción: reemplazo atómico — upsert de cada target + borrado de los ausentes (en una sola llamada DB.batch() para no exceder el límite de subrequests del Worker). Salida: respuesta JSON con confirmación y recuento de targets procesados.

La sonda da la foto completa (todos los servicios vigilados), no cambios incrementales. Esto es deliberado: garantiza que si un target desaparece de la sonda (p.ej. se desconfigura), se borra automáticamente de D1.

Handler en infra.ts

El caso 'report_service_status' valida que todos los targets sean objetos con estructura esperada:

  • name (string): ID único del servicio (ej: stage-web, forgejo, dca-web)
  • server (string): categoría (prod, stage, ops, dca)
  • label (string): nombre humano con contexto
  • status (string, up | down): estado actual
  • http_code (string, opcional): código HTTP último visto

Si la validación falla, retorna error antes de tocar la BD.

El batch SQL:

  1. DELETE FROM service_status WHERE name NOT IN (...) — limpia targets ausentes en la foto nueva.
  2. N sentencias INSERT ... ON CONFLICT(name) DO UPDATE — upsert atómico de cada target.

Nota: sin || echo 000 en curl (fue un bug cazado en el simulacro del 11-08). El curl ya imprime el código HTTP; un echo extra producía "000000" y la sonda se quedaba ciega.

Integración en logging MCP

Registrada en LOGGED_TOOLS del index MCP: action update, entity_type service_status. Así aparece en los logs de auditoría del workspace.

Véase también

  • [[entity—functions—endpoint—api-services]]
  • [[entity—migrations—table—service-status]]
  • [[feature—monitoring—led-servicios-onoff]]
  • [[entity—scripts—bash—servicios-check]]
  • [[concept—infra—health-checks]]