如何在 Azure API 管理中将事件记录到 Azure 事件中心

事件中心是一个高度可缩放的引入服务,每秒可以引入数百万的事件,使用户能够处理和分析连接设备和应用程序生成的海量数据。 事件中心充当事件管道的“前门”,将数据收集到事件中心后,可以使用任何实时分析提供程序或批处理/存储适配器来转换和存储这些数据。 事件中心可将事件流的生成与这些事件的使用分离开来,因此,事件使用者可以根据自己的计划访问事件。

本文介绍如何使用 Azure 事件中心记录 API 管理事件。

创建 Azure 事件中心

有关如何创建事件中心以及获取将事件发送到事件中心和从事件中心接收事件所需的连接字符串的详细步骤,请参阅使用 Azure 门户创建事件中心命名空间和事件中心

创建 API 管理记录器

现在有了事件中心,下一步是在 API 管理服务中配置记录器,以便它可以将事件记录到事件中心。

使用 API 管理 REST API 配置 API 管理记录器。 在第一次使用 REST API 之前,查看先决条件并确保已启用对 REST API 的访问

若要创建记录器,请使用以下 URL 模板发出 HTTP PUT 请求:

https://{your service}.management.azure-api.cn/loggers/{new logger name}?api-version=2017-03-01

  • {your service} 替换为 API 管理服务实例的名称。
  • {new logger name} 替换为新记录器的所需名称。 配置 log-to-eventhub 策略时,将引用此名称

将以下标头添加到请求:

使用以下模板指定请求正文:

{
  "loggertype" : "AzureEventHub",
  "description" : "Sample logger description",
  "credentials" : {
    "name" : "Name of the Event Hub from the Azure Classic Portal",
    "connectionString" : "Endpoint=Event Hub Sender connection string"
    }
}
  • loggertype 必须设置为 AzureEventHub
  • description 提供记录器的可选说明,并且可在需要时为零长度字符串。
  • credentials 包含 Azure 事件中心的 nameconnectionString

发出请求时,如果创建记录器,则返回 201 Created 的状态代码。

Note

有关其他可能的返回代码及其原因,请参阅创建记录器。 若要查看如何执行其他操作,如列表、更新和删除,请参阅记录器实体文档。

配置 log-to-eventhubs 策略

在 API 管理中配置记录器后,可配置 log-to-eventhubs 策略以记录所需事件。 log-to-eventhubs 策略可在入站策略部分或出站策略部分中使用。

  1. 浏览到自己的 APIM 实例。
  2. 选择“API”选项卡。
  3. 选择要将策略添加到的 API。 在此示例中,我们向 Unlimited 产品中的 Echo API 添加策略。
  4. 选择“所有操作”。
  5. 选择屏幕顶部的“设计”选项卡。
  6. 在“入站或出站处理”窗口中,单击三角形(铅笔旁边)。
  7. 选择“代码编辑器”。
  8. 将光标放在 inboundoutbound 策略部分中。
  9. 在右侧窗口中,选择“高级策略” > “记录到 EventHub”。 这会插入 log-to-eventhub 策略语句模板。
<log-to-eventhub logger-id ='logger-id'>
  @( string.Join(",", DateTime.UtcNow, context.Deployment.ServiceName, context.RequestId, context.Request.IpAddress, context.Operation.Name))
</log-to-eventhub>

logger-id 替换为在上一步中配置的 API 管理记录器的名称。

可使用返回字符串作为 log-to-eventhub 元素值的任何表达式。 在此示例中,将记录包含日期和时间、服务名称、请求 ID、请求 IP 地址和操作名称的字符串。

单击“保存”保存更新后的策略配置。 保存后,策略立即处于活动状态,并且事件记录到指定的事件中心。

后续步骤