Поделиться через


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

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

Конвейер приема Центров событий передает события в Azure Data Explorer в несколько этапов. Сначала вы создадите концентратор событий в портале Azure. Затем создайте целевую таблицу в Azure Data Explorer, в которую данные в определенном формате загружаются с помощью предоставленных свойств загрузки. Подключение Центров событий должно учитывать маршрутизацию событий. Данные могут внедряться с выбранными свойствами в соответствии со свойствами системы событий. Создайте подключение к Центрам событий для создания концентратора событий и отправки событий. Этим процессом можно управлять с помощью портала Azure, программно с помощью C# или Pythonили с помощью шаблона Azure Resource Manager.

Общие сведения о приеме данных в обозревателе данных Azure см. в разделе Обзор приема данных Azure Data Explorer.

Параметры проверки подлинности подключения к данным Azure Data Explorer

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

    1. Присвойте управляемое удостоверение вашему кластеру.
    2. Предоставьте разрешения управляемому удостоверению в источнике данных. Чтобы получить данные из Центров событий Azure, управляемое удостоверение должно иметь разрешения Получателя данных для Центров событий Azure.
    3. Задайте политику управляемого удостоверения в целевых базах данных.
    4. Создайте подключение к данным с помощью аутентификации с помощью управляемой идентификации для получения данных.

    Внимание

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

  • Подключение к данным на основе ключей: если для подключения к данным не указана проверка подлинности управляемого удостоверения, по умолчанию используется проверка подлинности на основе ключей. Подключения на основе ключей получают данные с помощью строки подключения к ресурсу, например строки подключения Центров событий Azure. Azure Data Explorer получает ресурсную строку подключения для указанного ресурса и безопасно сохраняет её. Затем строка подключения используется для получения данных из источника данных.

    Внимание

    Если ключ поворачивается, подключение к данным больше не будет работать и не сможет получить данные из источника данных. Чтобы устранить проблему, обновите или повторно создайте подключение к данным.

Формат данных

Примечание.

  • Прием из Центров событий не поддерживает формат RAW.
  • Реестр схем Azure Event Hubs и безсхемный Avro не поддерживаются.
  • Данные можно сжимать с помощью алгоритма сжатия gzip. Вы можете указать Compression динамически с помощью свойств загрузки или в статических параметрах подключения к данным.
  • Сжатие данных не поддерживается для двоичных форматов (Avro, ApacheAvro, Parquet, ORC и W3CLOGFILE).
  • Пользовательские свойства кодирования и внедренные системные свойства не поддерживаются с двоичными форматами и сжатыми данными.
  • При использовании бинарных форматов (Avro, ApacheAvro, Parquet, ORC и W3CLOGFILE) и сопоставлений загрузки данных порядок полей в определении сопоставления должен соответствовать порядку соответствующих столбцов в таблице.

Свойства Центров событий

Azure Data Explorer поддерживает следующие свойства Центров событий:

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

Примечание.

Прием пользовательских свойств Центров событий, используемый для связывания метаданных с событиями, не поддерживается. Если необходимо использовать пользовательские свойства, отправьте их в данных события. Дополнительные сведения см. в разделе Прием пользовательских свойств.

Свойства приема

Свойства приема указывают процессу приема, куда направлять данные и как их обрабатывать. Вы можете указать свойства приема для приема событий с помощью EventData.Properties. Можно задать следующие свойства:

Примечание.

В именах свойств учитывается регистр.

Свойство Описание
База данных Имя целевой базы данных с учетом регистра. По умолчанию данные загружаются в целевую базу данных, связанную с соединением с данными. Это свойство используется для переопределения базы данных по умолчанию и отправки данных в другую базу данных. Для этого необходимо сначала настроить подключение в виде подключения к нескольким базам данных.
Таблица Имя существующей целевой таблицы с учетом регистра. Переопределяет набор Table на панели Data Connection.
Формат Формат данных. Переопределяет настройки Data format на панели Data Connection.
IngestionMappingReference Имя существующего сопоставления приема, которое будет использоваться. Переопределяет настройку Column mapping на панели Data Connection.
Сжатие Сжатие данных, None (по умолчанию) или gzip.
Кодировка Кодировка данных, по умолчанию — UTF8. Может быть любой из поддерживаемых кодировок .NET.
Теги Список тегов, которые нужно связать с принятыми данными, в формате строки массива JSON. При использовании тегов могут быть последствия для производительности.
RawHeaders Указывает, что источник событий — Kafka и Azure Data Explorer должны использовать десериализацию массива байтов для чтения других свойств маршрутизации. Значение не учитывается.

Примечание.

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

Маршрутизация событий

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

Примечание.

