你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用诊断设置监视 Azure 托管 Redis(预览版)

Azure 中的诊断设置用于收集资源日志。 Azure 资源发出资源日志,并提供与该资源的操作相关的各种频繁生成的数据。 这些日志是按请求捕获的,也称为“数据平面日志”。 有关 Azure 中功能的建议概述,请参阅 Azure Monitor 中的诊断设置。 这些日志的内容因资源类型而异。 在 Azure 托管 Redis(预览版)中,有两个选项可用于记录:

缓存指标

Azure 托管 Redis(预览版)会发出许多指标,例如服务器负载每秒连接数,这些指标对记录很有用。 选择 AllMetrics 选项可以记录上述及其他缓存指标。 可以配置指标的保留时长。 请参阅此处,了解将缓存指标导出到存储帐户的示例

连接日志

Azure 托管 Redis 使用 Azure 诊断设置来记录有关与缓存建立的客户端连接的信息。 记录并分析此诊断设置可帮助你了解谁正在连接到你的缓存,以及这些连接的时间戳。 日志数据可用于识别安全漏洞的范围以及进行安全审核。

Azure 托管 Redis 使用内置于 Redis Enterprise 堆栈中的审核连接事件功能。 审核连接事件允许记录每个连接、断开连接和身份验证事件,包括失败的身份验证事件。

重要

Azure 托管 Redis 中的日志记录侧重于每个连接事件。 仅在实际事件第一次发生时记录日志。

连接日志记录的先决条件/限制

  • 使用 OSS 群集策略时,会从每个数据节点发出日志。 使用 Enterprise 群集策略时,只有用作代理的节点才会发出日志。 这两个版本仍然涵盖与缓存的所有连接。 这只是一个体系结构差异。
  • 数据丢失(即丢失连接事件)很少见,但仍有可能发生。 数据丢失通常是由网络问题引起的。
  • 断开连接日志尚未完全稳定,可能会遗漏事件。
  • 由于 Azure 托管 Redis 上的连接日志是基于事件的,因此请注意你的保留策略。 例如,如果保留期设置为 10 天,而连接事件发生在 15 天前,则该连接可能仍然存在,但不会保留该连接的日志。
  • 如果使用活动异地复制,则必须单独为异地复制组中的每个缓存实例配置日志记录。
  • 所有诊断设置最多可能需要 90 分钟才能开始流向所选目标。
  • 启用连接日志可能会导致 Redis 实例的性能小幅下降。

注意

始终可以使用 INFOCLIENT LIST 命令来检查按需连接到缓存实例的人员。

重要

选择日志时,可以选择特定的类别类别组,即跨 Azure 服务预定义的日志分组。 使用类别组时,无法再配置保留设置。 如果需要确定连接日志的保留期,请改为选择“类别”部分中的项。

日志目标

你可以为 Azure 托管 Redis 实例启用诊断设置,并将资源日志发送到以下目标:

  • Log Analytics 工作区 - 不需要与所监视的资源位于同一区域。
  • 存储帐户 - 必须与缓存位于同一区域。 但是,不支持将高级存储帐户作为目标。
  • 事件中心 - 启用虚拟网络时,诊断设置无法访问事件中心资源。 在事件中心内启用“允许受信任的 Microsoft 服务绕过此防火墙?”设置,以授予对事件中心资源的访问权限。 事件中心必须与缓存位于同一区域。
  • 合作伙伴解决方案 - 可在此处找到潜在合作伙伴日志记录解决方案的列表

有关诊断要求的详细信息,请参阅诊断设置

将诊断日志发送到任一目标时,需按照正常数据费率支付存储帐户和事件中心使用费。 计费是在 Azure Monitor 中而不是 Azure 托管 Redis 中发生的。 将日志发送到 Log Analytics 时,只需为 Log Analytics 数据输入付费。

有关更多定价信息,请参阅 Azure Monitor 定价

