使用診斷設定監視 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 分鐘的時間,才能開始流向您選取的目的地。
- 啟用連線記錄可能會導致快取執行個體效能降低。
重要
選取記錄時,您可以選擇特定的類別或類別群組,這是跨 Azure 服務預先定義的記錄群組。 當您使用類別群組時,就無法再進行保留設定。 如果您需要判斷連線記錄的保留期間,請改為選取 [類別] 區段中的項目。
記錄目的地
您可開啟 Azure Cache for Redis 執行個體的診斷設定,並將資源記錄傳送至下列目的地:
- Log Analytics 工作區 - 所在區域無須與受監視的資源相同。
- 儲存體帳戶 - 所在區域必須與快取相同。 不過,不支援將進階儲存體帳戶作為目的地。
- 事件中樞 - 啟用虛擬網路時,診斷設定無法存取事件中樞資源。 在事件中樞啟用 [允許受信任的 Microsoft 服務略過此防火牆嗎?] 設定,授與事件中樞資源的存取權。 事件中樞所在的區域必須與快取相同。
- 合作夥伴解決方案 - 您可以在這裡找到潛在的合作夥伴記錄解決方案清單
如需診斷需求的詳細資訊,請參閱診斷設定。
將診斷記錄傳送至任一目的地時,系統會使用儲存體帳戶和事件中樞使用量的一般資料費率來計費。 系統會針對 Azure 監視器計費,而不是 Azure Cache for Redis。 將記錄傳送至 Log Analytics 時,您只需支付 Log Analytics 資料擷取的費用。
如需詳細定價資訊,請參閱 Azure 監視器定價。
使用 Azure 入口網站啟用連線記錄
登入 Azure 入口網站。
瀏覽至您的 Azure Cache for Redis 帳戶。 開啟左側 [監視] 區段下的 [診斷設定] 窗格。 接著選取 [新增診斷設定]。
在 [診斷設定] 窗格中,選取 [類別] 的 [ConnectedClientList]。
如需所記錄資料的詳細資訊,請參閱以下連線記錄的內容。
選取 [ConnectedClientList] 之後,請將記錄傳送至偏好的目的地。 在工作窗格中選取該資訊。
登入 Azure 入口網站。
瀏覽至您的 Azure Cache for Redis 帳戶。 開啟左側 [監視] 區段下的 [診斷設定 - 稽核] 窗格。 接著選取 [新增診斷設定]。
在 [診斷設定 - 稽核] 窗格中,選取 [類別] 中的 [連線事件]。
如需所記錄資料的詳細資訊,請參閱以下連線記錄的內容。
選取 [連線事件] 之後,請將記錄傳送至偏好的目的地。 在工作窗格中選取該資訊。
使用 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 監視器 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/RedisEnterprise/{CACHE_NAME}/databases/default |
api-version |
2017-05-01-preview |
Content-Type |
application/json |
本文
{
"properties": {
"storageAccountId": "/subscriptions/df602c9c-7aa0-407d-a6fb-eb20c8bd1192/resourceGroups/apptest/providers/Microsoft.Storage/storageAccounts/myteststorage",
"eventHubAuthorizationRuleID": "/subscriptions/1a66ce04-b633-4a0b-b2bc-a912ec8986a6/resourceGroups/montest/providers/microsoft.eventhub/namespaces/mynamespace/authorizationrules/myrule",
"eventHubName": "myeventhub",
"marketplacePartnerId": "/subscriptions/abcdeabc-1234-1234-ab12-123a1234567a/resourceGroups/test-rg/providers/Microsoft.Datadog/monitors/mydatadog",
"workspaceId": "/subscriptions/4b9e8510-67ab-4e9a-95a9-e2f1e570ea9c/resourceGroups/insights integration/providers/Microsoft.OperationalInsights/workspaces/myworkspace",
"logs": [
{
"category": "ConnectionEvents",
"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
使用 az monitor diagnostic-settings create
命令,透過 Azure CLI 建立診斷設定。 如需命令與參數說明的詳細資訊,請參閱建立診斷設定,將平台記錄與計量傳送至不同的目的地。 此範例示範如何使用 Azure CLI,將資料串流至四個不同的端點:
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}/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"
}
記錄類別 ConnectionEvents
會顯示這些欄位和屬性。 在 Azure 監視器中,系統會將記錄收集在資料表 REDConnectionEvents
中的資源提供者名稱 MICROSOFT.CACHE
下。
Azure 儲存體欄位或屬性 |
Azure 監視器記錄屬性 |
描述 |
time |
TimeGenerated |
擷取事件記錄檔時的時間戳記 (UTC)。 |
location |
Location |
Azure Cache for Redis 執行個體的存取地點 (區域)。 |
category |
n/a |
可用的記錄類別:ConnectionEvents 。 |
resourceId |
_ResourceId |
啟用記錄的 Azure Cache for Redis 資源。 |
operationName |
OperationName |
記錄檔記錄的相關 Redis 作業。 |
properties |
n/a |
此欄位的內容說明於下列資料列中。 |
eventEpochTime |
EventEpochTime |
事件在 UTC 發生時,UNIX 時間戳記 (自 1970 年 1 月 1 日起的秒數)。 可以使用記錄分析工作區中的 unixtime_seconds_todatetime 函式,將時間戳記轉換成日期時間格式。 |
clientIP |
ClientIP |
Redis 用戶端 IP 位址。 如果使用的是 Azure 儲存體,IP 位址會根據快取類型,採用 IPv4 或私人連結 IPv6 格式。 如果使用的是 Log Analytics,因為提供的是個別的 IPv6 欄位,結果一律會採用 IPv4。 |
n/a |
PrivateLinkIPv6 |
Redis 用戶端私人連結 IPv6 位址 (只有在同時使用 Private Link 和記錄分析時才會發出)。 |
id |
ConnectionId |
Redis 指派的唯一連線識別碼。 |
eventType |
EventType |
連線事件的類型 (new_conn、auth 或close_conn)。 |
eventStatus |
EventStatus |
驗證要求的結果作為狀態代碼 (僅適用於驗證事件)。 |
注意
如果使用私人連結,則只會記錄 IPv6 位址 (除非您將資料串流處理至記錄分析)。 您可以查看 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/4A1C78C6-5CB1-422C-A34E-0DF7FCB9BD0B/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/4A1C78C6-5CB1-422C-A34E-0DF7FCB9BD0B/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/4A1C78C6-5CB1-422C-A34E-0DF7FCB9BD0B/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 入口網站、CLI 或 PowerShell 建立診斷設定的詳細資訊,請參閱建立診斷設定以收集 Azure 中的平台記錄和計量一文。