Monitorování služby Azure IoT Hub

Pokud máte důležité aplikace a obchodní procesy, které se spoléhají na prostředky Azure, měli byste monitorovat dostupnost, výkon a provoz těchto prostředků. Tento článek popisuje data monitorování generovaná službou Azure IoT Hub a způsob použití funkcí služby Azure Monitor k analýze a upozorňování na tato data.

Přehled monitoru

Stránka Přehled na webu Azure Portal pro každé centrum IoT obsahuje grafy, které poskytují určité metriky využití, například počet použitých zpráv a počet zařízení připojených k centru IoT.

Výchozí grafy metrik na stránce Přehled centra IoT

Správná hodnota počtu zpráv může být zpožděna o 1 minutu. Kvůli infrastruktuře služby IoT Hub může hodnota při aktualizaci někdy poskočit mezi vyššími a nižšími hodnotami. Tento čítač by měl být nesprávný jenom pro hodnoty nabíhajíné za poslední minutu.

Informace zobrazené v podokně Přehled jsou užitečné, ale představují pouze malé množství dat monitorování, která jsou k dispozici pro centrum IoT. Některá data monitorování se shromažďují automaticky a jsou k dispozici pro analýzu hned po vytvoření centra IoT. S určitou konfigurací můžete povolit jiné typy shromažďování dat.

Co je Azure Monitor?

Azure IoT Hub monitoruje data pomocí azure Monitoru, úplné služby monitorování zásobníku. Azure Monitor může monitorovat vaše prostředky Azure a další cloudové nebo místní prostředky.

Začněte článkem Monitorování prostředků Azure pomocí služby Azure Monitor, který popisuje následující koncepty:

  • Co je Azure Monitor?
  • Monitorování dat shromážděných v Azure
  • Konfigurace shromažďování dat
  • Metriky a protokoly
  • Standardní nástroje v Azure pro analýzy a přehledy
  • Upozornění aktivovaná při monitorování dat

Další informace o metrikách a protokolech vytvořených službou Azure IoT Hub najdete v tématu Monitorování referenčních informací k datům služby Azure IoT Hub.

Důležité

Události generované službou IoT Hub pomocí protokolů prostředků služby Azure Monitor nejsou zaručené, že budou spolehlivé nebo seřazené. Některé události můžou být ztraceny nebo doručeny mimo objednávku. Protokoly prostředků nemají být v reálném čase, takže může trvat několik minut, než se události zaprotokolují do vašeho výběru cíle.

Zbytek tohoto článku vychází z článku Monitorování prostředků Azure pomocí služby Azure Monitor popisem konkrétních dat shromážděných pro Azure IoT Hub. Zobrazí se příklady konfigurace shromažďování dat a způsob analýzy těchto dat pomocí nástrojů Azure.

Shromažďování a směrování

Metriky platformy, protokol aktivit a protokoly prostředků mají jedinečné specifikace shromažďování, úložiště a směrování.

  • Metriky a protokol aktivit dané platformy se shromažďují a ukládají automaticky, ale pomocí nastavení diagnostiky je možné je směrovat do jiných umístění.

  • Protokoly prostředků se neshromažďují a neukládají, dokud nevytvoříte nastavení diagnostiky a nenasměrujete je do jednoho nebo více umístění.

  • Metriky a protokoly je možné směrovat do několika umístění, mezi která patří:

    • Úložiště protokolů služby Azure Monitor prostřednictvím přidruženého pracovního prostoru služby Log Analytics. Tam je možné je analyzovat pomocí služby Log Analytics.
    • Azure Storage pro archivaci a analýzu offline
    • Koncový bod služby Event Hubs, kde je můžou číst externí aplikace, například nástroje pro správu událostí a informace o zabezpečení (SIEM) třetích stran.

Na webu Azure Portal z centra IoT v části Monitorování můžete vybrat nastavení diagnostiky následované přidáním nastavení diagnostiky a vytvořit nastavení diagnostiky omezené na protokoly a metriky platformy generované centrem IoT.

