Мониторинг Центра Интернета вещей Azure

При наличии критически важных приложений и бизнес-процессов, использующих ресурсы Azure, необходимо отслеживать эти ресурсы на предмет их доступности, производительности и работы. В этой статье описаны данные мониторинга, созданные Центром Интернета вещей Azure, а также анализ таких данных и оповещений о них с помощью функций Azure Monitor.

Обзор монитора

На странице Обзор на портале Azure для каждого центра Интернета вещей приведены диаграммы, которые содержат некоторые метрики использования, например количество используемых сообщений и количество устройств, подключенных к центру Интернета вещей.

Диаграммы метрик по умолчанию на странице обзора центра Интернета вещей.

Правильное значение счетчика сообщений может быть отложено на 1 минуту. Из-за инфраструктуры служб Центр Интернета вещей значение иногда может отскочить между более высокими и низкими значениями при обновлении. Этот счетчик должен быть неверным только для значений, накопленных за последнюю минуту.

Информация, представленная на панели обзора, полезна, но представляет только небольшой объем данных мониторинга, доступных для Центра Интернета вещей. Некоторые данные мониторинга собираются автоматически и доступны для анализа сразу после создания Центра Интернета вещей. Вы можете выполнить некоторые настройки, чтобы включить сбор данных других типов.

Общие сведения об Azure Monitor

Центр Интернета вещей Azure отслеживает данные с помощью Azure Monitor — служба полного мониторинга стека. Azure Monitor может отслеживать ресурсы Azure и другие облачные или локальные ресурсы.

Начните со статьи Мониторинг ресурсов Azure с помощью Azure Monitor, в которой описаны следующие понятия:

  • Общие сведения об Azure Monitor
  • данные мониторинга, собираемые в Azure;
  • настройка сбора данных;
  • Метрики и журналы
  • Стандартные средства в Azure для анализа и аналитики
  • Оповещения, запущенные при мониторинге данных

Дополнительные сведения о метриках и журналах, созданных Центр Интернета вещей Azure, см. в справочнике по данным мониторинга Центр Интернета вещей Azure.

Внимание

События, создаваемые службой Центр Интернета вещей с помощью журналов ресурсов Azure Monitor, не гарантированы надежными или упорядоченными. Некоторые события могут быть потеряны или доставлены не по порядку. Журналы ресурсов не предназначены для реального времени, поэтому может потребоваться несколько минут, чтобы события регистрировались в выбранном месте назначения.

Остальная часть этой статьи основана на ресурсах Azure мониторинга с помощью статьи Azure Monitor, описывая конкретные данные, собранные для Центр Интернета вещей Azure. Вы увидите примеры настройки сбора данных и анализа этих данных с помощью средств Azure.

Сбор и маршрутизация

Метрики платформы, журналы действий и журналы ресурсов имеют уникальные спецификации коллекции, хранилища и маршрутизации.

  • Метрики платформы и журнал действий собираются и сохраняются автоматически, но их можно направить в другие расположения с помощью параметра диагностики.

  • Журналы ресурсов не собираются и не сохраняются, пока вы не создадите параметр диагностики и не начнете передавать их в одно или несколько расположение.

  • Метрики и журналы можно передавать в несколько расположений, в том числе:

    • Хранилище журналов Azure Monitor с помощью связанной рабочей области Log Analytics. Там их можно проанализировать с помощью Log Analytics.
    • Служба хранилища Azure для архивирования и автономного анализа
    • Конечная точка Центров событий, в которой они могут читаться внешними приложениями, например сторонними средствами управления сведениями о безопасности и событиями (SIEM).

В портал Azure в центре Интернета вещей в разделе "Мониторинг" можно выбрать параметры диагностики, а затем добавить параметр диагностики для создания параметров диагностики область в журналы и метрики платформы, созданные центром Интернета вещей.

Снимок экрана: добавление параметра диагностики в Центр Интернета вещей в портал Azure.

На следующем снимке экрана показан параметр диагностики для маршрутизации Операций подключения типа журнала ресурсов и всех метрик платформы в рабочую область Log Analytics.

Снимок экрана: форма диагностики Параметры для мониторинга центра Интернета вещей.

Дополнительные сведения о создании параметра диагностики с помощью портал Azure, CLI или PowerShell см. в статье "Создание параметра диагностики для сбора журналов и метрик платформы" в Azure. Создавая параметр диагностики, нужно указать, какие категории журналов должны собираться. Категории для Центра Интернета вещей Azure перечислены в разделе Журналы ресурсов в справочнике по мониторингу данных Центра Интернета вещей Azure. События создаются только для ошибок в некоторых категориях.

При маршрутизации метрик платформы Центр Интернета вещей в другие расположения:

  • Эти метрики платформы не экспортируются с помощью параметров диагностики: Подключение устройства и всего устройств.

  • Многомерные метрики, например некоторые метрики маршрутизации, в настоящее время экспортируются как плоские одномерные метрики, объединенные по значениям измерений. Дополнительные сведения см. в разделе "Экспорт метрик платформы" в другие расположения.

