共用方式為


使用診斷設定監視 Azure Cache for Redis 資料 (機器翻譯)

Azure 中的診斷設定可用來收集資源記錄。 Azure 資源會發出資源記錄,並提供該資源作業的豐富、經常性資料。 會針對每個要求擷取這些記錄,這些記錄也稱為「資料平面記錄」。 如需 Azure 中功能的建議概觀,請參閱 Azure 監視器中的診斷設定。 這些記錄的內容會依資源類型而有所不同。 在 Azure Cache for Redis 中,有兩個可用的記錄選項:

可用性範圍

基本、標準與進階 Enterprise 和 Enterprise Flash
快取計量 Yes Yes
連線記錄 Yes Yes

快取計量

Azure Cache for Redis 會發出許多計量,例如伺服器負載每秒連線數,這些計量對記錄很有用。 選取 [AllMetrics] 選項,即可記錄這些和其他快取計量。 您可以設定計量的保留時間長度。 如需將快取計量匯出至儲存體帳戶的範例,請參閱這裡。

連線記錄

Azure Cache for Redis 使用 Azure 診斷設定,將用戶端連線的資訊記錄至快取。 透過記錄和分析此診斷設定,便可了解誰正在連結至您的快取,以及這些連線的時間戳記。 記錄資料可用於識別安全性缺口的範圍,並用於安全性稽核目的。

Azure Cache for Redis 層之間的差異

連線記錄的實作在階層之間稍有不同:

  • 基本、標準和進階層快取會依 IP 位址輪詢用戶端連線,包括源自每個唯一 IP 位址的連線數目。 這些並非累計的記錄, 而是代表每 10 秒擷取一次的時間點快照集。 驗證事件 (成功和失敗) 和中斷連線事件都不會記錄在這些層中。
  • 企業和企業 Flash 層快取會使用 Redis Enterprise 內建的稽核連線事件功能。 稽核連線事件允許記錄每個連線、中斷連線和驗證事件,包括失敗的驗證事件。

產生的連線記錄在各階層之間看起來很類似,但有一些差異。 本文稍後會更詳細示範這兩種格式。

重要

基本、標準和進階層中的連線記錄會輪詢快取中的目前用戶端連線。 相同的用戶端 IP 位址會反覆出現。 企業和企業 Flash 層中的記錄著重於每個連線事件。 只有在第一次發生實際事件時,才會發生記錄。

連線記錄的必要條件/限制

基本、標準和進階層級

  • 由於這些層中的連線記錄包含每隔 10 秒所擷取的時間點快照集,因此不會記錄在 10 秒間隔內建立和移除的連線。
  • 不會記錄驗證事件。
  • 所有診斷設定最多可能需要 90 分鐘的時間,才能開始流向您選取的目的地。
  • 啟用連線記錄可能會導致快取執行個體效能降低。
  • 將記錄串流至 Azure Log Analytics 時,僅支援 Analytics 記錄價格方案。 如需詳細資訊,請參閱 Azure 監視器計量價格

企業和 Enterprise Flash 層

  • 使用 OSS 叢集原則時,會從每個資料節點發出記錄。 當您使用企業叢集原則時,只有做為 Proxy 的節點會發出記錄。 這兩個版本仍然涵蓋與快取的所有連線。 這只是架構差異。
  • 資料遺失 (也就是遺失連線事件) 很少見,但仍有發生的可能性。 資料遺失通常是由網路問題所造成。
  • 中斷連線記錄仍不是完全穩定的狀態,而且可能會遺漏事件。
  • 企業層上的連線記錄是以事件為基礎,因此請留意保留原則。 例如,如果保留設定為 10 天,且連線事件在 15 天前發生,該連線仍可能存在,但該連線的記錄不會保留下來。
  • 如果使用作用中異地複寫,則必須個別針對異地復寫群組中的每個快取執行個體設定記錄。
  • 所有診斷設定最多可能需要 90 分鐘的時間,才能開始流向您選取的目的地。
  • 啟用連線記錄可能會導致快取執行個體效能降低。

注意

一律可以使用 INFOCLIENT LIST 命令,以視需要確認連線到快取執行個體的人員。

重要

