Бөлісу құралы:


Руководство по переносу полученных данных центров событий из служба хранилища Azure в Azure Synapse Analytics с помощью Сетка событий Azure и Функции Azure

В этом руководстве вы перенесете данные центров событий из Хранилище BLOB-объектов Azure в Azure Synapse Analytics, в частности выделенный пул SQL, используя Сетка событий Azure и Функции Azure.

Обзор приложений

Эта схема демонстрирует рабочий процесс решения, создаваемого в рамках этого руководства.

  1. Данные, отправляемые в концентратор событий Azure, записываются в хранилище BLOB-объектов Azure.
  2. После сбора данных создается событие и отправляется в Сетку событий Azure.
  3. Сетка событий Azure переадресовывает данные этого события в приложение-функцию Azure.
  4. Приложение-функция использует URL-адрес большого двоичного объекта из данных события, чтобы извлечь большой двоичный объект из хранилища.
  5. Приложение-функция переносит данные больших двоичных объектов в Azure Synapse Analytics.

Ниже перечислены действия, которые вы выполните в этой статье.

  • Развертывание необходимой инфраструктуры для работы с руководством.
  • Публикация кода в приложение-функцию.
  • Создание подписки Сетки событий
  • Потоковая передача примера данных в Центры событий.
  • Проверка собранных данных в Azure Synapse Analytics

Необходимые компоненты

Для работы с этим руководством требуется:

  • В этой статье предполагается, что вы знакомы с сеткой событий и Центрами событий (особенно функцией захвата). Если вы не знакомы с Сетка событий Azure, ознакомьтесь с Сетка событий Azure. Дополнительные сведения о функции отслеживания Центры событий Azure см. в статье "Запись событий" с помощью Центры событий Azure в Хранилище BLOB-объектов Azure или Azure Data Lake Storage.
  • Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
  • Visual Studio с рабочими нагрузками для разработки классических приложений .NET, Azure, ASP.NET, Node.js, Python и веб-разработки.
  • Скачать на свой компьютер пример проекта EventHubsCaptureEventGridDemo.
    • WindTurbineDataGenerator — простой издатель, который отправляет примеры данных ветряной турбины в концентратор событий с включенной функцией захвата.
    • FunctionDWDumper — функция Azure, получающая уведомление от Сетка событий Azure при захвате файла Avro в большой двоичный объект служба хранилища Azure. Она получает путь URI для большого двоичного объекта, считывает его содержимое и помещает эти данные в Azure Synapse Analytics (выделенный пул SQL).

Развертывание инфраструктуры

На этом шаге вы развернете необходимую инфраструктуру с помощью шаблона Resource Manager. При развертывании шаблона создаются следующие ресурсы.

  • Концентратор событий со включенной функцией "Сбор".
  • Учетная запись хранения для собранных файлов.
  • План службы приложений для размещения приложения-функции.
  • Приложение-функция для обработки события.
  • SQL Server для размещения хранилища данных.
  • Azure Synapse Analytics (выделенный пул SQL) для хранения перенесенных данных.

