使用诊断设置监视 Azure Cache for Redis 数据
Azure 中的诊断设置用于收集资源日志。 Azure 资源发出资源日志,并提供与该资源的操作相关的各种频繁生成的数据。 这些日志是按请求捕获的,也称为“数据平面日志”。 有关 Azure 中功能的建议概述,请参阅 Azure Monitor 中的诊断设置。 这些日志的内容因资源类型而异。 在 Azure Cache for Redis 中,有两个选项可用于记录:
可用范围
层 |
“基本”、“标准”和“高级” |
缓存指标 |
是 |
连接日志 |
是 |
缓存指标
Azure Cache for Redis 会发出许多指标,例如服务器负载和每秒连接数,这些指标对记录很有用。 选择 AllMetrics 选项可以记录上述及其他缓存指标。 可以配置指标的保留时长。 请参阅此处,了解将缓存指标导出到存储帐户的示例。
连接日志
Azure Cache for Redis 使用 Azure 诊断设置来记录有关与缓存建立的客户端连接的信息。 记录并分析此诊断设置可帮助你了解谁正在连接到你的缓存,以及这些连接的时间戳。 日志数据可用于识别安全漏洞的范围以及进行安全审核。
连接日志记录的先决条件/限制
Basic、Standard 和 Premium 层
- 由于这些层中的连接日志包含每 10 秒拍摄一次的时间点快照,因此不会记录在 10 秒间隔内建立和删除的连接。
- 不会记录身份验证事件。
- 所有诊断设置最多可能需要 90 分钟才能开始流向所选目标。
- 启用连接日志可能会导致缓存实例的性能小幅下降。
- 将日志流式传输到 Azure Log Analytics 时,仅支持 Analytics 日志定价计划。 有关详细信息,请参阅 Azure Monitor 定价。
重要
选择日志时,可以选择特定的类别或类别组,即跨 Azure 服务预定义的日志分组。 使用类别组时,无法再配置保留设置。 如果需要确定连接日志的保留期,请改为选择“类别”部分中的项。
日志目标
可为 Azure Cache for Redis 实例启用诊断设置,并将资源日志发送到以下目标:
- Log Analytics 工作区 - 不需要与所监视的资源位于同一区域。
- 存储帐户 - 必须与缓存位于同一区域。 但是,不支持将高级存储帐户作为目标。
- 事件中心 - 启用虚拟网络时,诊断设置无法访问事件中心资源。 在事件中心内启用“允许受信任的 Microsoft 服务绕过此防火墙?”设置,以授予对事件中心资源的访问权限。 事件中心必须与缓存位于同一区域。
有关诊断要求的详细信息,请参阅诊断设置。
将诊断日志发送到任一目标时,需按照正常数据费率支付存储帐户和事件中心使用费。 计费是在 Azure Monitor 而不是 Azure Cache for Redis 中发生的。 将日志发送到 Log Analytics 时,只需为 Log Analytics 数据输入付费。
有关更多定价信息,请参阅 Azure Monitor 定价。
使用 Azure 门户启用连接日志记录
登录到 Azure 门户。
导航到你的 Azure Cache for Redis 帐户。 打开左侧“监视”部分下的“诊断设置”窗格 。 然后选择“添加诊断设置”。
在“诊断设置”窗格中,从“类别”中选择 ConnectedClientList。
有关所记录数据的更多详细信息,请参阅下面的连接日志的内容。
选择 ConnectedClientList 后,将日志发送到首选目的地。 在工作窗格中选择信息。
使用 REST API 启用连接日志记录
使用 Azure Monitor REST API 通过交互式控制台创建诊断设置。 有关详细信息,请参阅创建或更新。
请求
PUT https://management.chinacloudapi.cn/{resourceUri}/providers/Microsoft.Insights/diagnosticSettings/{name}?api-version=2017-05-01-preview
参数/标头 |
值/说明 |
name |
诊断设置的名称。 |
resourceUri |
subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.Cache/Redis/{CACHE_NAME} |
api-version |
2017-05-01-preview |
Content-Type |
application/json |
正文
{
"properties": {
"storageAccountId": "/subscriptions/df602c9c-7aa0-407d-a6fb-eb20c8bd1192/resourceGroups/apptest/providers/Microsoft.Storage/storageAccounts/appteststorage1",
"eventHubAuthorizationRuleId": "/subscriptions/1a66ce04-b633-4a0b-b2bc-a912ec8986a6/resourceGroups/montest/providers/microsoft.eventhub/namespaces/mynamespace/eventhubs/myeventhub/authorizationrules/myrule",
"eventHubName": "myeventhub",
"workspaceId": "/subscriptions/4b9e8510-67ab-4e9a-95a9-e2f1e570ea9c/resourceGroups/insights-integration/providers/Microsoft.OperationalInsights/workspaces/myworkspace",
"logs": [
{
"category": "ConnectedClientList",
"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}/proviers/Microsoft.Datadog/monitors/mydatadog
连接日志的内容
这些字段和属性显示在 ConnectedClientList
日志类别中。 在 Azure Monitor 中,日志收集在资源提供程序名称 MICROSOFT.CACHE
下的 ACRConnectedClientList
表中。
Azure 存储字段或属性 |
Azure Monitor 日志属性 |
说明 |
time |
TimeGenerated |
生成日志的 UTC 时间戳。 |
location |
Location |
在其中访问 Azure Cache for Redis 实例的位置(区域)。 |
category |
不适用 |
可用日志类别:ConnectedClientList 。 |
resourceId |
_ResourceId |
为其启用了日志的 Azure Cache for Redis 资源。 |
operationName |
OperationName |
与日志记录关联的 Redis 操作。 |
properties |
不适用 |
下面的行中描述了此字段的内容。 |
tenant |
CacheName |
Azure Cache for 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/E6761CE7-A7BC-442E-BBAE-950A121933B5/RESOURCEGROUPS/AZURE-CACHE/PROVIDERS/MICROSOFT.CACHE/REDIS/MYCACHE",
"Level": 4,
"operationName": "Microsoft.Cache/ClientList"
}
后续步骤
若要详细了解如何使用 Azure 门户、CLI 或 PowerShell 创建诊断设置,请参阅创建诊断设置以在 Azure 中收集平台日志和指标一文。