Prise en charge de la Surveillance des opérations IoT Hub par Azure Stream Analytics

Publié le 21 septembre, 2016

Program Manager, Azure Stream Analytics

Azure Stream Analytics est un service d'analyse de flux en temps réel, hautement évolutif et complètement managé qui peut traiter des millions d'événements par seconde, et effectuer des agrégations et des calculs en temps quasi réel.

Très complémentaires, Stream Analytics et Azure IoT Hub vous permettent de recueillir facilement des insights sur les données que vos appareils IoT envoient au hub IoT. Pour commencer à utiliser le hub IoT, il vous suffit de configurer une entrée comme décrit dans la documentation Créer une entrée de flux de données IoT Hub. De nombreux clients utilisent désormais cette méthode avec leurs solutions IoT et cela fonctionne très bien. Cela dit, les clients se demandent souvent comment ils peuvent surveiller en temps réel l'état des opérations sur leur hub IoT. Eh bien, nous sommes heureux de vous annoncer que vous pouvez maintenant le faire en vous connectant au point de terminaison Surveillance des opérations IoT Hub.

La Surveillance des opérations IoT Hub vous permet de surveiller en temps réel l'état des opérations sur votre hub IoT. IoT Hub effectue le suivi des événements par catégories d'opérations, et vous pouvez opter pour l'envoi des événements d'une ou plusieurs catégories à un point de terminaison de votre hub IoT à des fins de traitement. Vous pouvez surveiller les données afin de détecter les erreurs, ou configurer un traitement plus complexe basé sur des modèles de données.

IoT Hub surveille cinq catégories d'événements :

  • Opérations d'identification des appareils
  • Données de télémétrie des appareils
  • Commandes cloud-à-appareil
  • Connexions
  • Chargements de fichiers

Pour plus d'informations sur la Surveillance des opérations IoT Hub, consultez la documentation Introduction à la surveillance des opérations.

Les clients se demandent souvent comment ils peuvent déterminer en temps quasi réel si un appareil se déconnecte de leur hub IoT sans se reconnecter pendant un certain délai, par exemple une minute. Il peut alors être utile d'envoyer un e-mail ou de lancer un workflow en temps quasi réel. Pour certains appareils, il est essentiel que ces alertes soient diffusées le plus tôt possible et que la maintenance soit effectuée avant qu'un problème ne survienne.

Pour démontrer à quel point ces opérations sont faciles avec Stream Analytics, nous allons utiliser les fonctionnalités de Surveillance des opérations IoT Hub et configurer la surveillance des événements de type « Connections ».

 

ConnectionsInfo

Comme le montre l'illustration ci-dessus, l'activation de la journalisation des événements commence lors de la connexion et de la déconnexion des appareils. Pour commencer à utiliser cette fonctionnalité, déplacez le commutateur Connections sur Verbose comme illustré ci-dessous :

ConnectionsConfig

 

Une fois cette configuration effectuée, la capture des événements doit commencer dès que des appareils se connectent à votre hub IoT. Pour le vérifier, utilisez un outil tel que Service Bus Explorer, connectez-le à « Event Hub - point de terminaison / nom compatible » et consultez les messages.

Exemple de message collecté :

{
     "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 même, lorsqu'un appareil se déconnecte du hub IoT, un événement est capturé avec : operationName == deviceDisconnect.

Maintenant que nous avons vérifié que ces messages arrivent bien dans notre hub IoT, leur utilisation dans un travail Stream Analytics est simple :

1. Créez un travail Stream Analytics.

Pour plus d'informations sur la création d'un travail Stream Analytics, consultez Créer un travail de traitement d'analytique données pour Stream Analytics

2. Créez un flux de données Input pointant vers votre hub IoT. Veillez à bien sélectionner « Operations monitoring » (Surveillance des opérations) à partir du point de terminaison, et non « Messaging » (Messagerie).

ConnectionsConfig

3. Créez la requête suivante :

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

Cette requête se décompose en deux étapes : la première permet de récupérer tous les événements de déconnexion et la seconde de récupérer tous les événements de connexion.

Nous joignons ensuite ces deux flux à l'aide de l'opération Stream Analytics DATEDIFF sur la jointure LEFT JOIN, puis nous filtrons tous les enregistrements présentant une correspondance. Nous obtenons ainsi les appareils avec événement de déconnexion, mais sans événement de connexion correspondant dans les 180 secondes.

La sortie de ce travail peut maintenant être dirigée vers l'une des sorties Stream Analytics prises en charge, comme les files d'attente Service Bus. Lorsqu'elle arrive dans une file d'attente Service Bus, vous pouvez facilement créer une fonction Azure, voire une application logique Azure, qui s'exécutera dès qu'un message sera publié dans la file d'attente.

Et ainsi, avec une requête très simple de type SQL, vous pouvez disposer de mises à jour en temps réel à partir de votre point de terminaison Surveillance des opérations IoT Hub.

Parfois, je regrette le bon vieux temps où le codage de scénarios complexes comme celui-ci était si difficile et prenait tant de temps... Mais non, je plaisante ! L'utilisation des services PaaS et des fonctionnalités informatiques Serverless d'Azure est tellement plus simple et efficace que je peux me concentrer sur la création de valeur ajoutée.

Services associés

Microsoft Azure IoT Hub : connecter, surveiller et gérer des millions de ressources IoT

Microsoft Azure Event Hubs : ingérer des données provenant de sites web, d'applications et d'appareils

Microsoft Azure Service Bus : faciliter la connexion des applications et appareils dans les clouds privés et publics

Microsoft Azure Logic Apps : développer rapidement de puissantes solutions d'intégration

Microsoft Azure Functions : traiter des événements avec du code serverless

Étapes suivantes

Nous sommes vraiment ravis de cette intégration étroite avec les hubs IoT et espérons que celle-ci permettra de développer de nombreuses fonctionnalités inédites pour vous et vos applications IoT.

Nous vous invitons à utiliser notre page User Voice pour nous faire part de vos commentaires sur le service et sur les améliorations dont vous souhaiteriez bénéficier.

Si vous êtes nouveau sur Microsoft Azure et Stream Analytics, n'hésitez pas à les essayer en ouvrant un compte Azure d'essai gratuit et en créant votre premier travail Stream Analytics.

Si vous avez besoin d'aide ou si vous avez des questions, contactez-nous via les forums MSDN ou Stackoverflow, ou envoyez directement un e-mail à l'équipe produit.