Анализ метрик

Вы можете анализировать метрики для Центр Интернета вещей Azure с помощью метрик из других служб Azure с помощью обозревателя метрик. Дополнительные сведения об этом средстве см. в разделе "Анализ метрик" с помощью обозревателя метрик Azure Monitor.

Чтобы открыть обозреватель метрик, перейдите в портал Azure и откройте центр Интернета вещей, а затем выберите метрики в разделе "Мониторинг". Этот обозреватель по умолчанию область для метрик платформы, создаваемых центром Интернета вещей.

Снимок экрана: страница обозревателя метрик для Центра Интернета вещей.

Список метрик платформы, собранных для Центра Интернета вещей Azure, см. в разделе Справочник по мониторингу данных Центра Интернета вещей. Список метрик платформы, собранных для всех служб Azure, см. в разделе Поддерживаемые метрики с помощью Azure Monitor.

Для метрик платформы центра Интернета вещей, собранных в единицах счетчика, некоторые агрегаты могут быть недоступны или не использоваться. Дополнительные сведения см. в разделе Поддерживаемые агрегаты в справочнике по мониторингу данных Центра Интернета вещей Azure.

Некоторые метрики Центра Интернета вещей, такие как метрики маршрутизации, являются многомерными. Для этих метрик можно применить фильтры и разделение для диаграммы на основе измерения.

анализ журналов;

Данные в журналах Azure Monitor хранятся в таблицах, каждая из которых имеет собственный набор уникальных свойств. Данные в этих таблицах связаны с рабочей областью Log Analytics и могут запрашиваться в Log Analytics. Дополнительные сведения о журналах Azure Monitor см. в разделе Общие сведения о журналах Azure Monitor в документации Azure Monitor.

Чтобы направить данные в журналы Azure Monitor, необходимо создать параметр диагностики для отправки журналов ресурсов или метрик платформы в рабочую область Log Analytics. Дополнительные сведения см. в разделе Коллекция и маршрутизация.

Чтобы выполнить Log Analytics, перейдите к портал Azure и откройте центр Интернета вещей, а затем выберите "Журналы" в разделе "Мониторинг". Эти запросы Log Analytics область по умолчанию для журналов и метрик, собранных в журналах Azure Monitor для Центра Интернета вещей.

Страница журналов для центра Интернета вещей.

Список таблиц, используемых журналами Azure Monitor и запрашиваемых Log Analytics, см. в разделе Таблицы журналов Azure Monitor статьи в справочнике по мониторингу данных Центра Интернета вещей Azure.

Все журналы ресурсов в Azure Monitor имеют те же поля, за которыми следуют поля, характерные для службы. Общая схема показана в разделе Схема журнала ресурсов Azure Monitor. Схему и категории журналов ресурсов, собранных для Центра Интернета вещей Azure, можно найти в журналах ресурсов в справочнике по мониторингу данных Центра Интернета вещей Azure. События создаются только для ошибок в некоторых категориях.

Журнал действий — это журнал платформы в Azure, который предоставляет когнитивные аналитические сведения о событиях уровня подписки. Его можно просматривать независимо или направлять в журналы Azure Monitor, где можно выполнять более сложные запросы с помощью Log Analytics.

При маршрутизации Центр Интернета вещей метрик платформы в журналы Azure Monitor:

  • Следующие метрики платформы не экспортируются с помощью параметров диагностики: Подключение устройства и всего устройств.

  • Многомерные метрики, например некоторые метрики маршрутизации, в настоящее время экспортируются как плоские одномерные метрики, объединенные по значениям измерений. Дополнительные сведения см. в разделе Экспорт метрик платформы в другие расположения.

Общие запросы с Центр Интернета вещей см. в примере запросов Kusto. Дополнительные сведения об использовании запросов Log Analytics см. в разделе "Обзор запросов журналов" в Azure Monitor.

Версия пакета SDK в журналах Центра Интернета вещей

Некоторые операции в журналах ресурсов Центра Интернета вещей возвращают sdkVersion свойство в своем properties объекте. Для этих операций, когда устройство или серверное приложение использует один из пакетов SDK Интернета вещей Azure, это свойство содержит сведения об используемом пакете SDK, его версии и платформе, на которой пакет SDK выполняется.