Snímek obrazovky znázorňující, jak přidat nastavení diagnostiky do centra IoT na webu Azure Portal

Následující snímek obrazovky ukazuje nastavení diagnostiky pro směrování typu protokolu prostředků Připojení operací a všech metrik platformy do pracovního prostoru služby Log Analytics.

Snímek obrazovky s formulářem Diagnostické Nastavení pro monitorování centra IoT

Další informace o vytvoření nastavení diagnostiky pomocí webu Azure Portal, rozhraní příkazového řádku nebo PowerShellu najdete v tématu Vytvoření nastavení diagnostiky pro shromažďování protokolů platformy a metrik v Azure. Při vytváření nastavení diagnostiky určíte, které kategorie protokolů se mají shromažďovat. Kategorie pro Azure IoT Hub jsou uvedené v části Protokoly prostředků v referenčních informacích k monitorování dat Azure IoT Hubu. Události se generují pouze pro chyby v některých kategoriích.

Při směrování metrik platformy IoT Hub do jiných umístění:

  • Tyto metriky platformy se nedají exportovat prostřednictvím nastavení diagnostiky: Připojení zařízení a zařízení celkem.

  • Multidimenzionální metriky, například některé metriky směrování, se v současné době exportují jako zploštěné jednorozměrné metriky agregované napříč hodnotami dimenzí. Další informace najdete v tématu Export metrik platformy do jiných umístění.

Analýza metrik

Metriky pro Azure IoT Hub můžete analyzovat pomocí metrik z jiných služeb Azure pomocí Průzkumníka metrik. Další informace o tomto nástroji najdete v tématu Analýza metrik pomocí Průzkumníka metrik služby Azure Monitor.

Průzkumníka metrik otevřete tak, že přejdete na web Azure Portal a otevřete centrum IoT a pak vyberete Metriky v části Monitorování. Tento průzkumník je ve výchozím nastavení vymezený na metriky platformy generované centrem IoT.

Snímek obrazovky zobrazující stránku Průzkumníka metrik pro centrum IoT

Seznam metrik platformy shromážděných pro Azure IoT Hub najdete v tématu Metriky v referenčních informacích k monitorování dat Azure IoT Hubu. Seznam metrik platformy shromážděných pro všechny služby Azure najdete v tématu Podporované metriky ve službě Azure Monitor.

U metrik platformy IoT Hub, které se shromažďují v jednotkách počtu, nemusí být některé agregace dostupné nebo použitelné. Další informace najdete v tématu Podporované agregace v referenčních informacích k monitorování dat azure IoT Hubu.

Některé metriky IoT Hubu, jako jsou metriky směrování, jsou multidimenzionální. U těchto metrik můžete použít filtry a rozdělení na grafy na základě dimenze.

Analýza protokolů

Data v protokolech služby Azure Monitor jsou uložená v tabulkách, kde každá tabulka má vlastní sadu jedinečných vlastností. Data v těchto tabulkách jsou přidružená k pracovnímu prostoru služby Log Analytics a dají se dotazovat v Log Analytics. Další informace o protokolech služby Azure Monitor najdete v přehledu protokolů služby Azure Monitor v dokumentaci ke službě Azure Monitor.

Pokud chcete směrovat data do protokolů služby Azure Monitor, musíte vytvořit nastavení diagnostiky pro odesílání protokolů prostředků nebo metrik platformy do pracovního prostoru služby Log Analytics. Další informace najdete v tématu Shromažďování a směrování.

Pokud chcete provést Log Analytics, přejděte na web Azure Portal a otevřete centrum IoT a pak v části Monitorování vyberte Protokoly. Tyto dotazy Log Analytics jsou ve výchozím nastavení vymezeny na protokoly a metriky shromážděné v protokolech služby Azure Monitor pro vaše centrum IoT.

Stránka Protokoly pro Centrum IoT

Seznam tabulek používaných protokoly služby Azure Monitor a dotazovatelný službou Log Analytics najdete v tabulkách protokolů služby Azure Monitor v referenčních informacích k monitorování dat azure IoT Hubu.