使用 Azure 门户启用连接日志记录

  1. 登录到 Azure 门户

  2. 导航到你的 Azure 托管 Redis 帐户。 打开左侧“监控”部分下的“诊断设置 - 审核”窗格。 然后选择“添加诊断设置”。 诊断设置屏幕截图 - 在“资源”菜单中选择审核。

  3. 在“诊断设置 - 审核”窗格中,从“类别”中选择“连接事件”。

    有关所记录数据的更多详细信息,请参阅下面的连接日志的内容

  4. 选择连接事件后,将日志发送到首选目的地。 在工作窗格中选择信息。 显示在工作窗格中检查连接事件的屏幕截图。

使用 REST API 启用连接日志记录

使用 Azure Monitor REST API 通过交互式控制台创建诊断设置。 有关详细信息,请参阅创建或更新

请求

PUT https://management.azure.com/{resourceUri}/providers/Microsoft.Insights/diagnosticSettings/{name}?api-version=2017-05-01-preview

头文件

参数/标头 值/说明
name 诊断设置的名称。
resourceUri subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.Cache/RedisEnterprise/{CACHE_NAME}/databases/default
api-version 2017-05-01-preview
Content-Type application/json

正文

{ 
    "properties": {
      "storageAccountId": "/subscriptions/df602c9c-7aa0-407d-a6fb-eb20c8bd1192/resourceGroups/apptest/providers/Microsoft.Storage/storageAccounts/myteststorage",
      "eventHubAuthorizationRuleID": "/subscriptions/1a66ce04-b633-4a0b-b2bc-a912ec8986a6/resourceGroups/montest/providers/microsoft.eventhub/namespaces/mynamespace/authorizationrules/myrule", 
      "eventHubName": "myeventhub",
      "marketplacePartnerId": "/subscriptions/abcdeabc-1234-1234-ab12-123a1234567a/resourceGroups/test-rg/providers/Microsoft.Datadog/monitors/mydatadog",
      "workspaceId": "/subscriptions/4b9e8510-67ab-4e9a-95a9-e2f1e570ea9c/resourceGroups/insights integration/providers/Microsoft.OperationalInsights/workspaces/myworkspace",
      "logs": [
        {
          "category": "ConnectionEvents",
          "enabled": true,
          "retentionPolicy": {
            "enabled": false,
            "days": 0
          }
        }
      ]
    }
}

使用 Azure CLI 启用连接日志记录

在 Azure CLI 中使用 az monitor diagnostic-settings create 命令来创建诊断设置。 有关命令和参数说明的详细信息,请参阅创建诊断设置以将平台日志和指标发送到不同的目标。 此示例演示如何使用 Azure CLI 将数据流式传输到四个不同的端点:

az monitor diagnostic-settings create 
    --resource /subscriptions/{subscriptionID}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/redisenterprise/{cacheName}/databases/default
    --name {logName}
    --logs '[{"category": "ConnectionEvents","enabled": true,"retentionPolicy": {"enabled": false,"days": 0}}]'
    --event-hub {eventHubName}
    --event-hub-rule /subscriptions/{subscriptionID}/resourceGroups/{resourceGroupName}/providers/microsoft.eventhub/namespaces/{eventHubNamespace}/authorizationrule/{ruleName}
    --storage-account /subscriptions/{subscriptionID}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{storageAccountName}
    --workspace /subscriptions/{subscriptionID}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{logAnalyticsWorkspaceName}
    --marketplace-partner-id/subscriptions/{subscriptionID}/resourceGroups{resourceGroupname}/providers/Microsoft.Datadog/monitors/mydatadog

连接日志的内容

这些字段和属性显示在 ConnectionEvents 日志类别中。 在 Azure Monitor 中,日志收集在资源提供程序名称 MICROSOFT.CACHE 下的 REDConnectionEvents 表中。

