診断設定を使用して Azure Cache for Redis のデータを監視する
- [アーティクル]
-
-
Azure の診断設定は、リソース ログの収集に使用されます。 Azure リソースからはリソース ログが出力され、そのリソースの操作に関する豊富なデータが頻繁に提供されます。 これらのログは、要求ごとに取得され、"データ プレーン ログ" とも呼ばれます。 「Azure Monitor の診断設定」で、Azure の機能の推奨される概要について参照してください。 これらのログの内容は、リソースの種類によって異なります。 Azure Cache for Redis では、ログに対して次の 2 つのオプションがあります。
可用性のスコープ
レベル |
Basic、Standard、Premium |
Enterprise および Enterprise Flash |
キャッシュ メトリック |
はい |
はい |
接続ログ |
はい |
はい |
キャッシュ メトリック
Azure Cache for Redis は、ログ記録に役立つ "サーバー負荷" や "1 秒あたりの接続数" など、多くのメトリックを出力します。 AllMetrics オプションを選択すると、これらのキャッシュ メトリックとその他のキャッシュ メトリックをログに記録できます。 メトリックが保持される期間は構成できます。 キャッシュ メトリックをストレージ アカウントにエクスポートする例については、こちらを参照してください。
接続ログ
Azure Cache for Redis では、Azure 診断設定を使用して、キャッシュに対するクライアント接続に関する情報がログに記録されます。 この診断設定のログ記録と分析は、キャッシュに接続しているユーザーと、それらの接続のタイムスタンプを把握するのに役立ちます。 このログ データは、セキュリティ侵害の範囲を特定するため、およびセキュリティ監査の目的に使用できます。
Azure Cache for Redis のレベルの違い
接続ログの実装は、レベルによって若干異なります。
- Basic、Standard、および Premium レベルのキャッシュでは、一意の各 IP アドレスからの接続数など、IP アドレス別にクライアント接続がポーリングされます。 これらのログは累積ではありません。 それらは、10 秒間隔で取得された特定の時点のスナップショットを表します。 認証イベント (成功と失敗) と切断イベントは、これらのレベルではログに記録されません。
- Enterprise および Enterprise Flash レベルのキャッシュでは、Redis Enterprise に組み込まれている監査接続イベント機能が使用されます。 監査接続イベントを使用すると、失敗した認証イベントを含め、すべての接続、切断、認証イベントをログに記録できます。
生成される接続ログはレベル間で似ていますが、いくつかの違いがあります。 この記事の後半で、2 つの形式について詳しく説明します。
重要
Basic、Standard、Premium レベルの接続ログは、キャッシュ内の現在のクライアント接続を "ポーリング" します。 同じクライアント IP アドレスが何度も繰り返し登場します。 Enterprise および Enterprise Flash レベルでのログ記録は、各接続 "イベント" に重点が置かれています。 ログは、実際のイベントが初めて発生した場合にのみ発生します。
接続ログの前提条件および制限事項
Basic、Standard、および Premium レベル
- これらのレベルの接続ログは 10 秒ごとに作成されるポイントインタイム スナップショットで構成されるため、10 秒間隔の間に確立および削除された接続はログに記録されません。
- 認証イベントはログに記録されません。
- すべての診断設定は、選択した宛先へのフローが開始されるまでに最大 90 分かかる場合があります。
- 接続ログを有効にすると、キャッシュ インスタンスの僅かなパフォーマンスの低下が発生する場合があります。
- Azure Log Analytics にログを ストリーミングする場合は、"分析ログ" の価格プランのみがサポートされます。 詳細については、「Azure Monitor の価格」を参照してください。
Enterprise レベルと Enterprise Flash レベル
- OSS クラスター ポリシーを使用すると、各データ ノードからログが出力されます。 エンタープライズ クラスター ポリシーを使用すると、プロキシとして使用されているノードからのみログが出力されます。 どちらのバージョンでも、キャッシュへのすべての接続がカバーされます。 これはアーキテクチャ上の違いにすぎません。
- データ損失 (接続イベントの欠落) はまれですが、可能性はあります。 通常、データ損失はネットワークの問題によって発生します。
- 切断ログはまだ完全に安定しておらず、イベントが欠落する可能性があります。
- Enterprise レベルの接続ログはイベント ベースであるため、アイテム保持ポリシーに注意してください。 たとえば、保持期間が 10 日に設定されていて、15 日前に接続イベントが発生した場合、その接続はまだ存在する可能性がありますが、その接続のログは保持されません。
- アクティブ geo レプリケーションを使用する場合、geo レプリケーション グループ内のキャッシュ インスタンスごとに個別にログ記録を構成する必要があります。
- すべての診断設定は、選択した宛先へのフローが開始されるまでに最大 90 分かかる場合があります。
- 接続ログを有効にすると、キャッシュ インスタンスの僅かなパフォーマンスの低下が発生する場合があります。
注意
INFO コマンドまたは CLIENT LIST コマンドを使用して、キャッシュ インスタンスに接続しているユーザーをオンデマンドでチェックすることは常に可能です。
重要
ログを選択するときは、特定の "カテゴリ" または "カテゴリ グループ" を選択できます。これらは、Azure サービス全体のログの定義済みのグループです。 "カテゴリ グループ" を使用すると、保持設定を構成できなくなります。 接続ログの保持期間を決定する必要がある場合は、代わりに "カテゴリ" セクションで項目を選択します。
ログの宛先
Azure Cache for Redis インスタンスの診断設定を有効にして、次の宛先にリソース ログを送信できます。
- Log Analytics ワークスペース - 監視対象のリソースと同じリージョンにする必要はありません。
- ストレージ アカウント - キャッシュと同じリージョンに存在する必要があります。 ただし、宛先として Premium ストレージ アカウントはサポートされていません。
- イベント ハブ - 仮想ネットワークが有効になっていると、診断設定でイベント ハブ リソースにアクセスすることはできません。 イベント ハブ リソースへのアクセスを許可するには、イベント ハブの設定 [信頼された Microsoft サービスがこのファイアウォールをバイパスすることを許可しますか?] を有効にします。 イベント ハブは、キャッシュと同じリージョンにある必要があります。
- パートナー ソリューション - 潜在的なパートナー ログ ソリューションの一覧については、こちらを参照してください。
診断の要件の詳細については、診断設定に関する記事を参照してください。
診断ログをいずれかの宛先に送信すると、ストレージ アカウントとイベント ハブの使用に対して通常のデータ料金が課金されます。 この場合、請求は Azure Cache for Redis ではなく Azure Monitor で行われます。 Log Analytics にログを送信する場合、Log Analytics データ インジェストのみに料金が発生します。
価格の詳細については、「Azure Monitor の価格」を参照してください。
Azure portal を使用して接続ログを有効にする
Azure portal にサインインします。
Azure Cache for Redis アカウントに移動します。 左側の [監視] セクションで、 [診断設定] ペインを開きます。 次に、 [診断設定を追加する] を選択します。
[診断設定] ペインの [カテゴリ] から [ConnectedClientList] を選択します。
ログに記録されるデータの詳細については、以下の「接続ログの内容」を参照してください。
[ConnectedClientList] を選択したら、任意の宛先にログを送信します。 作業ウィンドウで情報を選択します。
Azure portal にサインインします。
Azure Cache for Redis アカウントに移動します。 左側の [モニター] セクションで、[診断設定 - 監査] ペインを開きます。 次に、 [診断設定を追加する] を選択します。
[診断設定 - 監査] ウィンドウで、[カテゴリ] から [接続イベント] を選択します。
ログに記録されるデータの詳細については、以下の「接続ログの内容」を参照してください。
[接続イベント] を選択したら、任意の宛先にログを送信します。 作業ウィンドウで情報を選択します。
REST API を使用して接続ログを有効にする
Azure Monitor REST API を、対話型コンソールを介して診断設定を作成するために使用します。 詳細については、「 作成または更新」を参照してください。
Request
PUT https://management.azure.com/{resourceUri}/providers/Microsoft.Insights/diagnosticSettings/{name}?api-version=2017-05-01-preview
パラメーター/ヘッダー |
値/説明 |
name |
診断設定の名前。 |
resourceUri |
subscriptions/<サブスクリプション ID>/resourceGroups/<リソース グループ>/providers/Microsoft.Cache/Redis/<キャッシュ名> |
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 Monitor REST API を、対話型コンソールを介して診断設定を作成するために使用します。 詳細については、「 作成または更新」を参照してください。
Request
PUT https://management.azure.com/{resourceUri}/providers/Microsoft.Insights/diagnosticSettings/{name}?api-version=2017-05-01-preview
パラメーター/ヘッダー |
値/説明 |
name |
診断設定の名前。 |
resourceUri |
subscriptions/{サブスクリプション ID}/resourceGroups/{リソース グループ}/providers/Microsoft.Cache/RedisEnterprise/{キャッシュ名}/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 を使用して接続ログを有効にする
Azure CLI を使用して診断設定を作成するには、az monitor diagnostic-settings create
コマンドを使用します。 コマンドとパラメーターの詳細については、「プラットフォーム ログとメトリックを異なる宛先に送信するための診断設定を作成する」を参照してください。 この例では、Azure CLI を使用して 4 つの異なるエンドポイントにデータをストリーミングする方法を示します。
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
Azure CLI を使用して診断設定を作成するには、az monitor diagnostic-settings create
コマンドを使用します。 コマンドとパラメーターの詳細については、「プラットフォーム ログとメトリックを異なる宛先に送信するための診断設定を作成する」を参照してください。 この例では、Azure CLI を使用して 4 つの異なるエンドポイントにデータをストリーミングする方法を示します。
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 Monitor では、ログは MICROSOFT.CACHE
という名前のリソース プロバイダーの下にある ACRConnectedClientList
テーブルに収集されます。
Azure Storage のフィールドまたはプロパティ |
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"
}
以下のフィールドとプロパティは ConnectionEvents
ログ カテゴリに出現します。 Azure Monitor では、ログは MICROSOFT.CACHE
という名前のリソース プロバイダーの下にある REDConnectionEvents
テーブルに収集されます。
Azure Storage のフィールドまたはプロパティ |
Azure Monitor ログのプロパティ |
説明 |
time |
TimeGenerated |
イベント ログがキャプチャされたときのタイムスタンプ (UTC)。 |
location |
Location |
Azure Cache for Redis インスタンスへのアクセスが発生した場所 (リージョン)。 |
category |
該当なし |
使用可能なログ カテゴリ: ConnectionEvents 。 |
resourceId |
_ResourceId |
ログが有効になっている Azure Cache for Redis リソース。 |
operationName |
OperationName |
ログ レコードに関連付けられた Redis 操作。 |
properties |
該当なし |
このフィールドの内容については、以下の行を参照してください。 |
eventEpochTime |
EventEpochTime |
イベントが発生したときの UTC での UNIX タイムスタンプ (1970 年 1 月 1 日からの秒数)。 タイムスタンプは、ログ分析ワークスペースで関数 unixtime_seconds_todatetime を使用して datetime 形式に変換できます。 |
clientIP |
ClientIP |
Redis クライアントの IP アドレス。 Azure ストレージを使用している場合、IP アドレスはキャッシュの種類に応じて、IPv4 またはプライベート リンク IPv6 形式です。 Log Analytics を使用する場合、別の IPv6 フィールドが提供されるため、結果は常に IPv4 になります。 |
該当なし |
PrivateLinkIPv6 |
Redis クライアントのプライベート リンク IPv6 アドレス (Private Link とログ分析の両方を使用している場合にのみ出力されます)。 |
id |
ConnectionId |
Redis によって割り当てられた一意の接続 ID。 |
eventType |
EventType |
接続イベントの種類 (new_conn、auth、または close_conn)。 |
eventStatus |
EventStatus |
状態コードとしての認証要求の結果 (認証イベントにのみ適用されます)。 |
注意
プライベート リンクを使用している場合、IPv6 アドレスのみがログに記録されます (データをログ分析にストリーミングする場合を除く)。 IPv6 アドレス内の最後の 4 バイトのデータを調べることで、IPv6 アドレスを同等の IPv4 アドレスに変換できます。 たとえば、プライベート リンクの IPv6 アドレス "fd40:8913:31:6810:6c31:200:a01:104" の場合、16 進数の最後の 4 バイトは "0a"、"01"、"01"、"04" です。 (各コロンの後は先頭の 0 が省略されることに注意してください)。これらは、10 進数の "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 portal、CLI、または PowerShell を使用して診断設定を作成する方法の詳細については、「Azure でプラットフォーム ログとメトリックを収集するための診断設定を作成する」を参照してください。