Использование Azure CLI для развертывания инфраструктуры

  1. Войдите на портал Azure.

  2. Нажмите кнопку Cloud Shell, которая находится вверху.

    Снимок экрана: выделение кнопки Cloud Shell на портале Azure.

  3. В нижней части окна веб-браузера вы увидите открытый Cloud Shell.

    1. Если вы впервые используете Cloud Shell:
      1. Если у вас будет выбор между Bash и PowerShell, выберите Bash.

      2. Создайте учетную запись хранения, выбрав Создать хранилище. Azure Cloud Shell требуется учетная запись хранилища Azure для хранения некоторых файлов.

        Снимок экрана: создание хранилища для Cloud Shell.

      3. Подождите, пока не инициализируется Cloud Shell.

        Снимок экрана: инициализация Cloud Shell.

  4. В Cloud Shell выберите Bash, как показано на рисунке выше, если этот параметр еще не выбран.

  5. Создайте группу ресурсов Azure, выполнив следующую команду в окне CLI:

    1. Скопируйте следующую команду и вставьте ее в окно Cloud Shell. При желании измените имя группы ресурсов и расположение.

      az group create -l eastus -n rgDataMigration
      
    2. Нажмите клавишу ВВОД.

      Приведем пример:

      user@Azure:~$ az group create -l eastus -n rgDataMigration
      {
        "id": "/subscriptions/00000000-0000-0000-0000-0000000000000/resourceGroups/rgDataMigration",
        "location": "eastus",
        "managedBy": null,
        "name": "rgDataMigration",
        "properties": {
          "provisioningState": "Succeeded"
        },
        "tags": null
      }
      
  6. Разверните все ресурсы, упомянутые в предыдущем разделе (концентратор событий, учетная запись хранения, приложение-функция, Azure Synapse Analytics), выполнив следующую команду интерфейса командной строки:

    1. Скопируйте эту команду и вставьте ее в окно Cloud Shell. Кроме того, вы можете скопировать или вставить в редактор выбранного редактора значения, задать значения, а затем скопировать команду в Cloud Shell. Если вы видите ошибку из-за имени ресурса Azure, удалите группу ресурсов, исправьте имя и повторите команду.

      Внимание

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

      • Имя группы ресурсов, созданной ранее.
      • Название пространства имен концентратора событий.
      • Имя концентратора событий. Вы можете оставить имеющееся значение (hubdatamigration).
      • Имя для SQL Server.
      • Имя и пароль пользователя SQL.
      • Имя базы данных.
      • Имя учетной записи хранения
      • Имя приложения-функции.
      az deployment group create \
          --resource-group rgDataMigration \
          --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/event-grid/EventHubsDataMigration.json \
          --parameters eventHubNamespaceName=<event-hub-namespace> eventHubName=hubdatamigration sqlServerName=<sql-server-name> sqlServerUserName=<user-name> sqlServerPassword=<password> sqlServerDatabaseName=<database-name> storageName=<unique-storage-name> functionAppName=<app-name>
      
    2. Нажмите клавишу ВВОД в окне Cloud Shell, чтобы запустить команду. Этот процесс может занять некоторое время, так как вы создаете кучу ресурсов. После выполнения команды убедитесь, что сбоев не было.

  7. Закройте Cloud Shell, нажав кнопку Cloud Shell на портале или кнопку X в правом верхнем углу окна Cloud Shell.

Проверка создания ресурсов

  1. На портале Azure в меню слева выберите Группы ресурсов.

  2. Отфильтруйте список групп ресурсов, введя имя нужной группы ресурсов в поле поиска.

  3. Выберите в списке свою группу ресурсов.

    Снимок экрана: выделение группы ресурсов.

  4. Убедитесь, что в группе ресурсов находятся следующие ресурсы:

    Снимок экрана: ресурсы в группе ресурсов.

Создание таблицы в Azure Synapse Analytics

В этом разделе вы создадите таблицу в выделенном пуле SQL, созданном ранее.

  1. В списке ресурсов в группе ресурсов выберите свой выделенный пул SQL.

  2. На странице Выделенный пул SQL в разделе Типичные задачи в меню слева выберите Редактор запросов (предварительная версия).

    Снимок экрана: выделение редактора запросов на странице

  3. Введите имя пользователя и пароль для SQL Server и щелкните ОК. Если появится сообщение о том, что клиент может получить доступ к СЕРВЕРУ SQL Server, выберите "Разрешить IP-адрес>" <на сервере <SQL Server> и нажмите кнопку "ОК".

  4. Скопируйте и вставьте следующий код в окно запроса:

    CREATE TABLE [dbo].[Fact_WindTurbineMetrics] (
        [DeviceId] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [MeasureTime] datetime NULL,
        [GeneratedPower] float NULL,
        [WindSpeed] float NULL,
        [TurbineSpeed] float NULL
    )
    WITH (CLUSTERED COLUMNSTORE INDEX, DISTRIBUTION = ROUND_ROBIN);
    

    Снимок экрана: редактор запросов.

  5. Не закрывайте эту вкладку или окно, так как в конце руководства это поможет вам проверить успешность создания данных.

Публикация приложения службы "Функции Azure"

Сначала получите профиль публикации для приложения-функции на портале Azure. Затем используйте профиль публикации для публикации проекта или приложения службы "Функции Azure" из Visual Studio.