Azure 存储字段或属性 Azure Monitor 日志属性 说明
time TimeGenerated 捕获事件日志时的时间戳 (UTC)。
location Location 在其中访问 Azure 托管 Redis 实例的位置(区域)。
category 不适用 可用日志类别:ConnectionEvents
resourceId _ResourceId 启用了日志的 Azure 托管 Redis 资源。
operationName OperationName 与日志记录关联的 Redis 操作。
properties 不适用 下面的行中描述了此字段的内容。
eventEpochTime EventEpochTime UTC 事件发生时的 UNIX 时间戳(自 1970 年 1 月 1 日以来的秒数)。 可以使用日志分析工作区中的函数 unixtime_seconds_todatetime 将时间戳转换为日期时间格式。
clientIP ClientIP Redis 客户端 IP 地址。 如果使用 Azure 存储,IP 地址是 IPv4 或专用链接 IPv6 格式,具体取决于缓存类型。 如果使用 Log Analytics,则结果会始终采用 IPv4 格式,因为会提供单独的 IPv6 字段。
不适用 PrivateLinkIPv6 Redis 客户端专用链接 IPv6 地址(仅在同时使用专用链接和日志分析时发出)。
id ConnectionId Redis 分配的唯一连接 ID。
eventType EventType 连接事件的类型(new_conn、auth 或 close_conn)。
eventStatus EventStatus 身份验证请求的结果作为状态代码(仅适用于身份验证事件)。

注意

如果使用专用链接,则只会记录 IPv6 地址(除非你将数据流式传输到日志分析)。 可以通过查看 IPv6 地址中最后四个字节的数据,将 IPv6 地址转换为等效的 IPv4 地址。 例如,在专用链接 IPv6 地址“fd40:8913:31:6810:6c31:200:a01:104”中,十六进制的最后四个字节为“0a”、“01”、“01”和“04”。 (请注意,每一个冒号后的前导零省略。)这些前导零对应于十进制中的“10”、“1”、“1”和“4”,这为我们提供了 IPv4 地址“10.1.1.4”。

示例存储帐户日志

如果将日志发送到存储帐户,则连接事件的日志如下所示:

    {
        "time": "2023-01-24T10:00:02.3680050Z",
        "resourceId": "/SUBSCRIPTIONS/4A1C78C6-5CB1-422C-A34E-0DF7FCB9BD0B/RESOURCEGROUPS/TEST/PROVIDERS/MICROSOFT.CACHE/REDISENTERPRISE/AUDITING-SHOEBOX/DATABASES/DEFAULT",
        "category": "ConnectionEvents",
        "location": "westus",
        "operationName": "Microsoft.Cache/redisEnterprise/databases/ConnectionEvents/Read",
        "properties": {
            "eventEpochTime": 1674554402,
            "id": 6185063009002,
            "clientIP": "20.228.16.39",
            "eventType": "new_conn"
        }
    }

身份验证事件的日志如下所示:

 {
        "time": "2023-01-24T10:00:02.3680050Z",
        "resourceId": "/SUBSCRIPTIONS/4A1C78C6-5CB1-422C-A34E-0DF7FCB9BD0B/RESOURCEGROUPS/TEST/PROVIDERS/MICROSOFT.CACHE/REDISENTERPRISE/AUDITING-SHOEBOX/DATABASES/DEFAULT",
        "category": "ConnectionEvents",
        "location": "westus",
        "operationName": "Microsoft.Cache/redisEnterprise/databases/ConnectionEvents/Read",
        "properties": {
            "eventEpochTime": 1674554402,
            "id": 6185063009002,
            "clientIP": "20.228.16.39",
            "eventType": "auth",
            "eventStatus": 8
        }
    }

断开连接事件的日志如下所示:

    {
        "time": "2023-01-24T10:00:03.3680050Z",
        "resourceId": "/SUBSCRIPTIONS/4A1C78C6-5CB1-422C-A34E-0DF7FCB9BD0B/RESOURCEGROUPS/TEST/PROVIDERS/MICROSOFT.CACHE/REDISENTERPRISE/AUDITING-SHOEBOX/DATABASES/DEFAULT",
        "category": "ConnectionEvents",
        "location": "westus",
        "operationName": "Microsoft.Cache/redisEnterprise/databases/ConnectionEvents/Read",
        "properties": {
            "eventEpochTime": 1674554402,
            "id": 6185063009002,
            "clientIP": "20.228.16.39",
            "eventType": "close_conn"
        }
    }

后续步骤

若要详细了解如何使用 Azure 门户、CLI 或 PowerShell 创建诊断设置,请参阅创建诊断设置以在 Azure 中收集平台日志和指标一文。