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


Как регистрировать события в Центрах событий Azure при использовании службы управления API Azure

ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни управления API

В этой статье описывается, как регистрировать события управления API с помощью Центров событий Azure.

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

Примечание.

В настоящее время эта функция недоступна в рабочих областях.

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

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

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

  • Управляемое удостоверение для экземпляра API Management (рекомендуется)
  • Строка подключения для Event Hubs

Примечание.

Рекомендуется по возможности использовать учетные данные управляемой идентификации для повышения безопасности.

Вариант 1: Настройка управляемой идентичности для управления API

  1. Включите назначаемое системой или назначаемое пользователем управляемое удостоверение для Управления API в экземпляре Управления API.

    • Если вы включите назначаемое пользователем управляемое удостоверение, запишите идентификатор объекта этого удостоверения.
  2. Назначьте удостоверение роли отправителя данных Azure Event Hubs, ограниченной областью пространства имен Центров событий или конкретного концентратора событий, используемого для ведения журнала. Чтобы назначить роль, используйте портал Azure или другое средство Azure.

Вариант 2. Настройка строки подключения Центров событий

Инструкции по созданию строки подключения Центров событий см. в разделе «Получение строки подключения Центров событий».

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

Создание средства ведения журнала для управления API

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

Создание средств ведения журнала управления API и управление ими с помощью REST API управления API напрямую или с помощью других средств, таких как Azure PowerShell, файл Bicep или шаблон управления ресурсами Azure.

Можно настроить регистратор API Management для концентратора событий, используя учетные данные управляемой идентификации, назначенные системой или пользователем.

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

Предварительные требования см. в разделе "Настройка управляемого удостоверения управления API".

Используйте средство ведения журнала управления API— создание или обновление члена REST API со следующим текстом запроса.

{
  "properties": {
    "loggerType": "azureEventHub",
    "description": "Event Hub logger with system-assigned managed identity",
    "credentials": {
         "endpointAddress":"<EventHubsNamespace>.servicebus.windows.net",
         "identityClientId":"SystemAssigned",
         "name":"<EventHubName>"
    }
  }
}

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

Предварительные требования см. в разделе "Настройка управляемого удостоверения управления API".

Используйте средство ведения журнала управления API— создание или обновление члена REST API со следующим текстом запроса.

{
  "properties": {
    "loggerType": "azureEventHub",
    "description": "Event Hub logger with user-assigned managed identity",
    "credentials": {
         "endpointAddress":"<EventHubsNamespace>.servicebus.windows.net",
         "identityClientId":"<ClientID>",
         "name":"<EventHubName>"
    }
  }
}

Вариант 2. Создание средства ведения журнала с учетными данными строки подключения

Предварительные требования см. в разделе "Настройка строки подключения Центров событий".

Примечание.

Рекомендуем настраивать логгер с использованием учетных данных управляемой идентичности, если это возможно. См. раздел "Настройка средства ведения журнала с учетными данными управляемого удостоверения" в предыдущем разделе этой статьи.

В следующем примере используется командлет New-AzApiManagementLogger для создания логгера в концентраторе событий путем настройки строки подключения.

# Details specific to API Management 
$apimServiceName = "apim-hello-world"
$resourceGroupName = "myResourceGroup"

# Create logger
$context = New-AzApiManagementContext -ResourceGroupName $resourceGroupName -ServiceName $apimServiceName
New-AzApiManagementLogger -Context $context -LoggerId "ContosoLogger1" -Name "ApimEventHub" -ConnectionString "Endpoint=sb://<EventHubsNamespace>.servicebus.windows.net/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<key>" -Description "Event hub logger with connection string"

Настройка политики log-to-eventhub

После настройки средства ведения журнала в службе управления API можно настроить политику log-to-eventhub для регистрации нужных событий. Например, используйте log-to-eventhub политику в разделе политики входящего трафика для регистрации запросов или в разделе политики исходящего трафика для регистрации ответов.

  1. Перейдите к экземпляру службы управления API.

  2. В разделе API выберите API и выберите API, в который нужно добавить политику. В этом примере мы добавляем политику Echo API в продукт Unlimited.

  3. На вкладке "Конструктор" выберите "Все операции".

  4. В области обработки входящего трафика или исходящего трафика нажмите <кнопку /> (Редактор кода политики). Дополнительные сведения см. в статье Настройка или изменение политик службы управления API Azure.

  5. Наведите указатель мыши на раздел политики inbound или outbound.

  6. Выберите "Показать фрагменты" в верхней части вкладки. Выберите Расширенные политики>Логирование в EventHub. Это действие вставляет шаблон заявления о политике log-to-eventhub.

    <log-to-eventhub logger-id="logger-id">
        @{
            return new JObject(
                new JProperty("EventTime", DateTime.UtcNow.ToString()),
                new JProperty("ServiceName", context.Deployment.ServiceName),
                new JProperty("RequestId", context.RequestId),
                new JProperty("RequestIp", context.Request.IpAddress),
                new JProperty("OperationName", context.Operation.Name)
            ).ToString();
        }
    </log-to-eventhub>
    
    1. Замените logger-id именем средства ведения журнала, созданного на предыдущем шаге.
    2. Вы можете использовать любое выражение, которое возвращает строку в качестве значения для элемента log-to-eventhub . В этом примере регистрируется строка в формате JSON, содержащая дату и время, имя службы, идентификатор запроса, IP-адрес запроса и имя операции.
  7. Нажмите кнопку "Сохранить", чтобы сохранить обновленную конфигурацию политики. После сохранения конфигурации политика активна и события регистрируются в указанном концентраторе событий.

Примечание.

Максимальный поддерживаемый размер сообщения, отправляемого в концентратор событий из этой политики службы "Управление API", составляет 200 килобайт (КБ). Если сообщение, отправленное в концентратор событий, превышает 200 КБ, оно автоматически усечено, а усеченное сообщение передается в концентратор событий. Для больших сообщений рекомендуется использовать службу хранилища Azure с управлением API в качестве обходного решения, чтобы обойти ограничение в 200 КБ. Дополнительные сведения см. в статье "Отправка запросов в службу хранилища Azure" из службы управления API.

Просмотрите логи в Event Hubs с помощью Azure Stream Analytics

Вы можете просмотреть журнал в Центрах событий с помощью запросов Azure Stream Analytics.

  1. На портале Azure перейдите в концентратор событий, в который средство ведения журнала отправляет события.
  2. В разделе "Компоненты" выберите "Обработка данных".
  3. В карточке событий "Включить аналитику в режиме реального времени" нажмите кнопку "Пуск".
  4. Вы можете просмотреть журнал на вкладке Предпросмотр ввода. Если отображаемые данные не являются актуальными, выберите Обновить, чтобы просмотреть последние события.