Azure Cache for Redis는 진단 설정에서 다음 두 가지 모니터링 옵션을 제공합니다.
-
캐시 메트릭은 캐시 작업에 대한 Azure Monitor 메트릭을 기록합니다.
-
연결 로그는 캐시에 대한 연결을 기록합니다. Azure는 요청당 데이터 평면 로그라고도 하는 이러한 로그를 캡처합니다. 연결 로그의 내용은 리소스 종류에 따라 다릅니다.
Azure Monitor 모니터링 및 로깅 기능에 대한 개요는 Azure Monitor의 진단 설정을 참조하세요.
가용성 범위
계층 |
Basic, Standard 및 Premium |
Enterprise 및 Enterprise Flash |
캐시 메트릭 |
예 |
예 |
연결 로그 |
예 |
예 |
캐시 메트릭
Azure Redis는 서버 로드 및 초당 연결과 같은 많은 유용한 메트릭을 내보 낸다. Azure Redis 메트릭의 전체 목록은 메트릭을 참조하세요.
캐시 메트릭을 기록하려면 계층에 대한 지침에 따라 캐시 진단 설정에서 AllMetrics 옵션을 사용하도록 설정합니다. 메트릭이 보존되는 기간을 구성할 수 있습니다. 메트릭 로깅 및 내보내기 방법에 대한 자세한 내용은 Azure Cache for Redis 메트릭을 참조하세요.
연결 로그
Azure Cache for Redis는 Azure 진단 설정을 사용하여 캐시에 대한 클라이언트 연결 정보를 기록합니다. 진단 설정에서 이 정보를 로깅하고 분석하면 캐시에 연결하는 사람과 시기를 이해하는 데 도움이 됩니다. 보안 감사 목적으로 로그 데이터를 사용하거나 보안 문제의 범위를 식별할 수 있습니다.
참고
언제든지 redis-cli INFO 또는 CLIENT LIST 명령을 사용하여 요청 시 캐시 인스턴스에 연결된 사용자를 확인할 수 있습니다.
연결 로그 구현 및 생성된 로그는 Azure Redis 계층 간에 유사하지만 기본, 표준 및 프리미엄 계층은 Enterprise 및 Enterprise Flash 계층과 몇 가지 차이점이 있습니다.
중요한
- 기본, 표준 및 프리미엄 계층에서는 연결 로깅이 캐시의 현재 클라이언트 연결을 주기적으로 확인합니다. 동일한 클라이언트 IP 주소는 연결이 지속되는 한 반복적으로 나타날 수 있습니다.
- Enterprise 및 Enterprise Flash 계층에서 로깅은 연결 이벤트에 중점을 둡니다. 로깅은 연결 이벤트 또는 기타 연결 관련 이벤트가 처음 발생하는 경우에만 발생합니다.
요구 사항 및 제한 사항
기본, 표준 및 프리미엄 계층 캐시는 각 고유 IP 주소에서 시작된 연결 수를 포함하여 IP 주소별로 클라이언트 연결을 폴링합니다. 이러한 로그는 누적되지 않지만 10초 간격으로 수행된 특정 시점 스냅샷을 나타냅니다. 이러한 계층은 성공 또는 실패한 인증 이벤트 또는 연결 끊기 이벤트를 기록하지 않습니다.
다음 제한 사항에 유의하세요.
- 이러한 계층의 연결 로그는 10초마다 수행되는 특정 시점 스냅샷으로 구성되므로 10초 간격 내에 설정되고 제거된 연결은 기록되지 않습니다.
- 인증 및 연결 끊김 이벤트는 기록되지 않습니다.
- 진단 설정은 선택한 대상에 전송되는 데 최대 90분이 걸릴 수 있습니다.
- 연결 로깅으로 인해 캐시의 성능이 저하될 수 있습니다.
- Log Analytics로 로그를 스트리밍하려면 분석 로그 가격 책정 계획만 지원됩니다. 자세한 내용은 Azure Monitor 가격을 참조하세요.
엔터프라이즈 및 엔터프라이즈 플래시 계층 캐시는 Redis Enterprise에 기본 제공되는 감사 연결 이벤트 기능을 사용합니다. 감사 연결 이벤트를 사용하면 실패한 인증 이벤트를 포함하여 모든 연결, 연결 끊김 및 인증 이벤트를 기록할 수 있습니다.
다음 제한 사항에 유의하세요.
-
OSS 클러스터 정책을 사용하는 경우 각 데이터 노드에서 로그가 내보내집니다.
엔터프라이즈 클러스터 정책을 사용하는 경우 프록시로 사용되는 노드만 로그를 내보낸다. 이러한 차이는 아키텍처에 불과합니다. 두 버전 모두 캐시에 대한 모든 연결을 다룹니다.
- 데이터 손실 또는 연결 이벤트 누락은 드물지만 가능합니다. 데이터 손실은 일반적으로 네트워킹 문제로 인해 발생합니다.
- 연결 끊김 로그가 완전히 안정적이지 않을 수 있으며 이벤트를 놓칠 수 있습니다.
- 엔터프라이즈 계층의 연결 로그는 이벤트 기반이므로 보존 정책을 고려합니다. 보존 기간을 10일로 설정하면 15일 전에 시작된 연결이 여전히 존재할 수 있지만 해당 연결 이벤트에 대한 로그는 유지되지 않습니다.
-
활성 지역 복제를 사용하는 경우 지역 복제 그룹의 각 캐시 인스턴스에 대해 개별적으로 로깅을 구성해야 합니다.
- 진단 설정은 선택한 대상에 전송되는 데 최대 90분이 걸릴 수 있습니다.
- 연결 로깅으로 인해 캐시의 성능이 저하될 수 있습니다.
중요한
로그를 선택하면 Azure 서비스에서 로그의 미리 정의된 그룹인 범주 또는 범주 그룹을 선택할 수 있습니다.
범주 그룹을 사용하는 경우 보존 설정을 구성할 수 없습니다. 연결 로그에 대한 보존 기간을 설정해야 하는 경우 범주 에서 항목을 대신 선택합니다. 자세한 내용은 범주 그룹을 참조하세요.
로그 대상
Azure Redis 인스턴스에 대한 진단 설정을 사용하도록 설정하면 리소스 로그를 다음 대상으로 보낼 수 있습니다.
Log Analytics 작업 영역으로 보내기. 작업 영역은 모니터링 중인 리소스와 동일한 지역에 있을 필요가 없습니다.
스토리지 계정에 보관. 스토리지 계정은 캐시와 동일한 지역에 있어야 합니다.
이벤트 허브로 스트림. 이벤트 허브는 캐시와 동일한 지역에 있어야 합니다.
가상 네트워크를 사용하는 경우 진단 설정은 이벤트 허브 리소스에 액세스할 수 없습니다.
신뢰할 수 있는 Microsoft 서비스가 Azure Event Hubs에서 이 방화벽 설정을 우회하여 이벤트 허브 리소스에 대한 액세스 권한을 부여하도록 허용합니다.
파트너 솔루션에 보냅니다. 잠재적인 파트너 로깅 솔루션 목록은 Azure 네이티브 통합을 사용하여 Azure 확장 - 데이터 및 스토리지를 참조하세요.
진단 로그를 스토리지 계정 또는 이벤트 허브로 보내면 두 대상에 대한 일반 데이터 요금이 청구됩니다. Azure Cache for Redis가 아닌 Azure Monitor로 요금이 청구됩니다. Log Analytics에 로그를 보내면 Log Analytics 데이터 수집에 대해서만 요금이 청구됩니다. 자세한 가격 책정 정보는 Azure Monitor 가격 책정을 참조하세요.
Azure Portal을 사용하여 진단 설정 사용
캐시의 Azure Portal 페이지에서 왼쪽 탐색 창의 모니터링에서 진단 설정을 선택합니다.
진단 설정 페이지에서 진단 설정 추가를 선택합니다.
진단 설정 페이지에서 진단 설정의 이름을 입력한 다음 원하는 모니터링 옵션을 선택합니다. 예를 들어 AllMetrics 를 선택하여 모든 메트릭 및 allLog를 기록하여 연결된 클라이언트 목록 과 MSEntra 인증 감사 로그를 모두 기록합니다.
하나 이상의 대상 및 대상 세부 정보를 선택한 다음 저장을 선택합니다.
캐시에 대한 Azure Portal 페이지의 왼쪽 탐색 창의 모니터링 아래에서 진단 설정 - 메트릭 또는 진단 설정 - 로그에 대한 감사 중 하나를 선택합니다.
진단 설정 - 메트릭 또는 진단 설정 - 감사 페이지에서 진단 설정 추가를 선택합니다.
메트릭 또는 리소스 로그에 대한 진단 설정 페이지에서 진단 설정의 이름을 입력하고 원하는 메트릭 또는 리소스 로그 옵션을 선택합니다. 로깅 페이지에서 연결 이벤트 범주 또는 감사 또는 allLogs 범주 그룹을 선택할 수 있습니다. 이러한 선택 항목 중에서 연결 로깅을 사용하도록 설정합니다.
하나 이상의 대상 및 대상 세부 정보를 선택한 다음 저장을 선택합니다.
REST API를 사용하여 연결 로깅 사용
진단 설정을 만들려면 다음과 같이 대화형 콘솔에서 Azure Monitor 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를 사용하여 데이터를 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}/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 Monitor에서 로그는 ACRConnectedClientList
테이블 안에 MICROSOFT.CACHE
이라는 리소스 공급자 이름 아래로 수집됩니다.
Azure Storage 필드 또는 속성 |
Azure Monitor 로그 속성 |
설명 |
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 Monitor에서 로그는 REDConnectionEvents
테이블 안에 MICROSOFT.CACHE
이라는 리소스 공급자 이름 아래로 수집됩니다.
Azure Storage 필드 또는 속성 |
Azure Monitor 로그 속성 |
설명 |
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 Storage를 사용하는 경우 IP 주소는 캐시 유형에 따라 IPv4 또는 Private Link IPv6 형식입니다. Log Analytics를 사용하는 경우 별도의 IPv6 필드가 있기 때문에 이 결과는 항상 IPv4에 있습니다. |
해당 없음 |
PrivateLinkIPv6 |
Private Link와 Log Analytics를 모두 사용하는 경우에만 내보내는 Redis 클라이언트 프라이빗 링크 IPv6 주소입니다. |
id |
ConnectionId |
Redis에서 할당한 고유 연결 ID |
eventType |
EventType |
연결 이벤트 유형: new_conn , auth 또는 close_conn . |
eventStatus |
EventStatus |
상태 코드로 인증 요청의 결과입니다. 인증 이벤트에만 적용됩니다. |
참고
Private Link를 사용하는 경우 데이터를 Log Analytics로 스트리밍하지 않는 한 IPv6 주소만 기록됩니다. IPv6 주소의 마지막 4바이트 데이터를 사용하여 IPv6 주소를 해당하는 IPv4 주소로 변환할 수 있습니다. 예를 들어 Private Link IPv6 주소fd40:8913:31:6810:6c31:200:a01:104
에서는 16진수의 마지막 4바이트가 0a
, 01
, 01
, 04
입니다. (주소에서 콜론 뒤의 선행 0은 생략됩니다.) 이러한 값은 IPv4 주소를 생성하는 10진수에 해당 10
1
1
4
합니다.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 Portal, Azure CLI 또는 Azure PowerShell을 사용하여 진단 설정을 만드는 방법에 대한 자세한 내용은 Azure 에서 플랫폼 로그 및 메트릭을 수집하는 진단 설정 만들기를 참조하세요.