選取記錄時,您可以選擇特定的類別類別群組,這是跨 Azure 服務預先定義的記錄群組。 當您使用類別群組時,就無法再進行保留設定。 如果您需要判斷連線記錄的保留期間,請改為選取 [類別] 區段中的項目。

記錄目的地

您可開啟 Azure Cache for Redis 執行個體的診斷設定,並將資源記錄傳送至下列目的地:

  • Log Analytics 工作區 - 所在區域無須與受監視的資源相同。
  • 儲存體帳戶 - 所在區域必須與快取相同。 不過,不支援將進階儲存體帳戶作為目的地。
  • 事件中樞 - 啟用虛擬網路時,診斷設定無法存取事件中樞資源。 在事件中樞啟用 [允許受信任的 Microsoft 服務略過此防火牆嗎?] 設定,授與事件中樞資源的存取權。 事件中樞所在的區域必須與快取相同。
  • 合作夥伴解決方案 - 您可以在這裡找到潛在的合作夥伴記錄解決方案清單

如需診斷需求的詳細資訊,請參閱診斷設定

將診斷記錄傳送至任一目的地時,系統會使用儲存體帳戶和事件中樞使用量的一般資料費率來計費。 系統會針對 Azure 監視器計費,而不是 Azure Cache for Redis。 將記錄傳送至 Log Analytics 時,您只需支付 Log Analytics 資料擷取的費用。

如需詳細定價資訊,請參閱 Azure 監視器定價

使用 Azure 入口網站啟用連線記錄

  1. 登入 Azure 入口網站

  2. 瀏覽至您的 Azure Cache for Redis 帳戶。 開啟左側 [監視] 區段下的 [診斷設定] 窗格。 接著選取 [新增診斷設定]

    Select diagnostics

  3. 在 [診斷設定] 窗格中,選取 [類別][ConnectedClientList]

    如需所記錄資料的詳細資訊,請參閱以下連線記錄的內容

  4. 選取 [ConnectedClientList] 之後,請將記錄傳送至偏好的目的地。 在工作窗格中選取該資訊。

    Select enable resource-specific

使用 REST API 啟用連線記錄

使用 Azure 監視器 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/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 啟用連線記錄

使用 az monitor diagnostic-settings create 命令,透過 Azure CLI 建立診斷設定。 如需命令與參數說明的詳細資訊,請參閱建立診斷設定,將平台記錄與計量傳送至不同的目的地。 此範例示範如何使用 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 監視器中,系統會將記錄收集在資料表 ACRConnectedClientList 中的資源提供者名稱 MICROSOFT.CACHE 下。

Azure 儲存體欄位或屬性 Azure 監視器記錄屬性 描述
time TimeGenerated 產生記錄時的時間戳記 (UTC)。
location Location Azure Cache for Redis 執行個體的存取地點 (區域)。
category n/a 可用的記錄類別:ConnectedClientList
resourceId _ResourceId 啟用記錄的 Azure Cache for Redis 資源。
operationName OperationName 記錄檔記錄的相關 Redis 作業。
properties n/a 此欄位的內容說明於下列資料列中。
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"
}

Log Analytics 查詢

注意

如需如何使用 Azure Log Analytics 的教學課程,請參閱 Azure 監視器中的 Log Analytics 概觀。 請記住,記錄最多可能需要 90 分鐘的時間,才會顯示在 Log Analtyics 中。

以下幾個基本查詢可作為模型。

  • 指定 IP 位址範圍內每小時的 Azure Cache for Redis 用戶端連線數目:
let IpRange = "10.1.1.0/24";
ACRConnectedClientList
// For particular datetime filtering, add '| where TimeGenerated between (StartTime .. EndTime)'
| where ipv4_is_in_range(ClientIp, IpRange)
| summarize ConnectionCount = sum(ClientCount) by TimeRange = bin(TimeGenerated, 1h)
  • 已連結快取的 Redis 用戶端唯一 IP 位址:
ACRConnectedClientList
| summarize count() by ClientIp

下一步

如需有關使用 Azure 入口網站、CLI 或 PowerShell 建立診斷設定的詳細資訊,請參閱建立診斷設定以收集 Azure 中的平台記錄和計量一文。