Подключение к данным Центров событий попытается обработать все события, которые оно считывает из концентратора событий, и каждое событие, которое оно не может обработать по какой-либо причине, будет сообщаться как сбой приема. Узнайте, как отслеживать поступление данных в Azure Data Explorer, читайте здесь.

Маршрутизация данных событий в альтернативную базу данных

По умолчанию маршрутизация данных в альтернативную базу данных отключена. Чтобы отправить данные в другую базу данных, необходимо сначала настроить подключение в виде подключения к нескольким базам данных. Эту функцию можно включить в портал Azure, с помощью SDK для управления C# или Python, или при помощи шаблона ARM. Пользователь, группа, субъект-служба или управляемое удостоверение, используемые для обеспечения маршрутизации базы данных, должны иметь по крайней мере роль участника и разрешения на запись в кластер.

Чтобы указать альтернативную базу данных, задайте свойство приема базы данных.

Предупреждение

Указание альтернативной базы данных без настройки подключения как много-базового приведет к ошибке загрузки.

Маршрутизация данных событий в альтернативную таблицу

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

В следующем примере показано, как задать сведения о центре событий и отправить данные метрик погоды в альтернативную базу данных (MetricsDB) и таблицу (WeatherMetrics). Данные в формате JSON, а сопоставление mapping1 заранее задано для таблицы WeatherMetrics.

// This sample uses Azure.Messaging.EventHubs which is a .Net Framework library.
await using var producerClient = new EventHubProducerClient("<eventHubConnectionString>");
// Create the event and add optional "dynamic routing" properties
var eventData = new EventData(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(
    new { TimeStamp = DateTime.UtcNow, MetricName = "Temperature", Value = 32 }
)));
eventData.Properties.Add("Database", "MetricsDB");
eventData.Properties.Add("Table", "WeatherMetrics");
eventData.Properties.Add("Format", "json");
eventData.Properties.Add("IngestionMappingReference", "mapping1");
eventData.Properties.Add("Tags", "['myDataTag']");
var events = new[] { eventData };
// Send events
await producerClient.SendAsync(events);

Сопоставление системных свойств Центров событий

Системные свойства — это поля, устанавливаемые службой Центров событий в момент постановки события в очередь. Подключение данных Azure Data Explorer к Event Hubs может внедрить предопределенный набор системных свойств в данные, поступающие в таблицу на основе заданного сопоставления.

Примечание.

  • Внедренные системные свойства поддерживаются для форматов JSON и табличных форматов (то есть JSON, MultiJSON, CSV, TSV, PSV, SCsv, SOHsv, TSVE).
  • При использовании неподдерживаемого формата (TXT или сжатых форматов, например Parquet, Avro и т. д.) данные по-прежнему будут приняты, но свойства будут игнорироваться.
  • Внедрение системных свойств не поддерживается, если настроено сжатие сообщений концентратора событий. В таких случаях будет выдаваться соответствующая ошибка, и данные не будут загружены.
  • Для табличных данных системные свойства поддерживаются только для сообщений о событиях с одной записью.
  • Для данных JSON системные свойства также поддерживаются для сообщений о событиях с несколькими записями. В таких случаях системные свойства добавляются только к первой записи сообщения о событии.
  • Для CSV сопоставления свойства добавляются в начале записи в порядке, указанном при создании подключения к данным. Не полагаться на порядок этих свойств, так как он может измениться в будущем.
  • При сопоставлении в формате JSON свойства добавляются в соответствии с именами свойств, указанных в таблице Системные свойства.

Служба "Центры событий" предоставляет следующие системные свойства:

Свойство Тип данных Описание
x-opt-enqueued-time (время постановки в очередь) datetime Время постановки события в очередь по UTC
x-opt-sequence-number long Логический номер последовательности события в потоке раздела концентратора событий
x-opt-offset string Смещение события относительно потока разделов концентратора событий. Идентификатор смещения уникален в пределах раздела потока центра событий.
x-opt-publisher string Имя издателя, если сообщение было отправлено в конечную точку издателя
x-opt-partition-key string Ключ соответствующего раздела, в котором было сохранено событие.

Кроме того, при работе с концентраторами событий IoT Central вы можете внедрить системные свойства Центра Интернета вещей в полезные данные. Полный список см. в разделе Системные свойства Центра Интернета вещей.

Если вы выбрали Свойства системы событий в разделе Источник данных таблицы, вы должны включить свойства в схему таблицы и сопоставление.

Примеры сопоставления схем

Пример сопоставления схемы таблицы

Если данные содержат три столбца (TimeStamp, MetricName и Value) и включены свойства x-opt-enqueued-time и x-opt-offset, создайте или измените схему таблицы с помощью следующей команды:

    .create-merge table TestTable (TimeStamp: datetime, MetricName: string, Value: int, EventHubEnqueuedTime:datetime, EventHubOffset:string)

Пример сопоставления CSV-файла