Скачать профиль публикации

  1. На странице Группа ресурсов выберите приложение службы "Функции Azure" в списке ресурсов.

    Снимок экрана: выделение приложения-функции в списке ресурсов для группы ресурсов.

  2. На странице Приложение-функция выберите Получить профиль публикации на панели команд.

    Снимок экрана: выделение кнопки **Скачать профиль публикации** на панели команд страницы приложения-функции.

  3. Загрузите и сохраните файл во вложенную папку FunctionEGDDumper в папке EventHubsCaptureEventGridDemo.

Использование профиля публикации для публикации приложения службы "Функции Azure"

  1. Запустите Visual Studio.

  2. Откройте решение EventHubsCaptureEventGridDemo.sln, скачанное с портала GitHub во время выполнения предыдущих шагов. Его можно найти в папке /samples/e2e/EventHubsCaptureEventGridDemo.

  3. В обозревателе решений щелкните правой кнопкой мыши проект FunctionEGDWDumper и выберите Публиковать.

  4. На следующем экране выберите Пуск или Добавить профиль публикации.

  5. В диалоговом окне Публикация выберите значение Импорт профиля для параметра Целевой объект и нажмите Далее.

    Снимок экрана: выделение **Импортировать профиль** в диалоговом окне **Публикация**.

  6. На вкладке Импорт профиля выберите файл параметров публикации, сохраненный ранее в папке FunctionEGDWDumper, и нажмите кнопку Готово.

  7. После настройки профиля в Visual Studio выберите Публиковать. Убедитесь, что публикация прошла успешно.

  8. В веб-браузере с открытой страницей "Функция Azure" выберите "Функции " в средней области. Убедитесь, что в списке отображается функция EventGridTriggerMigrateData. Если вы не видите ее, попробуйте повторить публикацию из Visual Studio и обновите страницу на портале.

    Снимок экрана: подтверждение создания функции.

После публикации функции вы можете подписаться на событие.

Настройте подписку на событие

  1. На новой вкладке или новом окне веб-браузера войдите в портал Azure.

  2. На портале Azure в меню слева выберите Группы ресурсов.

  3. Отфильтруйте список групп ресурсов, введя имя нужной группы ресурсов в поле поиска.

  4. Выберите в списке свою группу ресурсов.

  5. Выберите Пространство имен Центров событий из списка ресурсов.

  6. На странице Пространство имен Центров событий выберите События в меню слева, а затем на панели инструментов выберите + Подписка на события.

    Снимок экрана: страница

  7. На странице Создать подписку на событие выполните следующие действия:

    1. Укажите имя для подписки на событие.

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

    3. В поле Тип конечной точки выберите Функция Azure.

    4. В разделе Конечная точка щелкните ссылку.

    5. На странице Выберите функцию Azure выполните следующие действия, если поля не заполнены автоматически:

      1. Выберите подписку Azure, в которой размещена функция Azure.
      2. Выберите группу ресурсов для этой функции.
      3. Выберите приложение-функцию.
      4. Выберите слот развертывания.
      5. Выберите функцию EventGridTriggerMigrateData.
    6. На странице Выберите функцию Azure щелкните Подтвердить выбор.

    7. Теперь вернитесь на страницу Создать подписку на события и щелкните Создать.

      Снимок экрана: страница

  8. Убедитесь, что подписка на событие успешно создана. Перейдите на вкладку Подписки на события на странице События для пространства имен Центров событий.

    Снимок экрана: вкладка

Запуск приложения для создания данных

Итак, вы завершили настройку концентратора событий, выделенного пула SQL (прежнее название — Хранилище данных SQL), приложения-функции Azure и подписки на события. Прежде чем запустить приложение, создающее данные для концентратора событий, настройте несколько значений.

  1. На портале Azure, как и раньше, перейдите к группе ресурсов.

  2. Выберите пространство имен Центров событий.

  3. На странице пространства имен Центров событий выберите Политики общего доступа в меню слева.

  4. В списке политик выберите RootManageSharedAccessKey.

    Снимок экрана: страница политик общего доступа для пространства имен Центров событий.

  5. Щелкните синюю кнопку копирования справа от текстового поля Connection string-primary key (Первичный ключ строки подключения).

  6. Вернитесь к решению Visual Studio.

  7. Щелкните правой кнопкой мыши проект WindTurbineDataGenerator и выберите Назначить запускаемым проектом.

  8. В проекте WindTurbineDataGenerator откройте файл program.cs.

  9. Замените <EVENT HUBS NAMESPACE CONNECTION STRING> строкой подключения, которую вы скопировали на портале.

  10. Если вы использовали другое имя для концентратора событий вместо hubdatamigration, замените <EVENT HUB NAME> на имя концентратора событий.

    private const string EventHubConnectionString = "Endpoint=sb://demomigrationnamespace.servicebus.windows.net/...";
    private const string EventHubName = "hubdatamigration";
    
  11. Постройте решение. Запустите приложение WindTurbineGenerator.exe.

  12. Через пару минут на другой вкладке браузера, где открыто окно запросов, выполните запрос по перенесенным данным в таблице хранилища данных.

    select * from [dbo].[Fact_WindTurbineMetrics]
    

    Снимок экрана: результаты запроса.