В следующих примерах показано sdkVersion свойство, которое создается для deviceConnect операции с помощью:

  • Пакет SDK для устройств Node.js: "azure-iot-device/1.17.1 (node v10.16.0; Windows_NT 10.0.18363; x64)"
  • Пакет SDK ".NET/1.21.2 (.NET Framework 4.8.4200.0; Microsoft Windows 10.0.17763 WindowsProduct:0x00000004; X86)"для .NET (C#):

В следующей таблице показано имя пакета SDK, используемого для различных пакетов SDK интернета вещей Azure:

Имя пакета SDK в свойстве sdkVersion Язык
.NET .NET (C#)
microsoft.azure.devices Пакет SDK службы .NET (C#)
microsoft.azure.devices.client Пакет SDK устройства .NET (C#)
iothubclient Пакет SDK устройств (не рекомендуется) C или Python v1
iothubserviceclient Пакет SDK службы (не рекомендуется) C или Python v1
azure-iot-device-iothub-py Пакет SDK устройств Python
azure-iot-device Пакет SDK устройства Node.js
azure-iothub Пакет SDK службы Node.js
com.microsoft.azure.iothub-java-client Пакет SDK устройства Java
com.microsoft.azure.iothub.service.sdk Пакет SDK службы Java
com.microsoft.azure.sdk.iot.iot-device-client Пакет SDK устройства Java
com.microsoft.azure.sdk.iot.iot-service-client Пакет SDK службы Java
О Embedded C
C + (OSSimplified = Eclipse ThreadX) Eclipse ThreadX

Вы можете извлечь свойство версии пакета SDK при выполнении запросов к журналам ресурсов Центра Интернета вещей. Например, следующий запрос извлекает свойство версии пакета SDK (и идентификатор устройства) из свойств, возвращаемых операциями подключения. Эти два свойства записываются в результаты вместе со временем операции и идентификатором ресурса центра Интернета вещей, к которому подключается устройство.

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

Используйте следующие запросы Kusto , чтобы отслеживать центр Интернета вещей.

Внимание

Выбор журналов в меню Центр Интернета вещей открывает Log Analytics и включает данные исключительно из ресурса Центра Интернета вещей. Для запросов, включающих данные из других центров Интернета вещей или служб Azure, выберите журналы в меню Azure Monitor. Подробные сведения см. в статье Область запросов журнала и временной диапазон в Azure Monitor Log Analytics.

  • Подключение ошибок при подключении: определение ошибок подключения устройства.

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Category == "Connections" and Level == "Error"
    
  • Ошибки регулирования. Определение устройств, которые сделали большинство запросов, что приводит к ошибкам регулирования.

    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
    
  • Мертвые конечные точки: определите мертвые или неработоспособные конечные точки по количеству сообщений о проблеме и знают причину.

    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
    
  • Сводка ошибок: количество ошибок во всех операциях по типу.

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Level == "Error"
    | summarize count() by ResultType, ResultDescription, Category, _ResourceId
    
  • Недавно подключенные устройства: список устройств, которые Центр Интернета вещей видели подключение за указанный период времени.

    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
    
  • события Подключение ion для конкретного устройства: все события подключения, зарегистрированные для определенного устройства (тестовое устройство).

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Category == "Connections"
    | extend DeviceId = tostring(parse_json(properties_s).deviceId)
    | where DeviceId == "test-device"
    
  • Версия пакета SDK для устройств: список устройств и версий пакета SDK для подключений устройств или устройств к операциям облачных двойников.

    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
    

Чтение журналов из Центров событий Azure

После настройки ведения журнала событий в параметрах диагностики можно создавать приложения, которые считывают журналы, что позволяет выполнять действия на основе информации, содержащейся в них. В следующем примере кода извлекаются журналы из концентратора событий.

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

видны узлы

Оповещения Azure Monitor заблаговременно уведомляют вас при обнаружении важных условий в данных мониторинга. Они позволяют выявлять и устранять проблемы в системе до того, как ваши клиенты заметят их. Оповещения можно настроить для метрик, журналов и журнала действий. Различные типы оповещений имеют преимущества и недостатки.

При создании правила генерации оповещений на основе метрик платформы (собранных в единицах подсчета), некоторые агрегаты могут быть недоступны или доступны для использования. Дополнительные сведения см. в статье "Поддерживаемые агрегаты" в справочнике по данным мониторинга Центр Интернета вещей Azure.

Мониторинг отключения каждого устройства с помощью Сетки событий

Azure Monitor предоставляет метрики Подключение устройства, которые можно использовать для мониторинга количества устройств, подключенных к Центр Интернета вещей. Эта метрика активирует оповещение, когда число подключенных устройств снижается ниже порогового значения. Azure Monitor также выдает события в категории подключения, которые можно использовать для наблюдения за подключением устройств, отключением и ошибками подключения. Хотя эти события могут быть достаточно для некоторых сценариев, Сетка событий Azure обеспечивает низкую задержку, решение для мониторинга устройств, которое можно использовать для отслеживания подключений устройств для критически важных устройств и инфраструктуры.

С помощью Сетки событий можно подписываться на события DeviceConnected и DeviceDisconnected Центра Интернета вещей, чтобы генерировать оповещения и отслеживать состояние подключения устройства. Сетка событий обеспечивает гораздо меньшую задержку событий, чем Azure Monitor, поэтому вы можете отслеживать на каждом устройстве, а не для всех подключенных устройств. По этим причинам Сетка событий является более предпочтительным методом для мониторинга подключений критически важных устройств и инфраструктуры. Настоятельно рекомендуется использовать Сетку событий для мониторинга подключений устройств в рабочих средах.

Дополнительные сведения о мониторинге подключения устройств с помощью Службы "Сетка событий" и Azure Monitor см. в статье "Мониторинг", диагностика и устранение неполадок подключения устройств к Центр Интернета вещей Azure.

Следующие шаги