Az Azure IoT Hub monitorozása

Ha vannak olyan kritikus fontosságú alkalmazásai és üzleti folyamatai, amelyek Azure-erőforrásokra támaszkodnak, akkor figyelni kell ezen erőforrások rendelkezésre állását, teljesítményét és működését. Ez a cikk az Azure IoT Hub által létrehozott monitorozási adatokat ismerteti, valamint azt, hogy az Azure Monitor funkcióival hogyan elemezheti és riasztást készíthet ezekről az adatokról.

Figyelő áttekintése

Az Egyes IoT Hubok Azure Portaljának Áttekintés lapja olyan diagramokat tartalmaz, amelyek használati metrikákat tartalmaznak, például a használt üzenetek számát és az IoT Hubhoz csatlakoztatott eszközök számát.

Alapértelmezett metrikadiagramok az IoT Hub áttekintési oldalán.

A helyes üzenetszám 1 perccel késleltethető. Az IoT Hub szolgáltatásinfrastruktúra miatt az érték időnként visszapattanhat a magasabb és az alacsonyabb értékek között a frissítéskor. Ennek a számlálónak csak az utolsó percben keletkező értékeknél kell helytelennek lennie.

Az Áttekintés panelen megjelenő információk hasznosak, de csak kis mennyiségű, IoT Hubhoz elérhető monitorozási adatot jelölnek. Az IoT Hub létrehozása után a rendszer automatikusan összegyűjt néhány monitorozási adatot, és elemzésre is rendelkezésre áll. Más típusú adatgyűjtést is engedélyezhet bizonyos konfigurációval.

Mi az Azure Monitor?

Az Azure IoT Hub egy teljes veremfigyelési szolgáltatás, az Azure Monitor használatával figyeli az adatokat. Az Azure Monitor monitorozza az Azure-erőforrásokat és más felhőbeli vagy helyszíni erőforrásokat.

Kezdje az Azure-erőforrások monitorozása az Azure Monitorral című cikkel, amely az alábbi fogalmakat ismerteti:

  • Mi az Azure Monitor?
  • Az Azure-ban gyűjtött adatok monitorozása
  • Adatgyűjtés konfigurálása
  • Metrikák és naplók
  • Standard eszközök az Azure-ban elemzéshez és elemzésekhez
  • Riasztások aktiválva az adatok monitorozásakor

Az Azure IoT Hub által létrehozott metrikákkal és naplókkal kapcsolatos további információkért tekintse meg az Azure IoT Hub adatreferenciájának monitorozását.

Fontos

Az IoT Hub szolgáltatás által az Azure Monitor-erőforrásnaplók használatával kibocsátott események nem garantáltan megbízhatóak vagy rendezettek. Előfordulhat, hogy egyes események elvesznek vagy rendelésen kívül kerülnek kézbesítésre. Az erőforrásnaplók nem valós idejűek, ezért több percig is eltarthat, amíg az eseményeket az Ön által választott célhelyre naplózják.

A cikk további része az Azure-erőforrások Monitorozása az Azure Monitorral című cikkre épül az Azure IoT Hubhoz gyűjtött konkrét adatok leírásával. Példákat láthat az adatgyűjtés konfigurálására és az adatok Azure-eszközökkel való elemzésére.

Gyűjtés és útválasztás

A platformmetrikák, a tevékenységnaplók és az erőforrásnaplók egyedi gyűjtési, tárolási és útválasztási specifikációkkal rendelkeznek.

  • A platformmetrikákat és a tevékenységnaplókat a rendszer automatikusan gyűjti és tárolja, de egy diagnosztikai beállítással át lehet őket irányítani egy másik helyre.

  • Erőforrásnaplók nincsenek gyűjtve és tárolva, amíg nem hoz létre egy diagnosztikai beállítást, és nem irányítja át azokat egy vagy több helyre.

  • A metrikák és naplók számos helyre irányíthatók, például a következő helyekre:

    • Az Azure Monitor-naplók társított Log Analytics-munkaterületen keresztül végzik a tárolást. Ott a Log Analytics használatával elemezhetők.
    • Azure Storage archiváláshoz és offline elemzéshez
    • Event Hubs-végpont, ahol külső alkalmazások, például külső biztonsági információk és eseménykezelési (SIEM) eszközök olvashatók.

