Ir al contenido

Recibe avisos de incidentes

En Analíticas → Alertas → Canales de notificación, crea destinos por entorno para correo, Slack o PagerDuty. Selecciona incidentes Todos, Umbral o Anomalías. Los lectores consultan; los miembros con permiso de escritura administran.

Las reglas de umbral y el detector de anomalías producen incidentes. El detector es opt-in y tiene calentamiento y algoritmo propios. Un canal recibe la apertura y su cierre/caducidad; crear un canal no lo suscribe a incidentes anteriores. Los webhooks firmados son otra forma de integrar los eventos data.incident.opened, closed y expired.

  • Correo: una dirección ASCII por canal y SMTP configurado por el operador.
  • Slack: webhook HTTPS entrante de hooks.slack.com o hooks.slack-gov.com.
  • PagerDuty: clave de integración Events v2 de 32 caracteres.

Las credenciales se escriben pero no vuelven a mostrarse. Dejar destino vacío al editar conserva el actual. No hay botón de envío de prueba. Los formularios conservan el borrador ante fallos; un conflicto exige cargar explícitamente la versión vigente antes de reemplazarla.

Con el cliente de servidor y permiso data:write:

import { randomUUID } from "node:crypto";
const channel = await orilla.data.notificationChannels.create({
request_id: randomUUID(),
name: "Guardia",
type: "pagerduty",
kind: "threshold",
enabled: true,
destination: process.env.PAGERDUTY_INTEGRATION_KEY!,
});
await orilla.data.notificationChannels.update(channel.id, {
version: channel.version,
name: channel.name,
kind: "all",
enabled: false,
});
const channels = await orilla.data.notificationChannels.list();

Guarda request_id antes de la creación y reutilízalo con el mismo cuerpo si se pierde la respuesta. Una repetición idéntica recupera el recurso; cambiarla produce 409 y repetir una creación eliminada, 410. Actualizar o eliminar exige la versión vigente; el tipo de servicio es inmutable. Máximo 50 canales activos por entorno. Consulta usa data:read.

Para ver auditoría de un incidente:

const incident = await orilla.data.incidents.retrieve(incidentId);
console.log(incident.data.orilla.channel_notifications);

Pausar retiene pendientes; reanudar los continúa. Eliminar cancela pendientes y conserva la auditoría. Una petición ya enviada no puede retirarse. Cada suscripción conserva la versión y destino originales al abrir: editar un canal no cambia cómo se resuelve un incidente previo.

El despachador del API usa cola durable, leases y hasta doce intentos con espera exponencial hasta una hora. Mantiene el orden de apertura/cierre por incidente y canal. Un ACK perdido puede duplicar correo o Slack; PagerDuty conserva su clave de deduplicación. La auditoría distingue cola, pausa, cancelación, reintento, fallo y resultado sin confirmar.

Aceptación SMTP, ok de Slack o éxito de PagerDuty confirma aceptación del proveedor, no lectura o entrega final. No se exponen destinos ni textos de error del proveedor en la respuesta de auditoría. Exportación continua de Data a destinos externos sigue pendiente.

El operador debe aplicar el esquema y configurar NOTIFICATION_ENCRYPTION_KEY dedicada, estable, de 32 bytes hexadecimales. Los destinos se guardan cifrados; respaldar y migrar esa clave es una tarea operativa. Sin ella se bloquean creación/reemplazo y despacho, pero se puede leer, pausar, eliminar y editar metadatos. Correo reutiliza las variables SMTP descritas en cuenta.

El código forma parte de la versión desplegada registrada, con lecturas remotas acotadas. Los envíos se verificaron con SMTP/HTTP locales sintéticos; todavía deben configurarse y validarse los proveedores externos de cada instalación. Consulta el estado de implementación.