Glosario de Automatización • Envío de alarma por webhook

¿Qué es un envío de alarma por webhook en SCADA?

Ingeniería Merobix • • 10 min de lectura

Cuando una alarma SCADA se dispara, los operadores en la HMI la ven de inmediato, pero las herramientas que en realidad corren la respuesta - el sistema de tickets, la herramienta de guardia, la cola de mantenimiento - solo se enteran si algo se los dice. Un envío de alarma por webhook es el mecanismo que se los dice, enviando el evento de alarma como una llamada HTTP a un extremo externo en el instante en que la alarma ocurre. Esto es más directo y más legible por máquina que un correo o un SMS, porque entrega una carga útil estructurada sobre la que otro sistema puede actuar automáticamente. Esta guía cubre la forma de esa carga útil, cómo alimenta las herramientas de tickets y de guardia, en qué se distingue de las notificaciones humanas, y qué se necesita para entregar los eventos de alarma de forma confiable y en orden.

Volver al glosario

Envío de alarma por webhook en una línea: Un envío de alarma por webhook es la entrega de un evento de alarma SCADA a un extremo HTTP externo en el momento en que la alarma cambia de estado, haciendo que el sistema SCADA envíe (POST) una carga útil estructurada a una URL que el consumidor registró. La carga útil normalmente lleva el tag o la fuente, la prioridad de la alarma, el nuevo estado, una marca de tiempo y el estado de reconocimiento, para que el sistema receptor pueda crear un ticket, avisar a un ingeniero de guardia o actualizar una cola sin que un humano vuelva a teclear nada. Difiere de la notificación por correo o SMS porque apunta a una máquina en lugar de a una persona y está pensado para analizarse y actuarse de forma programática, y por eso importan la confiabilidad de entrega, el reintento ante fallo y el orden.

La carga útil del evento de alarma

El corazón de un envío de alarma por webhook es la carga útil, un mensaje estructurado compacto - normalmente JSON - que describe exactamente qué pasó. Como mínimo identifica la fuente de la alarma, es decir el tag o activo al que pertenece la alarma, para que el receptor sepa qué está en problemas. Lleva la prioridad o severidad de la alarma, para que el receptor pueda decidir si esto amerita despertar a alguien o solo registrar un ticket. Lleva el estado de la alarma, distinguiendo una alarma que acaba de volverse activa de una que ha vuelto a normal o ha sido reconocida, porque una herramienta aguas abajo necesita saber si está abriendo un incidente o cerrándolo. Y lleva una marca de tiempo de cuándo ocurrió el cambio de estado en la fuente, no cuándo se envió el mensaje, para que el registro sea exacto aunque la entrega se haya retrasado.

Más allá de esos elementos esenciales, una carga útil de alarma útil incluye contexto que le ahorra al receptor tener que buscar algo. Eso a menudo significa una descripción legible por humanos de la alarma, el valor que la disparó y el límite que cruzó, el área o sitio al que pertenece la fuente, y el estado de reconocimiento incluido quién la reconoció y cuándo si ha sido reconocida. Un identificador único estable para la ocurrencia de la alarma es especialmente valioso, porque deja al receptor correlacionar el posterior envío de vuelta a normal o de reconocimiento con la activación original y evitar tratarlos como eventos no relacionados. Sin tal identificador, emparejar un despeje con la alarma que despeja se vuelve adivinanza.

El modelo de estados que lleva la carga útil es lo que hace útil todo el asunto en lugar de solo ruidoso. Una sola alarma normalmente pasa por un ciclo de vida - se vuelve activa, puede reconocerse, y eventualmente vuelve a normal - y cada una de esas transiciones vale un envío para que el sistema externo pueda rastrear el estado verdadero de la alarma. Un receptor que recibe solo el envío de activación, sin despeje ni reconocimiento, no tiene manera de saber que la situación se resolvió y dejará un ticket abierto para siempre. Diseñar la carga útil y el conjunto de envíos alrededor del ciclo de vida completo de la alarma, en lugar de solo el disparo inicial, es lo que deja a una herramienta de tickets o de guardia mantenerse en sincronía con la realidad.

Alimentar herramientas de tickets y de guardia, y en qué difiere del correo o el SMS

La razón para enviar alarmas como webhooks en lugar de solo notificar a humanos es que un webhook aterriza en un sistema que puede actuar sobre él automáticamente. Una herramienta de tickets o de mantenimiento que recibe un envío de alarma puede abrir un elemento de trabajo prellenado con el activo, la prioridad, la descripción y la marca de tiempo, así que hay un registro rastreado desde el instante en que la alarma se disparó sin que nadie transcriba nada. Una herramienta de guardia o de incidentes que recibe el mismo envío puede enrutar la alarma al ingeniero correcto según su prioridad y el turno de guardia actual, escalar si no se reconoce, y adjuntar el envío de despeje de la alarma para cerrar el incidente automáticamente cuando la condición se resuelve. El webhook es el tejido conectivo que convierte una alarma en una pantalla en una respuesta administrada.

Esto es una cosa genuinamente distinta de una notificación por correo o SMS, aunque las tres puedan dispararse por la misma alarma. Un correo o un texto apunta a una persona: es prosa, la lee un humano, y cualquier acción que provoque ocurre porque ese humano decide actuar. Un webhook apunta a una máquina: es datos estructurados, lo analiza el software, y la acción ocurre automáticamente según reglas que el sistema receptor hace cumplir. El correo y el SMS son excelentes para captar la atención de una persona, pero no crean tickets, ni respetan políticas de escalamiento, ni cierran incidentes por su cuenta. Un webhook puede impulsar todo eso, y por eso las integraciones serias usan webhooks para la automatización y reservan el correo y el SMS para el toque humano.

