Självstudie: Konfigurera och använda mått och loggar med en IoT-hubb
Använd Azure Monitor för att samla in mått och loggar från din IoT-hubb för att övervaka hur lösningen fungerar och felsöka problem när de inträffar. I den här självstudien får du lära dig hur du skapar diagram baserat på mått, hur du skapar aviseringar som utlöser mått, hur du skickar IoT Hub-åtgärder och -fel till Azure Monitor-loggar och hur du kontrollerar om det finns fel i loggarna.
I den här självstudien används Azure-exemplet från snabbstarten .NET send telemetry för att skicka meddelanden till IoT-hubben. Du kan alltid använda en enhet eller ett annat exempel för att skicka meddelanden, men du kan behöva ändra några steg i enlighet med detta.
Vissa kunskaper om Azure Monitor-begrepp kan vara till hjälp innan du påbörjar den här självstudien. Mer information finns i Övervaka IoT Hub. Mer information om mått och resursloggar som genereras av IoT Hub finns i Referens för övervakning av data.
I den här självstudien utför du följande åtgärder:
- Använd Azure CLI för att skapa en IoT-hubb, registrera en simulerad enhet och skapa en Log Analytics-arbetsyta.
- Skicka IoT Hub-anslutningar och resursloggar för enhetstelemetri till Azure Monitor-loggar på Log Analytics-arbetsytan.
- Använd Metric Explorer för att skapa ett diagram baserat på valda mått och fästa det på instrumentpanelen.
- Skapa måttaviseringar så att du kan meddelas via e-post när viktiga villkor inträffar.
- Ladda ned och kör en app som simulerar en IoT-enhet som skickar meddelanden till IoT-hubben.
- Visa aviseringarna när dina villkor inträffar.
- Visa måttdiagrammet på instrumentpanelen.
- Visa IoT Hub-fel och -åtgärder i Azure Monitor-loggar.
Förutsättningar
En Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
.NET Core SDK 2.1 eller senare på utvecklingsdatorn. Du kan ladda ned .NET Core-SDK:n för flera plattformar från .NET.
Du kan kontrollera den aktuella versionen av C# på utvecklingsdatorn med följande kommando:
dotnet --version
Ett e-postkonto som kan ta emot e-post.
Kontrollera att port 8883 är öppen i brandväggen. Enhetsexemplet i den här självstudien använder MQTT-protokoll, som kommunicerar via port 8883. Den här porten kan blockeras i vissa företags- och utbildningsnätverksmiljöer. Mer information och sätt att kringgå det här problemet finns i Ansluta till IoT Hub (MQTT).
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Konfigurera resurser
I den här självstudien behöver du en IoT-hubb, en Log Analytics-arbetsyta och en simulerad IoT-enhet. Dessa resurser kan skapas med hjälp av Azure Portal, Azure CLI eller PowerShell. Använd samma resursgrupp och plats för alla resurser. När du har slutfört självstudien kan du sedan ta bort allt i ett steg genom att ta bort resursgruppen.
I den här självstudien har vi angett ett CLI-skript som utför följande steg:
Skapa en resursgrupp.
Skapa en IoT-hubb.
Skapa en Log Analytics-arbetsyta.
Registrera en enhetsidentitet för den simulerade enhet som skickar meddelanden till din IoT-hubb. Spara enheten anslutningssträng som ska användas för att konfigurera den simulerade enheten.
Viktigt!
Den här artikeln innehåller steg för att ansluta en enhet med en signatur för delad åtkomst, även kallad symmetrisk nyckelautentisering. Den här autentiseringsmetoden är praktisk för testning och utvärdering, men att autentisera en enhet med X.509-certifikat är en säkrare metod. Mer information finns i Metodtips > för säkerhet Anslutningssäkerhet.
Konfigurera resurser med hjälp av Azure CLI
Kopiera och klistra in följande kommandon i Cloud Shell eller en lokal kommandoradsinstans som har Azure CLI installerat. Vissa av kommandona kan ta lite tid att köra. De nya resurserna skapas i resursgruppen ContosoResources.
Namnet på vissa resurser måste vara unikt i Hela Azure. Skriptet genererar ett slumpmässigt värde med $RANDOM
funktionen och lagrar det i en variabel. För dessa resurser lägger skriptet till det här slumpmässiga värdet i ett basnamn för resursen, vilket gör resursnamnet unikt.
Ange värdena för de resursnamn som inte behöver vara globalt unika.
location=westus
resourceGroup=ContosoResources
iotDeviceName=Contoso-Test-Device
Ange värdena för de resursnamn som måste vara unika. Dessa namn har ett slumpmässigt tal sammanfogat till slutet.
randomValue=$RANDOM
iotHubName=ContosoTestHub$randomValue
echo "IoT hub name = " $iotHubName
workspaceName=contoso-la-workspace$randomValue
echo "Log Analytics workspace name = " $workspaceName
Skapa den resursgrupp som ska användas för alla resurser för den här självstudien.
az group create --name $resourceGroup --location $location
Skapa IoT-hubben på den kostnadsfria nivån. Varje prenumeration kan bara ha en kostnadsfri IoT Hub. Om du redan har en kostnadsfri hubb ändrar --sku
du värdet till B1
(grundläggande) eller S1
(standard).
az iot hub create --name $iotHubName --resource-group $resourceGroup --partition-count 2 --sku F1 --location $location
Skapa Log Analytics-arbetsytan
az monitor log-analytics workspace create --resource-group $resourceGroup --workspace-name $workspaceName --location $location
Skapa den IoT-enhetsidentitet som ska användas för testning.
az iot hub device-identity create --device-id $iotDeviceName --hub-name $iotHubName
Hämta den primära anslutningssträng för enhetsidentiteten och kopiera den sedan lokalt. Du behöver den här anslutningssträng för att köra enhetssimuleringen under testfasen.
az iot hub device-identity connection-string show --device-id $iotDeviceName --hub-name $iotHubName
Samla in loggar för anslutningar och enhetstelemetri
IoT Hub genererar resursloggar för flera åtgärdskategorier. Om du vill visa loggarna måste du skapa en diagnostikinställning för att skicka dem till ett mål. Ett sådant mål är Azure Monitor-loggar som samlas in på en Log Analytics-arbetsyta. IoT Hub-resursloggar grupperas i olika kategorier. Du kan välja vilka kategorier du vill skicka till Azure Monitor-loggar i diagnostikinställningen. I den här artikeln samlar vi in loggar för åtgärder och fel som har att göra med anslutningar och enhetstelemetri. En fullständig lista över de kategorier som stöds för IoT Hub finns i IoT Hub-resursloggar.
Följ dessa steg för att skapa en diagnostikinställning för att skicka IoT Hub-resursloggar till Azure Monitor-loggar:
I Azure Portal, navigerar du till din IoT-hubb. Om du använde CLI-kommandona för att skapa dina resurser finns din IoT-hubb i resursgruppen ContosoResources.
Välj Diagnostikinställningar i avsnittet Övervakning i navigeringsmenyn. Välj sedan Lägg till diagnostikinställning.
På sidan Diagnostikinställning anger du följande information:
Parameter Värde Namn på diagnostikinställning Ge inställningen ett beskrivande namn, till exempel "Skicka anslutningar och telemetri till loggar". Loggar Välj Anslutningar och enhetstelemetri i listan Kategorier . Målinformation Välj Skicka till Log Analytics-arbetsyta och använd sedan Log Analytics-arbetsyteväljaren för att välja den arbetsyta som du antecknade tidigare. Spara inställningarna genom att klicka på Spara. Stäng fönstret Diagnostikinställning . Du kan se din nya inställning i listan över diagnostikinställningar.
Konfigurera mått
Nu ska vi använda Metrics Explorer för att skapa ett diagram som visar mått som du vill spåra. Du fäster det här diagrammet på standardinstrumentpanelen i Azure Portal.
I IoT Hub-menyn väljer du Mått i avsnittet Övervakning .
Längst upp på skärmen väljer du Senaste 24 timmarna (automatisk). I listrutan som visas väljer du Senaste 4 timmarna för Tidsintervall, anger Tidskornighet till 1 minut och väljer Lokal för Visa tid som. Välj Använd för att spara de här inställningarna. Inställningen ska nu stå Lokal tid: Senaste 4 timmarna (1 minut).
I diagrammet visas en partiell måttinställning som är begränsad till din IoT-hubb. Låt värdena omfång och måttnamnområde vara standardvärdena. Välj inställningen Mått och skriv "Telemetri" och välj sedan Telemetrimeddelanden som skickas från listrutan. Sammansättning anges automatiskt till Summa. Observera att även diagrammets rubrik ändras.
Välj nu Lägg till mått för att lägga till ytterligare ett mått i diagrammet. Under du Mått väljer du Total number of messages used (Totalt antal använda meddelanden). För Sammansättning väljer du Genomsnittlig. Observera återigen att diagrammets rubrik har ändrats för att inkludera det här måttet.
Nu visar skärmen minimerade mått för Telemetry messages sent (Skickade telemetrimeddelanden), plus det nya måttet för Total number of messages used (Totalt antal använda meddelanden).
Längst upp till höger i diagrammet väljer du Spara på instrumentpanelen och väljer Fäst på instrumentpanelen i listrutan.
I fönstret Fäst på instrumentpanelen väljer du fliken Befintlig . Välj Privat och välj sedan Instrumentpanel i listrutan Instrumentpanel. Välj slutligen Fäst för att fästa diagrammet på standardinstrumentpanelen i Azure Portal. Om du inte fäster diagrammet på en instrumentpanel behålls inte inställningarna när du avslutar Metric Explorer.
Konfigurera måttaviseringar
Nu ska vi konfigurera aviseringar som utlöses på två mått: Telemetrimeddelanden som skickas och Totalt antal meddelanden som används.
Telemetrimeddelanden som skickas är ett bra mått för att spåra meddelandets dataflöde och undvika att begränsas. För en IoT-hubb på den kostnadsfria nivån är begränsningsgränsen 100 meddelanden per sekund. Med en enda enhet kan vi inte uppnå den typen av dataflöde, så i stället konfigurerar vi aviseringen så att den utlöses om antalet meddelanden överskrider 1 000 under en 5-minutersperiod. I produktion kan du ange signalen till ett mer betydande värde baserat på nivån, utgåvan och antalet enheter i din IoT-hubb.
Det totala antalet meddelanden som används spårar det dagliga antalet meddelanden som används. Det här måttet återställs varje dag kl. 00:00 UTC. Om du överskrider din dagliga kvot över ett visst tröskelvärde accepterar din IoT Hub inte längre meddelanden. För en IoT-hubb på den kostnadsfria nivån är den dagliga meddelandekvoten 8 000. Vi konfigurerar aviseringen så att den utlöses om det totala antalet meddelanden överskrider 4 000, 50 % av kvoten. I praktiken skulle du förmodligen ange den här procentandelen till ett högre värde. Det dagliga kvotvärdet är beroende av nivån, utgåvan och antalet enheter i din IoT-hubb.
Mer information om kvot- och begränsningsgränser med IoT Hub finns i Kvoter och begränsning.
Så här konfigurerar du måttaviseringar:
I IoT Hub-menyn väljer du Aviseringar i avsnittet Övervakning .
Välj Skapa aviseringsregel.
I fönstret Skapa aviseringsregel finns det fyra avsnitt:
- Omfånget är redan inställt på din IoT-hubb, så vi lämnar det här avsnittet ensamt.
- Villkoret anger den signal och de villkor som utlöser aviseringen.
- Åtgärder konfigurerar vad som händer när aviseringen utlöses.
- Med information kan du ange ett namn och en beskrivning för aviseringen.
Konfigurera först villkoret som aviseringen ska utlösas på.
Fliken Villkor öppnas med fönstret Välj en signal öppen. Skriv "telemetri" i sökrutan för signalnamn och välj Telemetrimeddelanden som skickas.
I fönstret Konfigurera signallogik anger eller bekräftar du följande fält under Aviseringslogik (du kan ignorera diagrammet):
Parameter Värde Threshold Statiskt Operator Större än Sammansättningstyp Totalt Tröskelvärdet 1000 Enhet Antal Sammansättningskornighet (period) 5 minuter Utvärderingsfrekvens Var 1 minut De här inställningarna anger att signalen ska summera antalet meddelanden under en period av 5 minuter. Den här summan utvärderas varje minut och om summan för de föregående 5 minuterna överskrider 1 000 meddelanden utlöses aviseringen.
Välj Klar för att spara signallogik.
Välj Nästa: Åtgärder för att konfigurera åtgärden för aviseringen.
Välj Skapa åtgärdsgrupp.
På fliken Grundläggande i fönstret Skapa åtgärdsgrupp ger du åtgärdsgruppen ett namn och ett visningsnamn.
Välj fliken Meddelanden . Som Meddelandetyp väljer du E-post/SMS-meddelande/Push/Röst i listrutan. Fönstret E-post/SMS/Push/Röst öppnas.
I fönstret E-post/SMS/push/röst väljer du e-post och anger din e-postadress och väljer sedan OK.
I fönstret Meddelanden anger du ett namn för meddelandet.
(Valfritt) I listrutan Åtgärdstyp på fliken Åtgärder för åtgärdsgrupp visas de typer av åtgärder som du kan utlösa med en avisering. I den här artikeln använder vi bara meddelanden, så du kan ignorera inställningarna på den här fliken.
Välj fliken Granska och skapa , verifiera inställningarna och välj Skapa.
På fliken Åtgärder för aviseringsregeln ser du att den nya åtgärdsgruppen har lagts till i åtgärderna för aviseringen.
Välj Nästa: Information för att konfigurera information om aviseringsregeln och spara aviseringsregeln.
- På fliken Information anger du ett namn och en beskrivning för din avisering, till exempel "Avisera om fler än 1 000 meddelanden under 5 minuter".
Välj Granska + skapa för att granska information om aviseringsregeln. Om allt ser korrekt ut väljer du Skapa för att spara den nya regeln.
Ställ nu in en ny avisering för de sammanlagda antalet använda meddelanden. Det här måttet är användbart om du vill skicka en avisering när antalet meddelanden som används närmar sig den dagliga kvoten för IoT-hubben, då IoT-hubben börjar avvisa meddelanden. Följ de steg du gjorde tidigare, med följande skillnader.
För signalen i fönstret Konfigurera signallogik väljer du Totalt antal meddelanden som används.
I fönstret Konfigurera signallogik anger eller bekräftar du följande fält (du kan ignorera diagrammet):
Parameter Värde Threshold Statiskt Operator Större än Sammansättningstyp Totalt Tröskelvärdet 4000 Enhet Antal Sammansättningskornighet (period) 1 minut Utvärderingsfrekvens Var 1 minut De här inställningarna anger att signalen ska utlösas när antalet meddelanden når 4 000. Måttet utvärderas varje minut.
När du anger åtgärden för din aviseringsregel väljer du samma åtgärdsgrupp som du skapade för den tidigare regeln.
För aviseringsinformationen väljer du ett annat namn och en annan beskrivning än du gjorde tidigare.
Välj Aviseringar under Övervakning i den vänstra rutan i din IoT-hubb. Välj nu Aviseringsregler på menyn överst i fönstret Aviseringar . Fönstret Aviseringsregler öppnas. Du bör se dina två aviseringar:
Stäng fönstret Aviseringsregler .
Med de här inställningarna utlöses en avisering och du får ett e-postmeddelande när fler än 1 000 meddelanden skickas inom en tidsperiod på 5 minuter och även när det totala antalet meddelanden som används överskrider 4 000 (50 % av den dagliga kvoten för en IoT-hubb på den kostnadsfria nivån).
Kör den simulerade enhetsappen
I avsnittet Konfigurera resurser registrerade du en enhetsidentitet som ska användas för att simulera med hjälp av en IoT-enhet. I det här avsnittet laddar du ned en .NET-konsolapp som simulerar en enhet som skickar meddelanden från enhet till molnet till en IoT-hubb, konfigurerar den för att skicka dessa meddelanden till din IoT-hubb och kör den sedan.
Viktigt!
Aviseringar kan ta upp till 10 minuter att konfigureras fullständigt och aktiveras av IoT Hub. Vänta minst 10 minuter mellan den tid då du konfigurerar din senaste avisering och kör den simulerade enhetsappen.
Ladda ned eller klona lösningen för Azure IoT C# SDK-lagringsplatsen från GitHub. Den här lagringsplatsen innehåller flera exempelprogram. I den här självstudien använder vi iothub/device/samples/getting started/SimulatedDevice/.
I ett lokalt terminalfönster navigerar du till rotmappen för lösningen. Gå sedan till mappen iothub\device\samples\getting started\SimulatedDevice .
Öppna filen SimulatedDevice.cs i en valfri textredigerare.
Ersätt värdet för variabeln
s_connectionString
med den enhet anslutningssträng du noterade när du körde skriptet för att konfigurera resurser.SendDeviceToCloudMessagesAsync
I metoden ändrar duTask.Delay
från 1 000 till 1, vilket minskar tiden mellan att skicka meddelanden från 1 sekund till 0,001 sekund. När du förkortar den här fördröjningen ökar antalet meddelanden som skickas. (Du får förmodligen inte en meddelandefrekvens på 100 meddelanden per sekund.)await Task.Delay(1);
Spara ändringarna i SimulatedDevice.cs.
I det lokala terminalfönstret kör du följande kommando för att installera de paket som krävs för det simulerade enhetsprogrammet:
dotnet restore
Kör programmet för simulerad enhet genom att skapa och köra följande kommandon i det lokala terminalfönstret:
dotnet run
Följande skärmbild visar utdata när det simulerade enhetsprogrammet skickar telemetri till din IoT-hubb:
Låt programmet köras i minst 10–15 minuter. Vi rekommenderar att den körs tills den slutar skicka meddelanden (cirka 20–30 minuter). Detta inträffar när du har överskridit den dagliga meddelandekvoten för din IoT-hubb och det har slutat acceptera fler meddelanden.
Kommentar
Om du lämnar enhetsappen igång under en längre period efter att den slutar skicka meddelanden kan du få ett undantag. Du kan ignorera det här undantaget på ett säkert sätt och stänga appfönstret.
Visa måttdiagram på instrumentpanelen
I det övre vänstra hörnet av Azure Portal öppnar du portalmenyn och väljer sedan Instrumentpanel.
Leta upp det diagram som du fäste tidigare och klicka var som helst på panelen utanför diagramdata för att expandera det. Den visar de telemetrimeddelanden som skickas och det totala antalet meddelanden som används i diagrammet. De senaste siffrorna visas längst ned i diagrammet. Du kan flytta markören i diagrammet för att se måttvärdena för specifika tider. Du kan också ändra tidsvärdet och kornigheten överst i diagrammet för att begränsa eller expandera data till en tidsperiod av intresse.
I det här scenariot är den simulerade enhetens meddelandedataflöde inte tillräckligt stort för att IoT Hub ska begränsa sina meddelanden. I ett scenario som faktiskt omfattar begränsning kan telemetrimeddelanden som skickas överskrida begränsningsgränsen för din IoT-hubb under en begränsad tid. Detta är för att hantera burst-trafik. Mer information finns i trafikformning.
Visa aviseringarna
När antalet meddelanden som skickas överskrider de gränser som du anger i aviseringsreglerna börjar du få e-postaviseringar.
Om du vill se om det finns några aktiva aviseringar väljer du Aviseringar under Övervakning i den vänstra rutan i din IoT-hubb. Fönstret Aviseringar visar antalet aviseringar som har utlösts sorterade efter allvarlighetsgrad för det angivna tidsintervallet.
Välj raden för allvarlighetsgrad Sev 3. Fönstret Alla aviseringar öppnas och visar de Sev 3-aviseringar som har utlösts.
Välj en av aviseringarna för att se aviseringsinformationen.
Kontrollera inkorgen för e-postmeddelanden från Microsoft Azure. Ämnesraden beskriver aviseringen som utlöstes. Till exempel Azure: Aktiverad allvarlighetsgrad: 3 Avisering om fler än 1 000 meddelanden under 5 minuter. Brödtexten ser ut ungefär så här:
Visa Azure Monitor-loggar
I avsnittet Samla in loggar för anslutningar och enhetstelemetri skapade du en diagnostikinställning för att skicka resursloggar som genererats av din IoT-hubb för anslutnings- och enhetstelemetriåtgärder till Azure Monitor-loggar. I det här avsnittet kör du en Kusto-fråga mot Azure Monitor-loggar för att observera eventuella fel som har inträffat.
Under Övervakning i den vänstra rutan i din IoT-hubb i Azure Portal väljer du Loggar. Stäng det inledande fönstret Frågor om det öppnas.
I fönstret Ny fråga väljer du fliken Frågor och expanderar sedan IoT Hub för att se listan över standardfrågor.
Välj felsammanfattningsfrågan. Frågan visas i frågeredigerarens fönster. Välj Kör i redigeringsfönstret och observera frågeresultatet. Expandera en av raderna för att visa information.
Kommentar
Om du inte ser några fel kan du prova att köra frågan Nyligen anslutna enheter . Detta bör returnera en rad för den simulerade enheten.
Rensa resurser
Om du vill ta bort alla resurser du skapade för den här självstudien tar du bort hela resursgruppen. Detta tar även bort alla resurser som ingår i gruppen. I det här fallet tar den bort IoT-hubben, Log Analytics-arbetsytan och själva resursgruppen. Om du har fäst måttdiagram på instrumentpanelen måste du ta bort dem manuellt genom att klicka på de tre punkterna i det övre högra hörnet av varje diagram och välja Ta bort. Se till att spara ändringarna när du har raderat diagrammen.
Om du vill ta bort resursgruppen använder du kommandot az group delete.
az group delete --name ContosoResources
Nästa steg
I den här självstudien har du lärt dig hur du använder IoT Hub-mått och -loggar genom att utföra följande uppgifter:
- Använd Azure CLI för att skapa en IoT-hubb, registrera en simulerad enhet och skapa en Log Analytics-arbetsyta.
- Skicka IoT Hub-anslutningar och resursloggar för enhetstelemetri till Azure Monitor-loggar på Log Analytics-arbetsytan.
- Använd Metric Explorer för att skapa ett diagram baserat på valda mått och fästa det på instrumentpanelen.
- Skapa måttaviseringar så att du kan meddelas via e-post när viktiga villkor inträffar.
- Ladda ned och kör en app som simulerar en IoT-enhet som skickar meddelanden till IoT-hubben.
- Visa aviseringarna när dina villkor inträffar.
- Visa måttdiagrammet på instrumentpanelen.
- Visa IoT Hub-fel och -åtgärder i Azure Monitor-loggar.
Gå vidare till nästa självstudie för att lära dig hur du testar funktioner för haveriberedskap för IoT Hub.