Azure Redis 缓存在 诊断设置中提供了两个监视选项:
- 缓存指标 记录有关缓存操作的 Azure Monitor 指标。
- 连接日志用于记录与缓存的连接。 Azure 根据请求捕获这些日志(也称为 数据平面日志)。 连接日志的内容因资源类型而异。
有关 Azure Monitor 监视和日志记录功能的概述,请参阅 Azure Monitor 中的诊断设置。
可用范围
层级 |
“基本”、“标准”和“高级” |
Enterprise 和 Enterprise Flash |
缓存度量值 |
是 |
是 |
连接日志 |
是 |
是 |
缓存度量值
Azure Redis 发出许多有用的指标,例如 服务器负载 和 每秒连接数。 有关 Azure Redis 指标的完整列表,请参阅 指标。
若要记录缓存指标,请根据层的说明在缓存诊断设置中启用 AllMetrics 选项。 可以配置指标的保留时间。 有关日志记录和导出指标的详细信息,请参阅 Azure Redis 缓存指标。
连接日志
Azure Cache for Redis 使用 Azure 诊断设置记录关于缓存的客户端连接信息。 在诊断设置中记录和分析此信息有助于了解谁连接到缓存以及何时连接到缓存。 可以使用日志数据进行安全审核,或确定安全问题的范围。
连接日志的实现以及生成的日志在 Azure Redis 不同层级中是相似的,但是基本层、标准层和高级层与企业层和企业闪存层有一些区别。
重要
- 在基本层、标准层和高级层中,连接日志记录轮询缓存中的当前客户端连接。 只要连接持续,同一客户端 IP 地址就可以重复出现。
- 在 Enterprise 和 Enterprise Flash 层中,日志记录侧重于连接 事件。 仅当连接事件或其他与连接相关的事件首次发生时,才会进行日志记录。
要求和限制
基本层、标准层和高级层缓存按 IP 地址轮询客户端连接,包括源自每个唯一 IP 地址的连接数。 这些日志不是累积的,而是表示以 10 秒间隔拍摄的时间点快照。 这些层不会记录成功或失败的身份验证事件或断开连接事件。
请记住以下限制:
- 由于这些层中的连接日志由每隔 10 秒拍摄的时间点快照组成,因此不会记录在 10 秒间隔内建立和删除的连接。
- 不会记录身份验证和断开连接事件。
- 诊断设置最多可能需要 90 分钟 才能开始流向所选目标。
- 连接日志记录可能会导致缓存性能下降。
- 若要将日志流式传输至 Log Analytics,仅支持 Analytics 日志定价方案。 有关详细信息,请参阅 Azure Monitor 定价。
企业级缓存和企业级闪存层缓存使用内置于 Redis Enterprise 的 审核连接事件 功能。 审核连接事件允许记录每个连接、断开连接和身份验证事件,包括失败的身份验证事件。
请记住以下限制:
- 使用 OSS 群集策略时,会从每个数据节点发出日志。 使用 企业 群集策略时,只有用作代理的节点才会发出日志。 这种差异只是建筑上的。 这两个版本都涵盖与缓存的所有连接。
- 数据丢失或缺少连接事件很少见,但可能。 数据丢失通常是由网络问题引起的。
- 断开连接日志可能无法完全稳定,并且可能会错过事件。
- 由于企业层上的连接日志是基于事件的,因此请考虑保留策略。 如果保留期设置为 10 天,则 15 天前启动的连接可能仍然存在,但该连接事件的日志不会保留。
- 如果使用 活动异地复制,则必须为异地复制组中的每个缓存实例单独配置日志记录。
- 诊断设置最多可能需要 90 分钟 才能开始流向所选目标。
- 连接日志记录可能会导致缓存性能下降。
重要
选择日志时,可以选择类别或类别组,这些类别组是跨 Azure 服务的日志预定义分组。 如果使用 类别组,则无法配置保留设置。 如果需要为连接日志设置保留期,请改为在 “类别 ”中选择该项。 有关详细信息,请参阅 类别组。
日志目标
为 Azure Redis 实例启用诊断设置时,可以将资源日志发送到以下目标:
发送到 Log Analytics 工作区。 此工作区无需与要监视的资源在同一区域。
存档到存储帐户。 存储帐户必须与缓存位于同一区域。
流式传输到事件中心。 事件中心必须与缓存位于同一区域。
如果启用了虚拟网络,诊断设置无法访问事件中心资源。 启用 “允许受信任的Microsoft服务绕过 Azure 事件中心中的此防火墙 设置,以授予对事件中心资源的访问权限。
发送到合作伙伴平台。 有关潜在合作伙伴的日志解决方案列表,请参阅 通过 Azure 原生集成扩展 Azure - 数据和存储。
将诊断日志发送到存储帐户或事件中心时,系统会为任一目标收取正常数据费率。 计费是在 Azure Monitor 而不是 Azure Cache for Redis 中发生的。 将日志发送到 Log Analytics 时,只需为 Log Analytics 数据引入付费。 有关定价的详细信息,请参阅 Azure Monitor 定价。
使用 Azure 门户启用诊断设置
在缓存的Azure 门户页上,在左侧导航窗格中的监视下,选择诊断设置。
在“诊断设置”页上,选择“添加诊断设置”。
在 “诊断设置 ”页上,输入诊断设置的名称,然后选择所需的监视选项。 例如,选择 AllMetrics 以记录所有指标和 allLogs 以记录 连接的客户端列表 和 MSEntra 身份验证审核日志。
选择一个或多个目标以及目标详细信息,然后选择“ 保存”。
在缓存的 Azure 门户 页上,在左侧导航窗格中的 监视 下,选择 诊断设置 - 指标 用于指标,或 诊断设置 - 审计 用于日志。
在“ 诊断设置 - 指标 或 诊断设置 - 审核 ”页上,选择“ 添加诊断设置”。
在指标或资源日志的 “诊断设置 ”页上,输入诊断设置的名称,然后选择所需的指标或资源日志选项。 在日志记录页上,可以选择 “连接事件 ”类别或 审核 或 allLogs 类别组。 上述任何选项都启用连接日志记录。
选择一个或多个目标以及目标详细信息,然后选择“ 保存”。
使用 REST API 启用连接日志记录
若要创建诊断设置,请在交互式控制台中使用 Azure Monitor REST API,如下所示。 有关详细信息,请参阅 诊断设置 - 创建或更新。
请求
PUT https://management.azure.com/{resourceUri}/providers/Microsoft.Insights/diagnosticSettings/{name}?api-version=2017-05-01-preview
参数/标头
Content-Type
: application/json
name
:诊断设置的名称
resourceUri
: subscriptions/<your subscription id>/resourceGroups/<cache resource group>/providers/Microsoft.Cache/Redis/<cache name>
api-version
: 2017-05-01-preview
示例正文
{
"properties": {
"storageAccountId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/apptest/providers/Microsoft.Storage/storageAccounts/appteststorage1",
"eventHubAuthorizationRuleId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/montest/providers/microsoft.eventhub/namespaces/mynamespace/eventhubs/myeventhub/authorizationrules/myrule",
"eventHubName": "myeventhub",
"workspaceId": "/subscriptions/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/resourceGroups/insights-integration/providers/Microsoft.OperationalInsights/workspaces/myworkspace",
"logs": [
{
"category": "ConnectedClientList",
"enabled": true,
"retentionPolicy": {
"enabled": false,
"days": 0
}
}
]
}
}
请求
PUT https://management.azure.com/{resourceUri}/providers/Microsoft.Insights/diagnosticSettings/{name}?api-version=2017-05-01-preview
参数/标头
Content-Type
: application/json
name
:诊断设置的名称
resourceUri
: subscriptions/<your subscription id>/resourceGroups/<cache resource group>/providers/Microsoft.Cache/RedisEnterprise/<cache name>
api-version
: 2017-05-01-preview
示例正文
{
"properties": {
"storageAccountId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/apptest/providers/Microsoft.Storage/storageAccounts/myteststorage",
"eventHubAuthorizationRuleID": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/montest/providers/microsoft.eventhub/namespaces/mynamespace/authorizationrules/myrule",
"eventHubName": "myeventhub",
"marketplacePartnerId": "/subscriptions/dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/resourceGroups/test-rg/providers/Microsoft.Datadog/monitors/mydatadog",
"workspaceId": "/subscriptions/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/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/Redis/{cacheName}
--name {logName}
--logs '[{"category": "ConnectedClientList","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
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
连接日志内容
以下字段和属性显示在日志类别中 ConnectedClientList
。 在 Azure Monitor 中,日志收集在资源提供程序名称 MICROSOFT.CACHE
下的 ACRConnectedClientList
表中。
Azure 存储字段或属性 |
Azure Monitor 日志属性 |
说明 |
time |
TimeGenerated |
生成日志时的 UTC 时间戳。 |
___location |
Location |
在其中访问了 Azure Redis 缓存的 Azure 区域。 |
category |
不适用 |
可用日志类别 ConnectedClientList 。 |
resourceId |
_ResourceId |
对其启用了日志的 Azure Redis 资源。 |
operationName |
OperationName |
与日志记录关联的 Redis 操作。 |
properties |
不适用 |
请参阅以下行。 |
tenant |
CacheName |
Azure Redis 实例的名称。 |
roleInstance |
RoleInstance |
记录客户端列表的角色实例。 |
connectedClients.ip |
ClientIp |
Redis 客户端 IP 地址。 |
connectedClients.privateLinkIpv6 |
PrivateLinkIpv6 |
Redis 客户端专用链接 IPv6 地址(如果适用)。 |
connectedClients.count |
ClientCount |
来自关联 IP 地址的 Redis 客户端连接数。 |
示例存储帐户日志
发送到存储帐户的日志的内容可能如以下示例所示。
{
"time": "2021-08-05T21:04:58.0466086Z",
"___location": "canadacentral",
"category": "ConnectedClientList",
"properties": {
"tenant": "mycache",
"connectedClients": [
{
"ip": "192.123.43.36",
"count": 86
},
{
"ip": "10.1.1.4",
"privateLinkIpv6": "fd40:8913:31:6810:6c31:200:a01:104",
"count": 1
}
],
"roleInstance": "1"
},
"resourceId": "/SUBSCRIPTIONS/eeee4efe-ff5f-aa6a-bb7b-cccccc8c8c8c/RESOURCEGROUPS/AZURE-CACHE/PROVIDERS/MICROSOFT.CACHE/REDIS/MYCACHE",
"Level": 4,
"operationName": "Microsoft.Cache/ClientList"
}
这些字段和属性显示在 ConnectionEvents
日志类别中。 在 Azure Monitor 中,日志收集在资源提供程序名称 MICROSOFT.CACHE
下的 REDConnectionEvents
表中。
Azure 存储字段或属性 |
Azure Monitor 日志属性 |
说明 |
time |
TimeGenerated |
生成日志时的 UTC 时间戳。 |
___location |
Location |
在其中访问了 Azure Redis 缓存的 Azure 区域。 |
category |
不适用 |
可用日志类别 ConnectedClientList 。 |
resourceId |
_ResourceId |
对其启用了日志的 Azure Redis 资源。 |
operationName |
OperationName |
与日志记录关联的 Redis 操作。 |
properties |
不适用 |
请参阅以下行。 |
eventEpochTime |
EventEpochTime |
事件发生时,UTC UNIX 时间戳或自 1970 年 1 月 1 日起的秒数。 可以使用 Log Analytics 工作区中的函数unixtime_seconds_todatetime 将时间戳转换为datetime 格式。 |
clientIP |
ClientIP |
Redis 客户端 IP 地址。 如果使用 Azure 存储,则 IP 地址是基于缓存类型的 IPv4 或专用链接 IPv6 格式。 如果使用 Log Analytics,则此结果始终位于 IPv4 中,因为有单独的 IPv6 字段。 |
不适用 |
PrivateLinkIPv6 |
Redis 客户端专用链接 IPv6 地址(仅在同时使用专用链接和 Log Analytics 时发出)。 |
id |
ConnectionId |
Redis 分配的唯一连接 ID。 |
eventType |
EventType |
连接事件的类型: new_conn 、 auth 或 close_conn 。 |
eventStatus |
EventStatus |
身份验证请求的结果作为状态代码。 仅适用于身份验证事件。 |
说明
如果使用专用链接,则仅记录 IPv6 地址,除非将数据流式传输到 Log Analytics。 可以使用 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/ffff5f5f-aa6a-bb7b-cc8c-dddddd9d9d9d/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/ffff5f5f-aa6a-bb7b-cc8c-dddddd9d9d9d/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/ffff5f5f-aa6a-bb7b-cc8c-dddddd9d9d9d/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 门户、Azure CLI 或 Azure PowerShell 创建诊断设置的详细信息,请参阅 创建诊断设置以收集 Azure 中的平台日志和指标。