Az IoT Hub Monitorozás területén található Azure Portalon kiválaszthatja a diagnosztikai beállításokat, majd a Diagnosztikai beállítások hozzáadása lehetőséget az IoT Hub által kibocsátott naplókra és platformmetrikákra vonatkozó diagnosztikai beállítások létrehozásához.

Képernyőkép arról, hogyan adhat hozzá diagnosztikai beállításokat az IoT Hubhoz az Azure Portalon.

Az alábbi képernyőképen egy diagnosztikai beállítás látható az erőforrásnapló-típus Csatlakozás ion Operations és az összes platformmetrika Log Analytics-munkaterületre való átirányításához.

Képernyőkép az IoT Hub monitorozására szolgáló diagnosztikai Gépház űrlapról.

A diagnosztikai beállítások Azure Portal, parancssori felület vagy PowerShell használatával történő létrehozásáról további információt a platformnaplók és metrikák Azure-beli gyűjtéséhez készült diagnosztikai beállítás létrehozása című témakörben talál. Diagnosztikai beállítás létrehozásakor meg kell adnia, hogy milyen kategóriájú naplókat kíván gyűjteni. Az Azure IoT Hub kategóriái az Erőforrásnaplók alatt jelennek meg az Azure IoT Hub adatainak figyelése referenciájában. Az események csak bizonyos kategóriákban lévő hibák esetén lesznek kibocsátva.

Az IoT Hub platformmetrikáinak más helyekre történő átirányítása esetén:

  • Ezek a platformmetrikák nem exportálhatók diagnosztikai beállításokon keresztül: Csatlakozás eszközök és összes eszköz.

  • A többdimenziós metrikák( például egyes útválasztási metrikák) exportálása jelenleg egydimenziós, egydimenziós, a dimenzióértékek között összesített egydimenziós metrikákként van exportálva. További információ: Platformmetrikák exportálása más helyekre.

Metrikák elemzése

Az Azure IoT Hub metrikáit elemezheti más Azure-szolgáltatások metrikáival a Metrics Explorer használatával. Az eszközzel kapcsolatos további információkért lásd : Metrikák elemzése az Azure Monitor metrikakezelőjével.

A Metrics Explorer megnyitásához nyissa meg az Azure Portalt, és nyissa meg az IoT Hubot, majd válassza a Metrikák lehetőséget a Figyelés területen. Ez az explorer alapértelmezés szerint az IoT Hub által kibocsátott platformmetrikákra terjed ki.

Képernyőkép egy IoT Hub metrikakezelő oldalával.

Az Azure IoT Hubhoz gyűjtött platformmetrikák listájáért tekintse meg az Azure IoT Hub adatreferenciájában szereplő metrikákat. Az összes Azure-szolgáltatáshoz gyűjtött platformmetrikák listáját az Azure Monitorral támogatott metrikák című témakörben találja.

A darabszámegységekben gyűjtött IoT Hub-platformmetrikák esetében előfordulhat, hogy egyes összesítések nem érhetők el vagy használhatók. További információ: Támogatott összesítések az Azure IoT Hub monitorozási adatreferenciájában.

Egyes IoT Hub-metrikák, például az útválasztási metrikák többdimenziósak. Ezekhez a metrikákhoz szűrőket és felosztást alkalmazhat a diagramokra egy dimenzió alapján.

Naplók elemzése

Az Azure Monitor-naplók adatai olyan táblákban vannak tárolva, amelyekben minden tábla saját egyedi tulajdonságokkal rendelkezik. Az ezekben a táblákban szereplő adatok egy Log Analytics-munkaterülethez vannak társítva, és lekérdezhetők a Log Analyticsben. Az Azure Monitor-naplókkal kapcsolatos további információkért tekintse meg az Azure Monitor-naplók áttekintését az Azure Monitor dokumentációjában.

