IoT Hub bewerkingen bewaken (afgeschaft)

IoT Hub bewaking van bewerkingen kunt u de status van bewerkingen op uw IoT-hub in realtime bewaken. IoT Hub houdt gebeurtenissen bij in verschillende categorieën bewerkingen. U kunt ervoor kiezen om gebeurtenissen van een of meer categorieën naar een eindpunt van uw IoT-hub te verzenden voor verwerking. U kunt de gegevens controleren op fouten of complexere verwerking instellen op basis van gegevenspatronen.

Notitie

IoT Hub bewaking van bewerkingen is afgeschaft en is verwijderd uit IoT Hub op 10 maart 2019. Zie Monitor IoT Hub voor het controleren IoT Hub van IoT Hub. Zie Monitor your Azure IoT solutions with Azure Monitor and Azure Resource Health (Uw Azure IoT-oplossingenbewaken met Azure Monitor en Azure Resource Health) voor meer informatie over de tijdlijn voor afschaffing.

IoT Hub bewaakt zes categorieën gebeurtenissen:

  • Bewerkingen voor apparaat-id's
  • Apparaattelemetrie
  • Cloud-naar-apparaat-berichten
  • Verbindingen
  • Bestand uploaden
  • Berichtroutering

Belangrijk

IoT Hub bewaking van bewerkingen garandeert geen betrouwbare of geordende levering van gebeurtenissen. Afhankelijk van IoT Hub onderliggende infrastructuur, kunnen sommige gebeurtenissen verloren gaan of niet in de volgorde worden geleverd. Gebruik bewaking van bewerkingen om waarschuwingen te genereren op basis van foutsignalen, zoals mislukte verbindingspogingen of verbroken verbindingen met hoge frequentie voor specifieke apparaten. U moet niet vertrouwen op bewakingsgebeurtenissen voor bewerkingen om een consistent opslag te maken voor de apparaattoestand, bijvoorbeeld het bijhouden van de verbonden of verbroken status van een apparaat in een winkel.

Bewaking van bewerkingen inschakelen

  1. Maak een IoT-hub. U vindt instructies voor het maken van een IoT-hub in Aan de slag handleiding.

  2. Open de blade van uw IoT-hub. Klik van hier op Bewerkingen bewaken.

    Configuratie van de bewaking van toegangsbewerkingen in de portal

  3. Selecteer de bewakingscategorieën die u wilt bewaken en klik vervolgens op Opslaan. De gebeurtenissen zijn beschikbaar voor het lezen van het Event Hub-compatibele eindpunt dat wordt vermeld in Bewakingsinstellingen. Het IoT Hub eindpunt wordt messages/operationsmonitoringevents genoemd.

    Bewaking van bewerkingen configureren in uw IoT-hub

Notitie

Als u Uitgebreide bewaking selecteert voor de categorie Verbindingen, IoT Hub u aanvullende diagnostische berichten genereren. Voor alle andere categorieën wijzigt de instelling Uitgebreid de hoeveelheid informatie die IoT Hub in elk foutbericht bevat.

Gebeurteniscategorieën en hoe u deze kunt gebruiken

Elke bewakingscategorie voor bewerkingen houdt een ander type interactie met IoT Hub bij en elke bewakingscategorie heeft een schema dat definieert hoe gebeurtenissen in die categorie zijn gestructureerd.

Bewerkingen voor apparaat-id's

De categorie apparaat-id-bewerkingen houdt fouten bij die optreden wanneer u probeert een vermelding in het id-register van uw IoT Hub te maken, bij te werken of te verwijderen. Het bijhouden van deze categorie is handig voor inrichtingsscenario's.

{
    "time": "UTC timestamp",
    "operationName": "create",
    "category": "DeviceIdentityOperations",
    "level": "Error",
    "statusCode": 4XX,
    "statusDescription": "MessageDescription",
    "deviceId": "device-ID",
    "durationMs": 1234,
    "userAgent": "userAgent",
    "sharedAccessPolicy": "accessPolicy"
}

Apparaattelemetrie

De telemetriecategorie van het apparaat houdt fouten bij die optreden in de IoT-hub en zijn gerelateerd aan de telemetriepijplijn. Deze categorie bevat fouten die optreden bij het verzenden van telemetriegebeurtenissen (zoals beperking) en het ontvangen van telemetriegebeurtenissen (zoals niet-geautoriseerde lezer). Deze categorie kan geen fouten ondervangen die worden veroorzaakt door code die wordt uitgevoerd op het apparaat zelf.

