重要
Azure Cache for Redis 宣布了所有 SKU 的淘汰時間表。 建議您儘快將現有的 Azure Cache for Redis 執行個體移至 Azure 受控 Redis 。
有關退休的更多詳細資訊:
Azure Cache for Redis 在 診斷設定中提供兩個監視選項:
-
快取計量 會記錄有關快取作業的 Azure 監視器計量。
-
連線記錄會記錄與快取的連線。 Azure 會依要求擷取這些記錄,也稱為 數據平面記錄。 線上記錄的內容會因資源類型而異。
如需 Azure 監視器監視和記錄功能的概觀,請參閱 Azure 監視器中的診斷設定。
可用性範圍
| 層 |
基本、標準與進階 |
Enterprise 和 Enterprise Flash |
| 快取度量 |
是的 |
是的 |
| 連線記錄 |
是的 |
是的 |
快取度量
Azure Redis 會發出許多有用的計量,例如 每秒的伺服器負載 和 連線。 如需 Azure Redis 計量的完整清單,請參閱 計量。
若要記錄快取計量,請根據您的階層指示,在您的快取診斷設定中啟用 AllMetrics 選項。 您可以設定保留計量的時間長度。 如需記錄和導出計量的詳細資訊,請參閱 Azure Cache for Redis 計量。
連線記錄
Azure Cache for Redis 會使用 Azure 診斷設定來記錄有關快取的用戶端連線資訊。 在診斷設定中記錄和分析這項資訊,可協助您瞭解誰連線到您的快取和何時。 您可以使用記錄數據進行安全性稽核,或識別安全性問題的範圍。
連線記錄的實作和產生的記錄在 Azure Redis 的各層級中類似,但基本、標準和進階層與 Enterprise 和 Enterprise Flash 層存在一些差異。
重要
- 基本、標準和進階層中,連線記錄會輪詢快取中的目前用戶端連線。 只要相同的用戶端 IP 位址持續連線,就可以重複出現。
- 在 Enterprise 和 Enterprise Flash 層中,記錄著重於連線 事件。 只有在連線事件或其他連線相關事件第一次發生時,才會進行記錄。
需求和限制
基本、標準和進階層快取會依 IP 位址輪詢用戶端連線,包括源自每個唯一 IP 位址的連線數目。 這些記錄不是累積的,而是代表以10秒間隔拍攝的時間點快照集。 這些層不會記錄成功或失敗的驗證事件或中斷連線事件。
請記住下列限制:
- 由於這些層中的連線記錄包含每隔 10 秒拍攝的時間點快照集,因此不會記錄在 10 秒間隔內建立和移除的連接。
- 不會記錄驗證和中斷連線事件。
- 診斷設定最多可能需要 90 分鐘 的時間,才能開始流向您選取的目的地。
- 連線記錄可能會導致快取效能略有下降。
- 若要將記錄串流至Log Analytics,僅支援 Analytics 記錄定價方案。 如需詳細資訊,請參閱 Azure 監視器計量價格。
Enterprise 和 Enterprise Flash 層快取會使用 Redis Enterprise 內建的稽核連線事件功能。 稽核連線事件允許記錄每個連線、中斷連線和驗證事件,包括失敗的驗證事件。
請記住下列限制:
- 當您使用 OSS 叢集原則時,會從每個數據節點發出記錄。 當您使用 企業 叢集原則時,只有做為 Proxy 的節點會發出記錄。 這個差異只是架構。 這兩個版本都涵蓋了與快取相關的所有連線。
- 數據遺失或遺失連接事件很少見,但可能。 資料遺失通常是由網路問題所造成。
- 中斷連線記錄可能無法完全穩定,而且可能會遺漏事件。
- 因為企業層上的連線記錄是以事件為基礎,請考慮保留原則。 如果保留期設定為 10 天,則 15 天前開始的連線可能仍然存在,但該連線事件的記錄不會保留。
- 如果您使用主動式地理複寫,您必須為異地複寫群組中的每個快取實例個別設定記錄功能。
- 診斷設定最多可能需要 90 分鐘 的時間,才能開始流向您選取的目的地。
- 連線記錄可能會導致快取效能略有下降。
重要
當您選取記錄時,可以選擇 [類別 ] 或 [ 類別] 群組,這是跨 Azure 服務預先定義的記錄群組。 如果您使用 類別群組,則無法設定保留設定。 如果您需要設定連線記錄的保留期間,請改為選取 [類別 ] 中的專案。 如需詳細資訊,請參閱 類別目錄群組。
記錄目的地
當您啟用 Azure Redis 實例的診斷設定時,您可以將資源記錄傳送至下列目的地:
傳送至 Log Analytics 工作區。 工作區不必位於與受監視資源相同的區域中。
封存至儲存體帳戶。 儲存體帳戶必須位於與快取相同的區域中。
串流處理至事件中樞。 事件中樞所在的區域必須與快取相同。
如果已啟用虛擬網路,診斷設定就無法存取事件中樞資源。 啟用 允許受信任的 Microsoft 服務略過此防火牆設定,以授予 Azure 事件中樞資源的存取權。
傳送至合作夥伴解決方案。 如需潛在的合作夥伴記錄解決方案清單,請參閱 使用 Azure 原生整合擴充 Azure - 資料和記憶體。
當您將診斷記錄傳送至記憶體帳戶或事件中樞時,您會針對任一目的地收取一般數據費率。 您的計費會使用 Azure 監視器,而不是 Azure Cache for Redis。 當您將記錄傳送至 Log Analytics 時,您只需支付 Log Analytics 數據擷取的費用。 如需詳細資訊,請參閱 Azure 監視器定價。
使用 Azure 入口網站啟用診斷設定
在快取的 Azure 入口網站頁面上,選取左側瀏覽窗格中 [監視] 底下的 [診斷設定]。
在 [診斷設定] 頁面上,選取 [新增診斷設定]。
在 [ 診斷設定 ] 頁面上,輸入診斷設定的名稱,然後選取您想要的監視選項。 例如,選取 [AllMetrics ] 以記錄所有計量和 allLogs ,以記錄 連線的用戶端清單 和 MSEntra 驗證稽核記錄。
選取一或多個目的地和目的地詳細數據,然後選取 [ 儲存]。
在快取的 Azure 入口網站 頁面上,於左側瀏覽窗格中的 監視 底下,選取 診斷設定 - 計量 ,以查看計量或選取 診斷設定 - 記錄稽核 ,以查看記錄。
在 [ 診斷設定 - 計量 或 診斷設定 - 稽核 ] 頁面上,選取 [新增診斷設定]。
在計量或資源記錄的 [ 診斷設定 ] 頁面上,輸入診斷設定的名稱,然後選取您想要的計量或資源記錄選項。 在記錄頁面上,您可以選取 [ 連線事件 ] 類別目錄或 稽核 或 allLogs 類別群組。 上述任一選擇都啟用連線記錄。
選取一或多個目的地和目的地詳細數據,然後選取 [ 儲存]。
使用 REST API 啟用連線記錄
若要建立診斷設定,請在互動式控制台中使用 Azure 監視器 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 監視器中,記錄會被收集在資源提供者名稱 ACRConnectedClientList 下的 MICROSOFT.CACHE 資料表中。
| Azure 儲存體欄位或屬性 |
Azure 監視器記錄屬性 |
描述 |
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 監視器中,記錄會被收集在資源提供者名稱 REDConnectionEvents 下的 MICROSOFT.CACHE 資料表中。
| Azure 儲存體欄位或屬性 |
Azure 監視器記錄屬性 |
描述 |
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 工作區中的 函式,將時間戳轉換成 datetime 格式 unixtime_seconds_todatetime 。 |
clientIP |
ClientIP |
Redis 用戶端 IP 位址。 如果您使用 Azure 記憶體,IP 位址是以快取類型為基礎的 IPv4 或 Private Link IPv6 格式。 如果您使用 Log Analytics,此結果一律在 IPv4 中,因為有個別的 IPv6 字段。 |
| 不適用 |
PrivateLinkIPv6 |
只有在同時使用 Private Link 和 Log Analytics 時,才會發出 Redis 用戶端私人連結 IPv6 位址。 |
id |
ConnectionId |
Redis 指派的唯一連線識別碼。 |
eventType |
EventType |
連線事件的類型: new_conn、 auth或 close_conn。 |
eventStatus |
EventStatus |
驗證要求的結果做為狀態代碼。 僅適用於驗證事件。 |
附註
如果您使用 Private Link,除非您將數據串流至 Log Analytics,否則只會記錄 IPv6 位址。 您可以使用 IPv6 位址中的最後四個字節數據,將 IPv6 位址轉換成對等的 IPv4 位址。 例如,在 Private Link 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 中的平台記錄和計量。