Руководство по приему данных мониторинга и созданию к ним запросов в Azure Data Explorer

Из этого руководства вы узнаете, как принимать данные из журналов диагностики и действий в кластер Azure Data Explorer без необходимости писать код. Этот простой метод приема позволяет вам оперативно начать отправку запросов в Azure Data Explorer для анализа данных.

Из этого руководства вы узнаете, как выполнять следующие задачи:

Примечание

Создавайте все ресурсы в одном расположении или регионе Azure.

Предварительные требования

Поставщик данных Azure Monitor — журналы и метрики диагностики и журналы действий

Просмотрите и проанализируйте приведенные ниже данные, предоставленные журналами и метриками диагностики, а также журналами действий для службы Azure Monitor. На основе этих схем данных вы создадите конвейер приема. Обратите внимание, что для каждого события в журнале имеется массив записей. Позже в этом учебнике этот массив записей будет разделен.

Примеры журналов и метрик диагностики, а также журналов действий

Журналы и метрики диагностики Azure, а также журналы действий создаются службой Azure. Они предоставляют данные о работе службы.

Пример

Метрики диагностики агрегируются по интервалам времени в 1 минуту. Ниже приведен пример схемы события для метрики Azure Data Explorer (на основе длительности запроса):

{
    "records": [
    {
        "count": 14,
        "total": 0,
        "minimum": 0,
        "maximum": 0,
        "average": 0,
        "resourceId": "/SUBSCRIPTIONS/<subscriptionID>/RESOURCEGROUPS/<resource-group>/PROVIDERS/MICROSOFT.KUSTO/CLUSTERS/<cluster-name>",
        "time": "2018-12-20T17:00:00.0000000Z",
        "metricName": "QueryDuration",
        "timeGrain": "PT1M"
    },
    {
        "count": 12,
        "total": 0,
        "minimum": 0,
        "maximum": 0,
        "average": 0,
        "resourceId": "/SUBSCRIPTIONS/<subscriptionID>/RESOURCEGROUPS/<resource-group>/PROVIDERS/MICROSOFT.KUSTO/CLUSTERS/<cluster-name>",
        "time": "2018-12-21T17:00:00.0000000Z",
        "metricName": "QueryDuration",
        "timeGrain": "PT1M"
    }
    ]
}

Настройка конвейера приема данных в Azure Data Explorer

Настройка конвейера Azure Data Explorer включает несколько этапов, в том числе создание таблиц и прием данных. Вы также можете работать с данными, сопоставлять и обновлять их.

Подключение к пользовательскому веб-интерфейсу Azure Data Explorer

В базе данных TestDatabase для Azure Data Explorer выберите пункт Запрос, чтобы открыть пользовательский веб-интерфейс Azure Data Explorer.

Страница запроса.

Создание целевых таблиц

Структура журналов Azure Monitor не является табличной. Вам потребуется обработать данные и развернуть каждое событие в одну или несколько записей. Необработанные данные будут поступать в промежуточную таблицу с именем ActivityLogsRawRecords для журналов действий и DiagnosticRawRecords для журналов и метрик диагностики. При этом данные будут обработаны и развернуты. Затем на основе политики обновления развернутые данные будут поступать в таблицу ActivityLogs для журналов действий, DiagnosticMetrics для метрик диагностики и DiagnosticLogs для журналов диагностики. Это означает, что вам нужно создать две отдельные таблицы для приема журналов действий и три отдельные таблицы для приема журналов и метрик диагностики.

С помощью пользовательского веб-интерфейса Azure Data Explorer создайте целевые таблицы в базе данных Azure Data Explorer.

Создание таблиц для метрик диагностики

  1. Создайте в базе данных TestDatabase таблицу с именем DiagnosticMetrics для хранения записей метрик диагностики. Для этого используйте следующую команду .create table.

    .create table DiagnosticMetrics (Timestamp:datetime, ResourceId:string, MetricName:string, Count:int, Total:double, Minimum:double, Maximum:double, Average:double, TimeGrain:string)
    
  2. Выберите Выполнить, чтобы создать таблицу.

    Запустите запрос на выполнение.

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

    .create table DiagnosticRawRecords (Records:dynamic)
    
  4. Задайте нулевую политику хранения для промежуточной таблицы:

    .alter-merge table DiagnosticRawRecords policy retention softdelete = 0d
    

