将 Azure 监视数据流式传输到事件中心和外部合作伙伴

将数据从 Azure Monitor 流式传输到外部工具的一种有效方法是使用 Azure 事件中心。 本文介绍了如何将数据流式传输到事件中心,并列出了可以从中心使用该数据的一些合作伙伴。 某些合作伙伴与 Azure Monitor 集成并拥有 Azure 托管的服务。

创建事件中心命名空间

在针对任何数据源配置流式传输之前,需要创建事件中心命名空间和事件中心。 此命名空间和事件中心是所有监视数据的目标。 事件中心命名空间是共享相同访问策略的事件中心的逻辑分组,就像存储帐户对于其中的各个 blob 都有单独的容器一样。 请注意以下详细信息,这些详细信息涉及用于流式传输监视数据的事件中心命名空间和事件中心:

  • 使用吞吐量单位数,可增加事件中心的吞吐量规模。 通常只需要一个吞吐量单位。 如果需要在日志使用量增加时纵向扩展,可以手动增加命名空间的吞吐量单位数或启用自动扩充。
  • 使用分区数可以在多个使用者之间并行使用。 单个分区最多支持 20 MBps,或者大约每秒 20,000 条消息。 不一定支持从多个分区使用,具体取决于使用数据的工具。 如果不确定要设置的分区数量,那么从四个分区开始较为合理。
  • 将事件中心的消息保留期设置为至少 7 天。 如果使用的工具多天出现故障,此保留期可确保该工具可以从它中断的位置重新开始(因为事件最多可保存 7 天)。
  • 为事件中心使用默认的使用者组。 除非你打算通过两个不同的工具使用同一事件中心内的相同数据,否则无需创建其他使用者组或使用单独的使用者组。
  • 对于 Azure 活动日志,当你选择一个事件中心命名空间时,Azure Monitor 将在该命名空间内创建名为 insights-logs-operational-logs 的事件中心。 对于其他日志类型,可以选择现有的事件中心,或者让 Azure Monitor 为每个日志类别创建一个事件中心。
  • 必须在使用事件中心内的数据的计算机或虚拟网络上打开出站端口 5671 和 5672。

流式处理方法

可以使用 Azure Monitor 中的以下方法将数据发送到事件中心:

  • 数据收集规则
    数据收集规则用于将日志和指标流式传输到事件中心、Log Analytics 工作区和 Azure 存储。 有关如何设置数据收集规则的信息,请参阅 Azure Monitor 中的数据收集规则创建和编辑数据收集规则

  • 诊断设置
    使用诊断设置将日志和指标流式传输到事件中心。 有关如何设置诊断设置的信息,请参阅创建诊断设置

  • 使用逻辑应用手动流式传输
    对于无法直接流式传输到事件中心的数据,可以将其写入 Azure 存储,接着使用时间触发的逻辑应用从 Azure Blob 存储中拉取数据,然后将其作为消息推送到事件中心。 有关详细信息,请参阅通过 Azure 逻辑应用中的工作流连接到事件中心

数据格式

以下 JSON 是发送到事件中心的指标数据示例:

[
  {
    "records": [
      {
        "count": 2,
        "total": 0.217,
        "minimum": 0.042,
        "maximum": 0.175,
        "average": 0.1085,
        "resourceId": "/SUBSCRIPTIONS/AAAA0A0A-BB1B-CC2C-DD3D-EEEEEE4E4E4E/RESOURCEGROUPS/RG-001/PROVIDERS/MICROSOFT.WEB/SITES/SCALEABLEWEBAPP1",
        "time": "2023-04-18T09:03:00.0000000Z",
        "metricName": "CpuTime",
        "timeGrain": "PT1M"
      },
      {
        "count": 2,
        "total": 0.284,
        "minimum": 0.053,
        "maximum": 0.231,
        "average": 0.142,
        "resourceId": "/SUBSCRIPTIONS/AAAA0A0A-BB1B-CC2C-DD3D-EEEEEE4E4E4E/RESOURCEGROUPS/RG-001/PROVIDERS/MICROSOFT.WEB/SITES/SCALEABLEWEBAPP1",
        "time": "2023-04-18T09:04:00.0000000Z",
        "metricName": "CpuTime",
        "timeGrain": "PT1M"
      },
      {
        "count": 1,
        "total": 1,
        "minimum": 1,
        "maximum": 1,
        "average": 1,
        "resourceId": "/SUBSCRIPTIONS/AAAA0A0A-BB1B-CC2C-DD3D-EEEEEE4E4E4E/RESOURCEGROUPS/RG-001/PROVIDERS/MICROSOFT.WEB/SITES/SCALEABLEWEBAPP1",
        "time": "2023-04-18T09:03:00.0000000Z",
        "metricName": "Requests",
        "timeGrain": "PT1M"
      },
    ...
    ]
  }
]