Všechny protokoly prostředků ve službě Azure Monitor mají stejná pole, za kterými následují pole specifická pro službu. Běžné schéma je popsané ve schématu protokolu prostředků služby Azure Monitor. Schéma a kategorie protokolů prostředků shromažďovaných pro Azure IoT Hub najdete v protokolech prostředků v referenčních informacích k monitorování dat služby Azure IoT Hub. Události se generují pouze pro chyby v některých kategoriích.

Protokol aktivit je azure přihlášení k platformě, která poskytuje přehled o událostech na úrovni předplatného. Můžete ho zobrazit nezávisle nebo ho směrovat do protokolů služby Azure Monitor, kde můžete provádět složitější dotazy pomocí Log Analytics.

Při směrování metrik platformy IoT Hub do protokolů služby Azure Monitor:

  • Následující metriky platformy se nedají exportovat prostřednictvím nastavení diagnostiky: Připojení zařízení a zařízení celkem.

  • Multidimenzionální metriky, například některé metriky směrování, se v současné době exportují jako zploštěné jednorozměrné metriky agregované napříč hodnotami dimenzí. Další podrobnosti najdete v tématu Export metrik platformy do jiných umístění.

Běžné dotazy se službou IoT Hub najdete v ukázkových dotazech Kusto. Další informace o používání dotazů Log Analytics najdete v tématu Přehled dotazů protokolu ve službě Azure Monitor.

Verze sady SDK v protokolech služby IoT Hub

Některé operace v protokolech prostředků IoT Hubu vrací sdkVersion vlastnost v objektu properties . Při těchto operacích, když zařízení nebo back-endová aplikace používá některou ze sad SDK Azure IoT, tato vlastnost obsahuje informace o používané sadě SDK, verzi sady SDK a platformě, na které je sada SDK spuštěná.

Následující příklady ukazují sdkVersion vlastnost vygenerované pro deviceConnect operaci pomocí:

  • Sada SDK Node.js zařízení: "azure-iot-device/1.17.1 (node v10.16.0; Windows_NT 10.0.18363; x64)"
  • Sada .NET (C#) SDK: ".NET/1.21.2 (.NET Framework 4.8.4200.0; Microsoft Windows 10.0.17763 WindowsProduct:0x00000004; X86)".

Následující tabulka ukazuje název sady SDK, který se používá pro různé sady SDK Azure IoT:

Název sady SDK ve vlastnosti sdkVersion Jazyk
.NET .NET (C#)
microsoft.azure.devices Sada SDK služby .NET (C#)
microsoft.azure.devices.client Sada SDK pro zařízení .NET (C#)
iothubclient Sada SDK pro zařízení jazyka C nebo Python v1 (zastaralé)
iothubserviceclient Sada SDK služby jazyka C nebo Python v1 (zastaralé)
azure-iot-device-iothub-py Python device SDK
azure-iot-device sada SDK pro zařízení Node.js
azure-iothub sada SDK služby Node.js
com.microsoft.azure.iothub-java-client Java device SDK
com.microsoft.azure.iothub.service.sdk Java service SDK
com.microsoft.azure.sdk.iot.iot-device-client Java device SDK
com.microsoft.azure.sdk.iot.iot-service-client Java service SDK
C Vložený jazyk C
C + (OSSimplified = Eclipse ThreadX) Eclipse ThreadX

Vlastnost verze sady SDK můžete extrahovat při provádění dotazů na protokoly prostředků služby IoT Hub. Následující dotaz například extrahuje vlastnost verze sady SDK (a ID zařízení) z vlastností vrácených operacemi Připojení ions. Tyto dvě vlastnosti se zapisují do výsledků spolu s časem operace a ID prostředku centra IoT, ke kterému se zařízení připojuje.

// 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

Ukázkové dotazy Kusto

Následující dotazy Kusto vám pomůžou monitorovat centrum IoT.

Důležité

Výběrem protokolů z nabídky IoT Hub se otevře Log Analytics a zahrnete data výhradně z vašeho prostředku ioT Hubu. V případě dotazů, které zahrnují data z jiných ioT hubů nebo služeb Azure, vyberte protokoly z nabídky Azure Monitor. Další informace najdete v tématu Rozsah dotazu protokolu a časový rozsah ve službě Azure Monitor Log Analytics.

  • chyby Připojení ivity: Identifikujte chyby připojení zařízení.

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Category == "Connections" and Level == "Error"
    
  • Chyby omezování: Identifikujte zařízení, u kterých došlo k většině požadavků, což vede k chybám omezování.

    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
    
  • Mrtvé koncové body: Určete koncové body, které nejsou v pořádku, podle počtu nahlášených problémů a zjistěte důvod, proč se problém týká.

    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
    
  • Souhrn chyb: Počet chyb napříč všemi operacemi podle typu

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Level == "Error"
    | summarize count() by ResultType, ResultDescription, Category, _ResourceId
    
  • Nedávno připojená zařízení: Seznam zařízení, která služba IoT Hub viděla připojení v zadaném časovém období.

    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
    
  • Připojení ionové události pro konkrétní zařízení: Všechny události připojení zaprotokolované pro konkrétní zařízení (test-zařízení).

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Category == "Connections"
    | extend DeviceId = tostring(parse_json(properties_s).deviceId)
    | where DeviceId == "test-device"
    
  • Verze zařízení sady SDK: Seznam zařízení a jejich verzí sady SDK pro připojení zařízení nebo zařízení k operacím s cloudovým dvojčetem.

    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
    

Čtení protokolů ze služby Azure Event Hubs

Po nastavení protokolování událostí prostřednictvím nastavení diagnostiky můžete vytvořit aplikace, které čtou protokoly, abyste mohli provádět akce na základě informací v nich. Následující ukázkový kód načte protokoly z centra událostí.

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);
            }
        }
    }
}

