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.
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.
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.
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.
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.
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
Monitorování referenčních informací k datům Azure IoT Hubu: odkaz na metriky, protokoly a další důležité hodnoty vytvořené službou IoT Hub.
Monitorování prostředků Azure pomocí služby Azure Monitor: monitorování prostředků Azure
Monitorování, diagnostika a řešení potíží s připojením zařízení ke službě Azure IoT Hub: monitorování připojení zařízení