Создание сопоставлений таблиц

Так как используется формат данных json, сопоставление данных обязательно. Сопоставление json сопоставляет каждый путь JSON с именем столбца в таблице. Пути JSON, содержащие специальные символы, должны быть представлены как ['Имя свойства'].

Сопоставление метрик и журналов диагностики с таблицей

Чтобы сопоставить данные журналов и метрик диагностики с таблицей, выполните следующий запрос:

.create table DiagnosticRawRecords ingestion json mapping 'DiagnosticRawRecordsMapping' '[{"column":"Records","Properties":{"path":"$.records"}}]'

Создание политики обновления для данных журнала и метрик

Создание политики обновления данных для метрик диагностики

  1. Создайте функцию, которая развертывает коллекцию записей метрик диагностики таким образом, чтобы каждое значение в коллекции получало отдельную строку. Используйте оператор mv-expand:

    .create function DiagnosticMetricsExpand() {
       DiagnosticRawRecords
       | mv-expand events = Records
       | where isnotempty(events.metricName)
       | project
           Timestamp = todatetime(events['time']),
           ResourceId = tostring(events.resourceId),
           MetricName = tostring(events.metricName),
           Count = toint(events['count']),
           Total = todouble(events.total),
           Minimum = todouble(events.minimum),
           Maximum = todouble(events.maximum),
           Average = todouble(events.average),
           TimeGrain = tostring(events.timeGrain)
    }
    
  2. Добавьте политику обновления для целевой таблицы. Эта политика будет автоматически выполнять запрос для новых данных, принятых в промежуточную таблицу данных DiagnosticRawRecords, и вставлять результаты запроса в таблицу DiagnosticMetrics:

    .alter table DiagnosticMetrics policy update @'[{"Source": "DiagnosticRawRecords", "Query": "DiagnosticMetricsExpand()", "IsEnabled": "True", "IsTransactional": true}]'
    

Создание пространства имен Центров событий Azure

Параметры диагностики Azure позволяют экспортировать метрики и журналы в учетную запись хранения или в концентратор событий. В этом учебнике мы направим метрики и журналы в концентратор событий. На следующих шагах вы создадите пространство имен Центров событий и концентратор событий для журналов и метрик диагностики. Служба Azure Monitor создаст концентратор событий insights-operational-logs для журналов действий.

  1. Создайте концентратор событий на портале Azure с помощью шаблона Azure Resource Manager. Чтобы выполнить остальные шаги из этой статьи, щелкните правой кнопкой кнопку Развеhнуть в Azure и выберите вариант Открыть в новом окне. Нажав кнопку Развернуть в Azure, вы перейдете на портал Azure.

    Кнопка развертывания в Azure.

  2. Создайте пространство имен концентраторов событий и концентратор событий для журналов диагностики.

    Создание концентратора событий.

  3. Заполните форму, указав следующую информацию. Сохраните значения по умолчанию для всех параметров, не указанных в следующей таблице.

    Параметр Рекомендуемое значение Описание
    Подписка Ваша подписка Выберите подписку Azure, которую нужно использовать для своего концентратора событий.
    Группа ресурсов test-resource-group Создайте новую группу ресурсов.
    Расположение Выберите регион в соответствии со своими потребностями. Создайте пространство имен концентратора событий в том же расположении, в котором находятся другие ресурсы.
    Имя пространства имен AzureMonitoringData Выберите уникальное имя, идентифицирующее пространство имен.
    Имя концентратора событий DiagnosticData Концентратор событий находится в пространстве имен, предоставляющем уникальный контейнер области.
    Имя группы потребителей adxpipeline Создайте имя группы потребителей. Группы получателей событий позволяют каждому из нескольких получающих события приложений иметь отдельное представление потока событий.

Подключение журналов и метрик Azure Monitor к концентратору событий

Теперь вам следует подключить к концентратору событий журналы и метрики диагностики, а также журналы действий.