Výstrahy

Výstrahy služby Azure Monitor proaktivně upozorňují na výskyt důležitých podmínek v monitorovaných datech. Umožňují vám identifikovat a řešit problémy ve vašem systému předtím, než si jich zákazníci všimnou. Můžete nastavit upozornění na metriky, protokoly a protokol aktivit. Různé typy upozornění mají výhody a nevýhody.

Když vytvoříte pravidlo upozornění na základě metrik platformy (shromážděných v jednotkách počtu), nemusí být některé agregace dostupné nebo použitelné. Další informace najdete v tématu Podporované agregace v referenčních informacích k monitorování dat azure IoT Hubu.

Monitorování odpojení jednotlivých zařízení se službou Event Grid

Azure Monitor poskytuje metriku Připojení ed zařízení, pomocí které můžete monitorovat počet zařízení připojených k IoT Hubu. Tato metrika aktivuje upozornění, když počet připojených zařízení klesne pod prahovou hodnotu. Azure Monitor také generuje události v kategorii připojení, které můžete použít k monitorování připojení zařízení, odpojení a chyb připojení. I když tyto události můžou být pro některé scénáře dostačující, Azure Event Grid poskytuje řešení pro monitorování jednotlivých zařízení s nízkou latencí, které můžete použít ke sledování připojení zařízení pro důležitá zařízení a infrastrukturu.

Se službou Event Grid se můžete přihlásit k odběru událostí ioT Hub Device Připojení ed a DeviceDisconnected, které aktivují výstrahy a monitorují stav připojení zařízení. Event Grid poskytuje mnohem nižší latenci událostí než Azure Monitor, takže můžete monitorovat na jednotlivých zařízeních místo pro všechna připojená zařízení. Díky těmto faktorům je Event Grid upřednostňovanou metodou monitorování připojení pro důležitá zařízení a infrastrukturu. Důrazně doporučujeme používat Event Grid k monitorování připojení zařízení v produkčních prostředích.

Další informace o monitorování připojení zařízení ke službě Event Grid a Azure Monitor najdete v tématu Monitorování, diagnostika a řešení potíží s připojením zařízení ke službě Azure IoT Hub.

Další kroky