Az adatok Azure Monitor-naplókba való átirányításához létre kell hoznia egy diagnosztikai beállítást, amely erőforrásnaplókat vagy platformmetrikákat küld egy Log Analytics-munkaterületre. További információ: Gyűjtemény és útválasztás.

A Log Analytics végrehajtásához nyissa meg az Azure Portalt, nyissa meg az IoT Hubot, majd válassza a Naplók lehetőséget a Figyelés területen. Ezek a Log Analytics-lekérdezések alapértelmezés szerint az IoT Hubhoz tartozó Azure Monitor-naplókban gyűjtött naplókra és metrikákra terjednek ki.

Egy IoT Hub naplólapja.

Az Azure Monitor-naplók által használt és a Log Analytics által lekérdezhető táblák listájáért tekintse meg az Azure Monitor Naplók tábláit az Azure IoT Hub monitorozási adatreferenciájában.

Az Azure Monitor összes erőforrásnaplója ugyanazokkal a mezőkkel rendelkezik, amelyeket szolgáltatásspecifikus mezők követnek. A közös sémát az Azure Monitor erőforrásnapló-sémája ismerteti. Az Azure IoT Hubhoz gyűjtött erőforrásnaplók sémáját és kategóriáit az Azure IoT Hub adatreferenciájában találja az erőforrásnaplókban. Az események csak bizonyos kategóriákban lévő hibák esetén lesznek kibocsátva.

A tevékenységnapló egy azure-beli platform bejelentkezési napló, amely betekintést nyújt az előfizetési szintű eseményekbe. Önállóan tekintheti meg, vagy átirányíthatja az Azure Monitor-naplókba, ahol összetettebb lekérdezéseket végezhet a Log Analytics használatával.

IoT Hub-platformmetrikák Azure Monitor-naplókhoz való átirányításakor:

  • A következő platformmetrikák nem exportálhatók diagnosztikai beállításokon keresztül: Csatlakozás eszközök és összes eszköz.

  • A többdimenziós metrikák( például egyes útválasztási metrikák) exportálása jelenleg egydimenziós, egydimenziós, a dimenzióértékek között összesített egydimenziós metrikákként van exportálva. További információ: Platformmetrikák exportálása más helyekre.

Az IoT Hubbal kapcsolatos gyakori lekérdezésekért lásd a Kusto-minta lekérdezéseket. A Log Analytics-lekérdezések használatáról további információt az Azure Monitor napló lekérdezéseinek áttekintése című témakörben talál.

SDK-verzió az IoT Hub-naplókban

Az IoT Hub-erőforrásnaplók egyes műveletei egy tulajdonságot sdkVersion adnak vissza az objektumukban properties . Ezekben a műveletekben, ha egy eszköz vagy háttéralkalmazás az Azure IoT SDK-k egyikét használja, ez a tulajdonság információkat tartalmaz a használt SDK-ról, az SDK-verzióról és a platformról, amelyen az SDK fut.