{
    "messageSizeInBytes": 1234,
    "batching": 0,
    "protocol": "Amqp",
    "authType": "{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\"}",
    "time": "UTC timestamp",
    "operationName": "ingress",
    "category": "DeviceTelemetry",
    "level": "Error",
    "statusCode": 4XX,
    "statusType": 4XX001,
    "statusDescription": "MessageDescription",
    "deviceId": "device-ID",
    "EventProcessedUtcTime": "UTC timestamp",
    "PartitionId": 1,
    "EventEnqueuedUtcTime": "UTC timestamp"
}

Cloud-naar-apparaat-opdrachten

De categorie cloud-naar-apparaat-opdrachten houdt fouten bij die optreden in de IoT-hub en zijn gerelateerd aan de berichtenpijplijn van cloud naar apparaat. Deze categorie bevat fouten die optreden bij het verzenden van cloud-naar-apparaat-berichten (zoals niet-geautoriseerde afzender), het ontvangen van cloud-naar-apparaat-berichten (zoals het aantal leveringen overschreden) en het ontvangen van cloud-naar-apparaat-berichtfeedback (zoals feedback is verlopen). Deze categorie ondervangt geen fouten van een apparaat dat een cloud-naar-apparaat-bericht onjuist verwerkt als het cloud-naar-apparaat-bericht is bezorgd.

{
    "messageSizeInBytes": 1234,
    "authType": "{\"scope\":\"hub\",\"type\":\"sas\",\"issuer\":\"iothub\"}",
    "deliveryAcknowledgement": 0,
    "protocol": "Amqp",
    "time": " UTC timestamp",
    "operationName": "ingress",
    "category": "C2DCommands",
    "level": "Error",
    "statusCode": 4XX,
    "statusType": 4XX001,
    "statusDescription": "MessageDescription",
    "deviceId": "device-ID",
    "EventProcessedUtcTime": "UTC timestamp",
    "PartitionId": 1,
    "EventEnqueuedUtcTime": "UTC timestamp"
}

Verbindingen

De categorie verbindingen houdt fouten bij die optreden wanneer apparaten verbinding maken met een IoT-hub of de verbinding verbreken. Het bijhouden van deze categorie is handig voor het identificeren van niet-geautoriseerde verbindingspogingen en voor het bijhouden wanneer een verbinding verloren gaat voor apparaten in gebieden met slechte connectiviteit.

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

Bestand uploaden

De uploadcategorie voor bestanden houdt fouten bij die optreden in de IoT-hub en zijn gerelateerd aan de functionaliteit voor het uploaden van bestanden. Deze categorie omvat:

  • Fouten die optreden met de SAS-URI, zoals wanneer deze verloopt voordat een apparaat de hub op de weet komt van een voltooide upload.

  • Mislukte uploads die door het apparaat zijn gerapporteerd.

  • Fouten die optreden wanneer een bestand niet wordt gevonden in de opslag tijdens IoT Hub het maken van een meldingsbericht.

Deze categorie kan fouten die zich rechtstreeks voordoen tijdens het uploaden van een bestand naar de opslag niet ondervangen.

{
    "authType": "{\"scope\":\"hub\",\"type\":\"sas\",\"issuer\":\"iothub\"}",
    "protocol": "HTTP",
    "time": " UTC timestamp",
    "operationName": "ingress",
    "category": "fileUpload",
    "level": "Error",
    "statusCode": 4XX,
    "statusType": 4XX001,
    "statusDescription": "MessageDescription",
    "deviceId": "device-ID",
    "blobUri": "http//bloburi.com",
    "durationMs": 1234
}

Berichtroutering

De berichtrouteringscategorie houdt fouten bij die optreden tijdens de evaluatie van berichtenroute en de status van het eindpunt, zoals waargenomen door IoT Hub. Deze categorie bevat gebeurtenissen zoals wanneer een regel wordt geëvalueerd als 'niet-gedefinieerd', wanneer IoT Hub een eindpunt markeert als in een impasse en eventuele andere fouten die van een eindpunt zijn ontvangen. Deze categorie bevat geen specifieke fouten over de berichten zelf (zoals apparaatbeperkingsfouten), die worden gerapporteerd onder de categorie 'apparaattelemetrie'.