Подключение журналов и метрик диагностики к концентратору событий

Выберите ресурс, из которого следует экспортировать метрики. Экспорт данных диагностики поддерживают ресурсы нескольких типов, в том числе пространство имен Центров событий, Azure Key Vault, Центр Интернета вещей и кластер Azure Data Explorer. В этом учебнике в качестве ресурса мы используем кластер Azure Data Explorer, мы рассмотрим метрики производительности запросов и журналы результатов приема.

  1. Выберите свой кластер Kusto на портале Azure.

  2. Выберите элемент Параметры диагностики, а затем ссылку Включить диагностику.

    Параметры диагностики.

  3. Откроется панель Параметры диагностики. Сделайте следующее:

    1. Присвойте данным журнала диагностики имя ADXExportedData.

    2. В поле LOG установите флажки SucceededIngestion и FailedIngestion.

    3. В разделе Метрика установите флажок Производительность запроса.

    4. Установите флажок Передать в концентратор событий.

    5. Нажмите кнопку Настроить.

      Область параметров диагностики.

  4. На панели Выбор концентратора событий настройте метод экспорта данных из журналов диагностики в созданный вами концентратор событий.

    1. В списке Выбрать пространство имен концентратора событий выберите AzureMonitoringData.
    2. В списке Выберите имя концентратора событий выберите DiagnosticData.
    3. В списке Выбрать имя политики концентратора событий выберите RootManagerSharedAccessKey.
    4. Щелкните ОК.
  5. Щелкните Сохранить.

Просмотр потока данных к концентраторам событий

  1. Подождите несколько минут, пока создается подключение и завершается экспорт журнала действий в концентратор событий. Перейдите к пространству имен концентраторов событий, чтобы просмотреть созданные концентраторы событий.

    Созданные концентраторы событий.

  2. Просмотрите потоки данных к вашему концентратору событий:

    Данные концентратора событий.

Подключение концентратора событий к Azure Data Explorer

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

Создание подключения к данным для журналов и метрик диагностики, а также журналов действий

  1. В кластере Azure Data Explorer с именем kustodocs выберите в меню слева Базы данных.

  2. В окне Базы данных выберите базу данных TestDatabase.

  3. В меню слева выберите Прием данных.

  4. В окне Прием данных щелкните +Добавить подключение к данным.

  5. В окне Подключение к данным введите следующую информацию:

    Подключение к данным концентратора событий.

  1. Примените следующие параметры в окне Подключение к данным.

    Источник данных:

    Параметр Рекомендуемое значение Описание поля
    Имя подключения к данным DiagnosticsLogsConnection Имя создаваемого подключения к обозревателю данных Azure.
    Пространство имен концентратора событий AzureMonitoringData Имя, выбранное ранее и определяющее пространство имен.
    Концентратор событий DiagnosticData Созданный концентратор событий.
    Группа потребителей adxpipeline Группа получателей событий, определенная в созданном концентраторе событий.

    Целевая таблица

    Существует два варианта маршрутизации: статическая и динамическая. В этом руководстве используется статическая маршрутизация (по умолчанию), для которой нужно указать имя таблицы, формат данных и сопоставление. Не активируйте флажок My data includes routing info (Мои данные содержат сведения о маршрутизации).

    Параметр Рекомендуемое значение Описание поля
    Таблица DiagnosticRawRecords Таблица, которую вы создали в базе данных TestDatabase.
    Формат данных JSON Формат, используемый в этой таблице.
    Сопоставление столбцов DiagnosticRawRecordsMapping Сопоставление, которое вы создали в базе данных TestDatabase между входящими данными JSON и именами столбцов и типами данных в таблице DiagnosticRawRecords.
  2. Нажмите кнопку создания.

Отправка запросов новым таблицам

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

Запрос таблицы метрик диагностики

Приведенный ниже запрос анализирует данные о длительности запросов по записям метрик диагностики в Azure Data Explorer.

DiagnosticMetrics
| where Timestamp > ago(15m) and MetricName == 'QueryDuration'
| summarize avg(Average)

Результаты запроса:

avg_Average
00:06.156

Дальнейшие шаги