以下 JSON 是发送到事件中心的日志数据示例:

[
  {
    "records": [
      {
        "time": "2023-04-18T09:39:56.5027358Z",
        "category": "AuditEvent",
        "operationName": "VaultGet",
        "resultType": "Success",
        "correlationId": "cccc2222-dd33-4444-55ee-666666ffffff",
        "callerIpAddress": "10.0.0.10",
        "identity": {
          "claim": {
            "http://schemas.microsoft.com/identity/claims/objectidentifier": "dddddddd-3333-4444-5555-eeeeeeeeeeee",
            "appid": "44445555-eeee-6666-ffff-7777aaaa8888"
          }
        },
        "properties": {
          "id": "https://mykeyvault.vault.azure.cn/",
          "clientInfo": "AzureResourceGraph.IngestionWorkerService.global/1.23.1.224",
          "requestUri": "https://northeurope.management.chinacloudapi.cn/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-001/providers/Microsoft.KeyVault/vaults/mykeyvault?api-version=2023-02-01&MaskCMKEnabledProperties=true",
          "httpStatusCode": 200,
          "properties": {
            "sku": {
              "Family": "A",
              "Name": "Standard",
              "Capacity": null
            },
            "tenantId": "bbbbcccc-1111-dddd-2222-eeee3333ffff",
            "networkAcls": null,
            "enabledForDeployment": 0,
            "enabledForDiskEncryption": 0,
            "enabledForTemplateDeployment": 0,
            "enableSoftDelete": 1,
            "softDeleteRetentionInDays": 90,
            "enableRbacAuthorization": 0,
            "enablePurgeProtection": null
          }
        },
        "resourceId": "/SUBSCRIPTIONS/AAAA0A0A-BB1B-CC2C-DD3D-EEEEEE4E4E4E/RESOURCEGROUPS/RG-001/PROVIDERS/MICROSOFT.KEYVAULT/VAULTS/mykeyvault",
        "operationVersion": "2023-02-01",
        "resultSignature": "OK",
        "durationMs": "16"
      }
    ],
    "EventProcessedUtcTime": "2023-04-18T09:42:07.0944007Z",
    "PartitionId": 1,
    "EventEnqueuedUtcTime": "2023-04-18T09:41:14.9410000Z"
  },
...

与 Azure Monitor 集成的合作伙伴工具

通过 Azure Monitor 将监视数据路由到事件中心,可与外部 SIEM 和监视工具轻松集成。 下表列出了与 Azure Monitor 集成的工具示例。

工具 在 Azure 中托管 说明
IBM QRadar Azure DSM 和 Azure 事件中心协议可从 IBM 支持网站下载。
Splunk 适用于 Microsoft 云服务的 Splunk 加载项是 Splunkbase 中提供的开源项目。

如果无法在 Splunk 实例中安装加载项,并且你在使用代理或在 Splunk Cloud 上运行,则可以使用 Azure Function for Splunk 将这些事件转发到 Splunk HTTP Event Collector。 事件中心的新消息会触发此工具。
SumoLogic 从事件中心收集 Azure 审核应用的日志中提供了有关设置 SumoLogic,以使用事件中心数据的说明。
ArcSight ArcSight Azure 事件中心智能连接器作为 ArcSight 智能连接器集合的一部分提供。
Syslog 服务器 若要将 Azure Monitor 数据直接流式传输到 Syslog 服务器,可以使用基于 Azure 函数的解决方案
LogRhythm 此 LogRhythm 网站提供了有关设置 LogRhythm 以从事件中心收集日志的说明。
Logz.io 有关详细信息,请参阅开始使用用于在 Azure 上运行的 Java 应用的 Logz.io 进行监视和日志记录

后续步骤