Выполните следующие команды, чтобы добавить данные в начало записи. Заметьте порядковые значения.

    .create table TestTable ingestion csv mapping "CsvMapping1"
    '['
    '   { "column" : "TimeStamp", "Properties":{"Ordinal":"2"}},'
    '   { "column" : "MetricName", "Properties":{"Ordinal":"3"}},'
    '   { "column" : "Value", "Properties":{"Ordinal":"4"}},'
    '   { "column" : "EventHubEnqueuedTime", "Properties":{"Ordinal":"0"}},'
    '   { "column" : "EventHubOffset", "Properties":{"Ordinal":"1"}}'
    ']'

Пример сопоставления JSON

Данные добавляются с помощью сопоставления свойств системы. Выполните следующие команды.

    .create table TestTable ingestion json mapping "JsonMapping1"
    '['
    '    { "column" : "TimeStamp", "Properties":{"Path":"$.TimeStamp"}},'
    '    { "column" : "MetricName", "Properties":{"Path":"$.MetricName"}},'
    '    { "column" : "Value", "Properties":{"Path":"$.Value"}},'
    '    { "column" : "EventHubEnqueuedTime", "Properties":{"Path":"$.x-opt-enqueued-time"}},'
    '    { "column" : "EventHubOffset", "Properties":{"Path":"$.x-opt-offset"}}'
    ']'

Сопоставление схем для файлов Avro, захваченных центрами событий.

Одним из способов использования данных Центров событий является запись событий с помощью Центров событий Azure в Хранилище блобов Azure или Хранилище озера данных Azure. Затем можно реализовать прием этих файлов по мере их записи с помощью подключения к данным Сетки событий в Azure Data Explorer.

Схема файлов записи отличается от схемы исходного события, отправляемого в Центры событий. Следует проектировать схему целевой таблицы с учетом этого различия. В частности, полезные данные события представлены в файле захвата в виде массива байтов, и этот массив не декодируется автоматически при подключении к данным Event Grid в Azure Data Explorer. Дополнительные сведения о схеме файлов для данных захвата Avro в Центрах событий см. в статье «Изучение захваченных файлов Avro в Центрах событий Azure».

Чтобы правильно декодировать полезные данные события:

  1. Сопоставьте поле Body записанного события со столбцом типа dynamic в целевой таблице.
  2. Примените политику обновления, которая преобразует массив байтов в удобочитаемую строку с помощью функции unicode_codepoints_to_string().

Импорт настраиваемых свойств

При приеме событий из Центров событий данные берутся из раздела body объекта данных события. Но пользовательские свойства Центров событий определяются в разделе properties объекта и не принимаются. Чтобы загрузить пользовательские свойства, необходимо внедрить их в данные в разделе body объекта.

В следующем примере сравнивается объект данных событий, содержащий пользовательское свойство , как это определено Центрами событий (слева), со встроенным свойством , которое требуется для поглощения (справа).

{
"body":{
"value": 42
},
"properties":{
"customProperty": "123456789"
}
}
{
"body":{
"value": 42,
"customProperty": "123456789"
}
}

Для внедрения пользовательских свойств в данные в разделе body объекта данных события можно использовать один из следующих методов:

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

Создайте концентратор событий, если у вас его еще нет. Подключение к концентратору событий можно осуществлять через портал Azure, программно на языке C# или Python, или с помощью шаблона Azure Resource Manager.

Примечание.

  • Возможность динамического добавления секций после создания концентратора событий доступна только в Центрах событий категорий "Премиум" и "Выделенный" При задании количества секций учитывайте долгосрочный масштаб.
  • Группа потребителей должна быть уникальной для каждого потребителя. Создайте группу потребителей, предназначенную для подключения к Azure Data Explorer.

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

Для повышения производительности создайте концентратор событий в том же регионе, что и кластер. Если это невозможно, рассмотрите возможность использования уровней «Премиум» или «Выделенные» для центров событий. Сравнение уровней можно найти в разделе Уровни Центров событий Azure.

Отправка событий

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

Примечание.

Чтобы обеспечить эффективную обработку событий из Центров событий в Azure Data Explorer, избежать несбалансированного распределения событий между секциями. Неравномерное сопоставление может привести к высокой задержке обнаружения. Для получения дополнительной информации см. Сопоставление событий с разделами.

Настройка решения для географического аварийного восстановления

Концентратор событий предлагает решение для географического аварийного восстановления. Azure Data Explorer не поддерживает пространства имен Alias концентратора событий. Чтобы реализовать глобальное аварийное восстановление в решении, создайте два подключения к данным концентратора событий: одно для основного пространства имен и одно для вторичного. Azure Data Explorer прослушивает оба подключения концентратора событий.

Примечание.

Реализация переключения с основного пространства имен на резервное является ответственностью пользователя.