En la práctica los dos se complementan en lugar de competir. Una estrategia de alarmas bien diseñada podría enviar un webhook al sistema de tickets por cada alarma para que siempre haya un registro rastreado, enviar un webhook a la herramienta de guardia para las alarmas de alta prioridad para que corra la lógica de aviso y escalamiento, y por separado enviar un SMS o correo a un supervisor para conocimiento. Cada canal hace aquello en lo que es mejor. La contribución distintiva del webhook es que es el único de los tres que lleva estructura accionable por máquina, así que es el canal que deja que la respuesta se automatice en lugar de depender de que alguien lea un mensaje y recuerde hacer algo.

Entrega confiable, reintentos, orden y SCADA de nube

Como un envío de alarma por webhook impulsa una acción automatizada, perder uno es peor que perder una notificación suelta: una activación caída significa ningún ticket y ningún aviso, y un despeje caído significa un incidente que nunca cierra. La entrega confiable, por lo tanto, tiene que diseñarse, no suponerse. El mecanismo central es reconocimiento y reintento: el sistema SCADA considera un envío entregado solo cuando el receptor devuelve una respuesta de éxito, y si el receptor es inalcanzable o devuelve un error, el emisor reintenta. Un reintento sensato usa una espera creciente para no martillar un extremo con dificultades, y se rinde solo tras suficientes intentos como para que un corte breve del lado del receptor se sobrelleve con holgura en lugar de convertirse en alarmas perdidas.

Los reintentos hacen robusta la entrega pero introducen duplicados, así que el receptor tiene que poder reconocer una repetición. La defensa estándar es la idempotencia: cada envío de alarma lleva un identificador de evento único, y el receptor trata una segunda llegada del mismo identificador como un duplicado por ignorar en lugar de un evento nuevo por actuar. Sin esto, un reintento después de que el receptor procesó el primer intento pero no alcanzó a reconocer a tiempo crearía un segundo ticket para la misma alarma. Emparejar un identificador de evento estable en el emisor con la supresión de duplicados en el receptor es lo que deja a un sistema reintentar con suficiente agresividad como para garantizar la entrega sin generar acciones duplicadas espurias.

El orden es la tercera preocupación, porque la activación, el reconocimiento y el despeje de una alarma solo tienen sentido procesados en secuencia. Si un despeje llegara y se procesara antes de la activación que despeja, el receptor podría cerrar un incidente que nunca abrió, o reabrir uno que ya estaba resuelto. Preservar el orden se puede manejar incluyendo un número de secuencia monótono o una marca de tiempo de fuente precisa en cada envío para que el receptor pueda ordenar los eventos él mismo y retener o descartar cualquiera que llegue fuera de secuencia. Una plataforma SCADA de nube como Merobix está bien posicionada para proveer todo esto como una capacidad administrada - disparando el envío en el momento del cambio de estado, llevando una carga útil estructurada con un identificador de evento estable y una marca de tiempo de fuente, y reintentando ante fallo - para que los equipos de operaciones de campo lleven las alarmas a sus herramientas de tickets y de guardia de forma confiable sin construir ellos mismos la maquinaria de entrega, reintento y orden.

Preguntas frecuentes

¿Qué contiene la carga útil de un envío de alarma por webhook?

Como mínimo identifica la fuente o el tag de la alarma, la prioridad o severidad, el nuevo estado de la alarma como activa, despejada o reconocida, y una marca de tiempo de cuándo ocurrió el cambio de estado en la fuente. Las buenas cargas útiles agregan contexto para que el receptor no tenga que buscar nada: una descripción, el valor y el límite involucrados, el sitio o área, los detalles de reconocimiento y un identificador único estable para la ocurrencia de la alarma. Ese identificador es importante porque deja al receptor emparejar un despeje o reconocimiento posterior con la activación original.

¿En qué se distingue un envío de alarma por webhook de un correo o SMS de alarma?

Un correo o SMS apunta a una persona: es prosa pensada para leerse, y cualquier acción resultante depende de que un humano decida actuar. Un webhook apunta a una máquina: entrega datos estructurados que el software analiza y actúa automáticamente, como abrir un ticket, avisar al ingeniero de guardia correcto o cerrar un incidente cuando la alarma despeja. Los dos son complementarios, así que muchos equipos envían webhooks para impulsar tickets y avisos automatizados mientras siguen mandando correo o SMS para captar la atención de una persona.

¿Qué pasa si el extremo que recibe los webhooks de alarma está caído?

Un emisor bien diseñado trata un envío como entregado solo cuando el receptor devuelve una respuesta de éxito, y si el extremo es inalcanzable o devuelve un error, reintenta, normalmente con una espera creciente para no abrumar un extremo con dificultades. Los reintentos dejan sobrellevar un corte breve del receptor sin perder alarmas, pero pueden producir duplicados, así que cada envío debe llevar un identificador de evento único y el receptor debe ignorar las repeticiones. Si los reintentos se agotan el evento aún puede perderse, y por eso una reconciliación de baja frecuencia, como sondear periódicamente cualquier alarma que el receptor no registró, es una salvaguarda común.

Más en Fundamentos de SCADA
Sondeo de API REST vs webhook push  •  Webhook  •  Configurar una alarma en SCADA  •  Notificación de alarma por correo  •  Alarma de falla de comunicación  •  Todo en Fundamentos de SCADA →
Capacitación SCADA gratuita para operadores
Merobix University - 70 lecciones en video y 261 preguntas de examen, del primer inicio de sesión a los reportes de cumplimiento (contenido en inglés). Sin llamada de ventas.
Comenzar gratis →