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

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

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

创建 Azure 事件中心

若要创建新事件中心,请登录到 Azure 经典管理门户并依次单击“新建”->“应用服务”->“服务总线”->“事件中心”->“快速创建”。 输入事件中心名称、区域,选择订阅,并选择命名空间。 如果之前未创建命名空间,可通过在“命名空间”文本框中键入名称来创建命名空间。 配置所有属性后,单击“创建新事件中心”创建事件中心。

创建事件中心

接下来,导航到新事件中心的“配置”选项卡,并创建两个共享访问策略。 将第一个命名为“Sending”,并为其提供 Send 权限。

Sending 策略

将第二个命名为“Receiving”,并为其提供 Listen 权限,然后单击“保存”。

Receiving 策略

每个共享访问策略都允许应用程序与事件中心之间发送和接收事件。 若要访问这些策略的连接字符串,请导航到事件中心的“仪表板”选项卡并单击“连接信息”。

连接字符串

Sending 连接字符串在记录事件时使用,Receiving 连接字符串在从事件中心下载事件时使用。

连接字符串

创建 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=2014-02-14-preview

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

将以下标头添加到请求。

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

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

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

Note

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

配置 log-to-eventhubs 策略

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

要配置策略,请登录到 Azure 门户,导航到 API 管理服务,并单击“发布者门户”访问发布者门户。

发布者门户

单击左侧 API 管理菜单中的“策略”,选择所需的产品和 API,并单击“添加策略”。 在此示例中,我们向 Unlimited 产品中的 Echo API 添加策略。

添加策略

将光标放在 inbound 策略部分中,并单击“Log to 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 地址和操作名称的字符串。

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

后续步骤