Az alábbi példák a sdkVersion művelethez deviceConnect kibocsátott tulajdonságot mutatják be a következő használatával:

  • Az Node.js eszköz SDK: "azure-iot-device/1.17.1 (node v10.16.0; Windows_NT 10.0.18363; x64)"
  • A .NET (C#) SDK: ".NET/1.21.2 (.NET Framework 4.8.4200.0; Microsoft Windows 10.0.17763 WindowsProduct:0x00000004; X86)".

Az alábbi táblázat a különböző Azure IoT SDK-khoz használt SDK-nevet mutatja:

SDK-név az sdkVersion tulajdonságban Nyelv
.NET .NET (C#)
microsoft.azure.devices .NET (C#) szolgáltatás SDK
microsoft.azure.devices.client .NET (C#) eszköz SDK
iothubclient C vagy Python v1 (elavult) eszköz SDK
iothubserviceclient C vagy Python v1 (elavult) szolgáltatás SDK
azure-iot-device-iothub-py Python-eszköz SDK
azure-iot-device Node.js eszköz SDK
azure-iothub Node.js szolgáltatás SDK
com.microsoft.azure.iothub-java-client Java-eszköz SDK
com.microsoft.azure.iothub.service.sdk Java szolgáltatás SDK
com.microsoft.azure.sdk.iot.iot-device-client Java-eszköz SDK
com.microsoft.azure.sdk.iot.iot-service-client Java szolgáltatás SDK
C Beágyazott C
C + (OSSimplified = Eclipse ThreadX) Eclipse ThreadX

Az SDK verziótulajdonság kinyerhető, amikor lekérdezéseket hajt végre az IoT Hub-erőforrásnaplókon. Az alábbi lekérdezés például kinyeri az SDK verziótulajdonságát (és eszközazonosítóját) az Csatlakozás ions-műveletek által visszaadott tulajdonságokból. Ezt a két tulajdonságot a rendszer az eredményekre írja a művelet időpontjával és annak az IoT Hubnak az erőforrás-azonosítójával együtt, amelyhez az eszköz csatlakozik.

// SDK version of devices
// List of devices and their SDK versions that connect to IoT Hub
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend parsed_json = parse_json(properties_s) 
| extend SDKVersion = tostring(parsed_json.sdkVersion) , DeviceId = tostring(parsed_json.deviceId)
| distinct DeviceId, SDKVersion, TimeGenerated, _ResourceId

Kusto-lekérdezések mintája

Az alábbi Kusto-lekérdezésekkel figyelheti az IoT Hubot.

Fontos

Ha az IoT Hub menüjében a Naplók lehetőséget választja, megnyílik a Log Analytics, és kizárólag az IoT Hub-erőforrásból származó adatokat tartalmaz. Más IoT Hubokról vagy Azure-szolgáltatásokból származó adatokat tartalmazó lekérdezések esetén válassza az Azure Monitor menü Naplói elemét. További információ: Log query scope and time range in Azure Monitor Log Analytics.

  • Csatlakozás tivitási hibák: Eszközkapcsolati hibák azonosítása.

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Category == "Connections" and Level == "Error"
    
  • Szabályozási hibák: Azon eszközök azonosítása, amelyek a legtöbb kérést tették, ami szabályozási hibákat eredményezett.

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where ResultType == "429001"
    | extend DeviceId = tostring(parse_json(properties_s).deviceId)
    | summarize count() by DeviceId, Category, _ResourceId
    | order by count_ desc
    
  • Halott végpontok: Azonosítsa az elhalt vagy nem kifogástalan végpontokat a probléma bejelentésének hányszoros száma alapján, és tudja, hogy miért.

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Category == "Routes" and OperationName in ("endpointDead", "endpointUnhealthy")
    | extend parsed_json = parse_json(properties_s)
    | extend Endpoint = tostring(parsed_json.endpointName), Reason = tostring(parsed_json.details) 
    | summarize count() by Endpoint, OperationName, Reason, _ResourceId
    | order by count_ desc
    
  • Hiba összefoglalása: Az összes művelet hibáinak száma típus szerint.

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Level == "Error"
    | summarize count() by ResultType, ResultDescription, Category, _ResourceId
    
  • Legutóbb csatlakoztatott eszközök: Azon eszközök listája, amelyeket az IoT Hub a megadott időszakban látott csatlakozni.

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Category == "Connections" and OperationName == "deviceConnect"
    | extend DeviceId = tostring(parse_json(properties_s).deviceId)
    | summarize max(TimeGenerated) by DeviceId, _ResourceId
    
  • egy adott eszköz Csatlakozás ioneseményei: Egy adott eszközhöz (teszteszközhöz) naplózott összes kapcsolati esemény.

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Category == "Connections"
    | extend DeviceId = tostring(parse_json(properties_s).deviceId)
    | where DeviceId == "test-device"
    
  • Az eszközök SDK-verziója: Az eszközök és azok SDK-verzióinak listája az eszközkapcsolatokhoz vagy az eszközök felhőbeli ikerműveleteihez.

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Category == "Connections" or Category == "D2CTwinOperations"
    | extend parsed_json = parse_json(properties_s)
    | extend SDKVersion = tostring(parsed_json.sdkVersion) , DeviceId = tostring(parsed_json.deviceId)
    | distinct DeviceId, SDKVersion, TimeGenerated, _ResourceId
    

Naplók olvasása az Azure Event Hubsból

Miután beállította az eseménynaplózást a diagnosztikai beállításokon keresztül, létrehozhat olyan alkalmazásokat, amelyek felolvassák a naplókat, hogy a bennük található információk alapján műveletet hajthasson végre. Az alábbi mintakód lekéri a naplókat egy eseményközpontból.

class Program
{ 
    static string connectionString = "{your AMS eventhub endpoint connection string}";
    static string monitoringEndpointName = "{your AMS event hub endpoint name}";
    static EventHubClient eventHubClient;
    //This is the Diagnostic Settings schema
    class AzureMonitorDiagnosticLog
    {
        string time { get; set; }
        string resourceId { get; set; }
        string operationName { get; set; }
        string category { get; set; }
        string level { get; set; }
        string resultType { get; set; }
        string resultDescription { get; set; }
        string durationMs { get; set; }
        string callerIpAddress { get; set; }
        string correlationId { get; set; }
        string identity { get; set; }
        string location { get; set; }
        Dictionary<string, string> properties { get; set; }
    };

    static void Main(string[] args)
    {
        Console.WriteLine("Monitoring. Press Enter key to exit.\n");
        eventHubClient = EventHubClient.CreateFromConnectionString(connectionString, monitoringEndpointName);
        var d2cPartitions = eventHubClient.GetRuntimeInformationAsync().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);
                var deserializer = new JavaScriptSerializer();
                //deserialize json data to azure monitor object
                AzureMonitorDiagnosticLog message = new JavaScriptSerializer().Deserialize<AzureMonitorDiagnosticLog>(result);
            }
        }
    }
}

Riasztások

Az Azure Monitor-riasztások proaktívan értesítik arról, ha a monitorozási adatok megfelelnek bizonyos lényeges feltételeknek. Segítségükkel felismerheti és kezelheti a rendszerben jelentkező problémákat, mielőtt az ügyfelei észlelnék azokat. Riasztásokat állíthat be a metrikákra, naplókra és a tevékenységnaplóra vonatkozóan. A riasztások különböző típusainak előnyei és hátrányai vannak.

Amikor platformmetrikákon alapuló riasztási szabályt hoz létre (darabszámegységekben gyűjtve), előfordulhat, hogy egyes összesítések nem érhetők el vagy használhatók. További információ: Támogatott összesítések az Azure IoT Hub-adatok monitorozásában.

Eszközenkénti leválasztások monitorozása az Event Grid használatával

Az Azure Monitor metrikaalapú, Csatlakozás eszközökkel monitorozza az IoT Hubhoz csatlakoztatott eszközök számát. Ez a metrika riasztást aktivál, ha a csatlakoztatott eszközök száma egy küszöbérték alá csökken. Az Azure Monitor a kapcsolatok kategóriában is kibocsátja azokat az eseményeket, amelyekkel figyelheti az eszközcsatlakozásokat, a leválasztást és a csatlakozási hibákat. Bár ezek az események bizonyos forgatókönyvekhez elegendőek lehetnek, az Azure Event Grid alacsony késésű, eszközenkénti monitorozási megoldást biztosít, amellyel nyomon követheti a kritikus eszközök és az infrastruktúra eszközkapcsolatait.

Az Event Grid segítségével előfizethet az IoT Hub-eszköz Csatlakozás ésa DeviceDisconnected eseményekre a riasztások aktiválásához és az eszközkapcsolat állapotának figyeléséhez. Az Event Grid sokkal kisebb eseménykéséseket biztosít, mint az Azure Monitor, így az összes csatlakoztatott eszköz helyett eszközalapú monitorozást végezhet. Ezek a tényezők az Event Gridet részesítik előnyben a kritikus eszközök és az infrastruktúra kapcsolatainak monitorozásához. Erősen javasoljuk, hogy az Event Grid használatával monitorozza az éles környezetekben lévő eszközkapcsolatokat.

Az Event Grid és az Azure Monitor eszközkapcsolatának monitorozásáról további információt az Azure IoT Hubhoz való eszközkapcsolat monitorozása, diagnosztizálása és hibaelhárítása című témakörben talál.

Következő lépések