Внимание

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

Мониторинг решения

Этот раздел поможет вам выполнять мониторинг и устранение неполадок для решения.

Просмотр собранных данных в учетной записи хранения

  1. Перейдите к группе ресурсов и выберите учетную запись хранения, которая используется для сбора данных о событиях.

  2. На странице учетной записи хранения выберите браузер хранилища в меню слева.

  3. Разверните раздел Контейнеры BLOB-объектов и выберите windturbinecapture.

  4. Откройте в области справа папку с таким же именем, как у пространства имен Центров событий.

  5. Откройте папку с таким же именем, как у концентратора событий (hubdatamigration).

  6. Просмотрите вложенные папки и найдите файлы AVRO. Приведем пример:

    Снимок экрана: захваченный файл в хранилище.

Проверка того, что триггер Сетки событий вызвал функцию

  1. Перейдите к используемой группе ресурсов и выберите приложение-функцию.

  2. Перейдите на вкладку "Функции" на средней панели.

  3. В списке выберите функцию EventGridTriggerMigrateData.

  4. На странице Функция выберите в меню слева пункт Монитор.

  5. Выберите Настроить, чтобы настроить сбор журналов вызовов в Application Insights.

  6. Создайте новый ресурс Application Insights или выберите существующий.

  7. Вернитесь на страницу Монитор для этой функции.

  8. Убедитесь, что клиентское приложение (WindTurbineDataGenerator), отправляющее события, по-прежнему выполняется. Если это не так, запустите это приложение.

  9. Подождите несколько минут (5 и более), а затем нажмите кнопку Обновить, чтобы просмотреть вызовы функций.

    Снимок экрана: вызовы функции.

  10. Выберите конкретный вызов, чтобы просмотреть сведения о нем.

    Служба "Сетка событий" распределяет данные события между подписчиками. В следующем примере показаны данные событий, сгенерированные при записи потока данных, проходящих через концентратор событий, в большой двоичный объект. В частности, обратите внимание, что свойство fileUrl в объекте data указывает на большой двоичный объект в хранилище. Приложение-функция использует этот URL-адрес для получения файла большого двоичного объекта с записанными данными.

    {
      "topic": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/rgDataMigration/providers/Microsoft.EventHub/namespaces/spehubns1207",
      "subject": "hubdatamigration",
      "eventType": "Microsoft.EventHub.CaptureFileCreated",
      "id": "4538f1a5-02d8-4b40-9f20-36301ac976ba",
      "data": {
        "fileUrl": "https://spehubstorage1207.blob.core.windows.net/windturbinecapture/spehubns1207/hubdatamigration/0/2020/12/07/21/49/12.avro",
        "fileType": "AzureBlockBlob",
        "partitionId": "0",
        "sizeInBytes": 473444,
        "eventCount": 2800,
        "firstSequenceNumber": 55500,
        "lastSequenceNumber": 58299,
        "firstEnqueueTime": "2020-12-07T21:49:12.556Z",
        "lastEnqueueTime": "2020-12-07T21:50:11.534Z"
      },
      "dataVersion": "1",
      "metadataVersion": "1",
      "eventTime": "2020-12-07T21:50:12.7065524Z"
    }
    

Проверка того, что данные успешно сохранены в выделенном пуле SQL

На вкладке браузера, где открыто окно запросов, выполните запрос по перенесенным данным в таблице выделенного пула SQL.

Снимок экрана: окончательные результаты запроса.

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