Supervisión de operaciones de IoT Hub en Azure Stream Analytics

Publicado el 21 septiembre, 2016

Program Manager, Azure Stream Analytics

Azure Stream Analytics es un servicio de análisis de transmisiones en tiempo real totalmente administrado y muy escalable que puede procesar millones de eventos por segundo y realizar agregaciones y cálculos casi en tiempo real.

Stream Analytics y Azure IoT Hub han funcionado muy bien juntos durante algún tiempo y le han permitido obtener fácilmente conclusiones de los datos que sus dispositivos IoT envían a IoT Hub. Para comenzar a usar IoT Hub, todo lo que tiene que hacer es, simplemente, configurar una entrada como se explica en el apartado de la documentación sobre cómo crear una entrada de transmisión de datos de IoT Hub. Tenemos muchos clientes que utilizan esto actualmente con sus soluciones de IoT y funciona realmente bien. Sin embargo, nos preguntan a menudo cómo supervisar el estado de las operaciones en su centro de IoT Hub en tiempo real. Bueno, hoy me complace anunciar que ya pueden hacer esto conectándose al punto de conexión de supervisión de operaciones de IoT Hub.

La supervisión de operaciones de IoT Hub permite supervisar el estado de las operaciones de su centro de IoT en tiempo real. IoT Hub lleva a cabo un seguimiento de los eventos de varias categorías de operaciones y usted puede determinar que se envíen los eventos de una o varias categorías a un punto de conexión de su centro de IoT para procesarlos. Puede supervisar los datos en busca de errores o configurar un procesamiento más complejo basado en patrones de datos.

IoT Hub supervisa cinco categorías de eventos:

  • Operaciones de identidad de dispositivos
  • Telemetría de dispositivos
  • Comandos de la nube al dispositivo
  • Conexiones
  • Cargas de archivos

Si desea obtener más información sobre la supervisión de operaciones de IoT Hub, consulte el artículo Supervisión de operaciones de IoT Hub de la documentación.

Una consulta frecuente de los clientes es cómo se puede saber casi en tiempo real si un dispositivo se desconecta de la instancia de IoT Hub y no se vuelve a conectar en un período de tiempo determinado, por ejemplo, un minuto. Si esto ocurre, querrá que se envíe un correo electrónico o se inicie un flujo de trabajo casi en tiempo real. Para algunos dispositivos, es crucial que estas alertas se activen tan pronto como sea posible y que se realicen tareas de mantenimiento antes de que se convierta en un problema.

Para mostrar lo fácil que es hacer esto con Stream Analytics, vamos a usar la funcionalidad de supervisión de operaciones de IoT Hub para configurar la supervisión de eventos de la categoría “Conexiones”.

 

Información de la categoría Conexiones

Como puede ver en la imagen anterior, tras habilitarla, comienzan a registrarse eventos cuando los dispositivos se conectan y se desconectan. Para comenzar a usar esto, cambie el selector de la categoría Conexiones a Detallado como se muestra a continuación:

Configuración de la categoría Conexiones

 

Una vez configurada, debería comenzar la captura de eventos cuando se conectan dispositivos a su centro de IoT. Para comprobarlo, utilice una herramienta como el explorador de Service Bus. Conéctelo al nombre o punto de conexión compatible con Event Hub y vea los mensajes.

El siguiente es un ejemplo de mensaje recopilado:

{
     "durationMs": 1234,
     "authType": "{\"scope\":\"hub\",\"type\":\"sas\",\"issuer\":\"iothub\"}",
     "protocol": "Amqp",
     "time": "2016-09-13T20:00Z",
     "operationName": "deviceConnect",
     "category": "Connections",
     "level": "Error",
     "statusCode": 4XX,
     "statusType": 4XX001,
     "statusDescription": "MessageDescription",
     "deviceId": "device-ID"
}

De igual forma, cuando un dispositivo se desconecta del centro de IoT, se captura un evento con operationName == deviceDisconnect.

Ahora que hemos confirmado que estos mensajes están llegando a nuestro centro de IoT, usarlos en un trabajo de Stream Analytics es muy sencillo:

1. Cree un nuevo trabajo de Stream Analytics.

Si necesita ayuda para crear un nuevo trabajo de Stream Analytics, consulte la guía sobre cómo crear un trabajo de procesamiento de análisis de datos para Stream Analytics.

2. Cree una entrada de flujo de datos que apunte a su centro de IoT. Asegúrese de seleccionar “Supervisión de operaciones” en Punto de conexión y no “Mensajería”.

Configuración de la categoría Conexiones

3. Cree la siguiente consulta:

WITH
Disconnected AS (
SELECT *
FROM input TIMESTAMP BY [Time]
WHERE OperationName = 'deviceDisconnect'
    AND Category = 'Connections'
),
Connected AS (
SELECT *
FROM input TIMESTAMP BY [Time]
WHERE OperationName = 'deviceConnect'
    AND Category = 'Connections'
)

SELECT Disconnected.DeviceId, Disconnected.Time
INTO Output 
FROM Disconnected
LEFT JOIN Connected 
    ON DATEDIFF(second, Disconnected, Connected) BETWEEN 0 AND 180
    AND Connected.deviceId = Disconnected.deviceId
WHERE Connected.DeviceId IS NULL

Esta consulta tiene dos pasos: el primer paso obtiene todos los eventos de desconexión y el segundo paso obtiene todos los eventos de conexión.

Después, combinamos estos dos flujos usando la operación DATEDIFF de Stream Analytics en LEFT JOIN y filtramos los registros coincidentes. Esto nos muestra los dispositivos que tienen un evento de desconexión, pero no un evento de conexión correspondiente en un plazo de 180 segundos.

La salida de este trabajo se puede dirigir ahora a cualquiera de las salidas de Stream Analytics admitidas, incluidas las colas de Service Bus. Una vez que está en una cola de Service Bus, es fácil crear una función en Azure Functions, o incluso una aplicación lógica en Azure Logic Apps que se ejecute tan pronto como se publique un mensaje en la cola.

Y de igual forma, con una sencilla consulta de tipo SQL, puede tener noticias en tiempo real del punto de conexión de supervisión de operaciones de IoT Hub.

A veces, echo de menos los viejos tiempos cuando programar escenarios complejos como este era difícil y requería mucho tiempo... No, espera, ¡no lo echo de menos! El uso de los servicios PaaS y las características de informática sin servidor de Azure es mucho más sencillo y eficaz, y me permite dedicarme a crear más valor.

Servicios relacionados

Microsoft Azure IoT Hub para la conexión, la supervisión y la administración de millones de recursos de IoT.

Microsoft Azure Event Hubs para la ingesta de datos de sitios web, aplicaciones y dispositivos.

Microsoft Azure Service Bus para mantener las aplicaciones y los servicios conectados entre nubes públicas y privadas.

Microsoft Azure Logic Apps para la creación rápida de soluciones de integración muy eficaces.

Microsoft Azure Functions: para el procesamiento de eventos con código sin servidor.

Pasos siguientes

Estamos realmente encantados con esta integración con IoT Hubs y esperamos que sea fuente de numerosas posibilidades interesantes para usted y para sus aplicaciones de IoT.

Le invitamos a que nos comente en la página UserVoice lo próximo que le gustaría que incorporásemos al servicio.

Si aún no conoce Microsoft Azure o Stream Analytics, pruébelos con una cuenta de evaluación gratuita de Azure y cree su primer trabajo en Stream Analytics.

Si necesita ayuda o tiene alguna duda, póngase en contacto con nosotros en los foros de MSDN o Stackoverflow, o envíenos un correo electrónico al equipo del producto directamente.