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

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

可用性範圍

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

快取計量

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

連線ion 記錄

Azure Cache for Redis 會使用 Azure 診斷設定來記錄用戶端連線到快取的資訊。 記錄和分析此診斷設定可協助您瞭解誰正在連線到快取和這些連線的時間戳記。 記錄資料可用來識別安全性缺口的範圍,以及用於安全性稽核目的。

Azure Cache for Redis 層之間的差異

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

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

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

重要

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

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

基本、標準和進階層級

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

企業和企業 Flash 層

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

注意

一律可以使用 INFO CLIENT 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. 在 [ 診斷設定] 窗格中,從 [類別 ] 選取 [連線edClientList ]。

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

  4. 選取 連線edClientList 之後,請將記錄傳送至您慣用的目的地。 選取工作窗格中的資訊。

    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 分鐘的時間,記錄才會顯示在記錄檔 Analtyics 中。

以下是一些做為模型的基本查詢。

  • Azure Cache for Redis 用戶端連線每小時在指定的 IP 位址範圍內:
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 中建立診斷設定以收集平臺記錄和計量一文。