{
    "messageSizeInBytes": 1234,
    "time": "UTC timestamp",
    "operationName": "ingress",
    "category": "routes",
    "level": "Error",
    "deviceId": "device-ID",
    "messageId": "ID of message",
    "routeName": "myroute",
    "endpointName": "myendpoint",
    "details": "ExternalEndpointDisabled"
}

Verbinding maken aan het bewakings-eindpunt

Het eindpunt voor bewaking in uw IoT-hub is een eindpunt dat compatibel is met Event Hub. U kunt elk mechanisme gebruiken dat werkt met Event Hubs bewakingsberichten van dit eindpunt te lezen. In het volgende voorbeeld wordt een eenvoudige lezer gemaakt die niet geschikt is voor een implementatie met een hoge doorvoer. Zie voor meer informatie over het verwerken van Event Hubs-berichten de zelfstudie Aan de slag met Event Hubs.

Als u verbinding wilt maken met het eindpunt voor bewaking, hebt u een connection string en de naam van het eindpunt nodig. De volgende stappen laten zien hoe u de benodigde waarden kunt vinden in de portal:

  1. Navigeer in de portal naar IoT Hub resourceblade.

  2. Kies Bewerkingen bewaken en noteer de event hub-compatibele naam en de waarden voor eindpunten die compatibel zijn met Event Hub:

    Event Hub-compatibele eindpuntwaarden

  3. Kies Beleid voor gedeelde toegang en kies vervolgens service. Noteer de waarde van de primaire sleutel:

    Primaire sleutel van het servicebeleid voor gedeelde toegang

Het volgende C#-codevoorbeeld is afkomstig uit een Visual Studio Windows klassieke desktop-C#-console-app. In het project is het WindowsAzure.ServiceBus NuGet-pakket geïnstalleerd.

  • Vervang de tijdelijke connection string door een connection string die gebruikmaakt van de waarden voor het event hub-compatibele eindpunt en de primaire sleutel van de service die u eerder hebt genoteerd, zoals wordt weergegeven in het volgende voorbeeld:

    "Endpoint={your Event Hub-compatible endpoint};SharedAccessKeyName=service;SharedAccessKey={your service primary key value}"
    
  • Vervang de tijdelijke aanduiding voor de naam van het bewakings-eindpunt door de event hub-compatibele naam die u eerder hebt genoteerd.

class Program
{
    static string connectionString = "{your monitoring endpoint connection string}";
    static string monitoringEndpointName = "{your monitoring endpoint name}";
    static EventHubClient eventHubClient;

    static void Main(string[] args)
    {
        Console.WriteLine("Monitoring. Press Enter key to exit.\n");

        eventHubClient = EventHubClient.CreateFromConnectionString(connectionString, monitoringEndpointName);
        var d2cPartitions = eventHubClient.GetRuntimeInformation().PartitionIds;
        CancellationTokenSource cts = new CancellationTokenSource();
        var tasks = new List<Task>();

        foreach (string partition in d2cPartitions)
        {
            tasks.Add(ReceiveMessagesFromDeviceAsync(partition, cts.Token));
        }

        Console.ReadLine();
        Console.WriteLine("Exiting...");
        cts.Cancel();
        Task.WaitAll(tasks.ToArray());
    }

    private static async Task ReceiveMessagesFromDeviceAsync(string partition, CancellationToken ct)
    {
        var eventHubReceiver = eventHubClient.GetDefaultConsumerGroup().CreateReceiver(partition, DateTime.UtcNow);
        while (true)
        {
            if (ct.IsCancellationRequested)
            {
                await eventHubReceiver.CloseAsync();
                break;
            }

            EventData eventData = await eventHubReceiver.ReceiveAsync(new TimeSpan(0,0,10));

            if (eventData != null)
            {
                string data = Encoding.UTF8.GetString(eventData.GetBytes());
                Console.WriteLine("Message received. Partition: {0} Data: '{1}'", partition, data);
            }
        }
    }
}

Volgende stappen

Als u meer wilt verkennen met Azure Monitor om uw IoT Hub controleren, gaat u naar: