진단 설정을 사용하여 Azure Managed Redis(미리 보기) 데이터 모니터링
Azure의 진단 설정은 리소스 로그를 수집하는 데 사용됩니다. Azure 리소스는 리소스 로그를 내보내고, 해당 리소스의 작업에 대한 풍부하고 빈도 높은 데이터를 제공합니다. 이러한 로그는 요청별로 캡처되며 “데이터 평면 로그”라고도 불립니다. Azure의 기능에 대한 권장 개요는 Azure Monitor의 진단 설정을 참조하세요. 이러한 로그의 내용은 리소스 종류에 따라 달라집니다. Azure Managed Redis(미리 보기)에서는 다음 두 가지 옵션을 로그에 사용할 수 있습니다.
- Azure Monitor에서 메트릭을 로깅하는 데 사용되는 캐시 메트릭(즉, "AllMetrics")
- 연결 로그는 보안 및 진단 목적으로 캐시에 연결을 기록합니다.
캐시 메트릭
Azure Managed Redis(미리 보기)는 로그에 유용한 서버 로드 및 초당 연결과 같은 많은 메트릭을 내보낸다. AllMetrics 옵션을 선택하면 이러한 메트릭 및 기타 캐시 메트릭을 기록할 수 있습니다. 메트릭이 보존되는 기간을 구성할 수 있습니다. 캐시 메트릭을 스토리지 계정으로 내보내는 예제는 여기를 참조하세요.
연결 로그
Azure Managed Redis는 Azure 진단 설정을 사용하여 캐시에 대한 클라이언트 연결에 대한 정보를 기록합니다. 이 진단 설정을 기록하고 분석하면 캐시에 연결하는 사용자와 해당 연결의 타임스탬프를 이해하는 데 도움이 됩니다. 로그 데이터는 보안 위반의 범위를 식별하고 보안 감사 목적으로 사용할 수 있습니다.
Azure Managed Redis는 Redis Enterprise 스택에 기본 제공되는 감사 연결 이벤트 기능을 사용합니다. 감사 연결 이벤트를 사용하면 실패한 인증 이벤트를 포함하여 모든 연결, 연결 끊김 및 인증 이벤트를 기록할 수 있습니다.
Important
Azure Managed Redis의 로깅은 각 연결 이벤트에 중점을 줍니다. 로그는 실제 이벤트가 처음으로 발생한 경우에만 발생합니다.
연결 로깅의 필수 구성 요소/제한 사항
- OSS 클러스터 정책을 사용하는 경우 각 데이터 노드에서 로그가 내보내집니다. 엔터프라이즈 클러스터 정책을 사용하는 경우 프록시로 사용되는 노드만 로그를 내보냅니다. 두 버전 모두 여전히 캐시에 대한 모든 연결을 로깅하며 아키텍처에 차이가 있을 뿐입니다.
- 데이터 손실(즉, 연결 이벤트 누락)은 드물지만 발생할 수 있습니다. 데이터 손실은 일반적으로 네트워킹 문제로 인해 발생합니다.
- 연결 끊김 로그는 아직 완전히 안정되지 않았으며 이벤트가 누락될 수 있습니다.
- Azure Managed Redis의 연결 로그는 이벤트 기반이므로 보존 정책에 주의해야 합니다. 예를 들어 보존이 10일로 설정되고 15일 전에 연결 이벤트가 발생한 경우 해당 연결이 여전히 존재할 수 있지만 해당 연결에 대한 로그는 보존되지 않습니다.
- 활성 지역 복제를 사용하는 경우 지역 복제 그룹의 각 캐시 인스턴스에 대해 로깅을 개별적으로 구성해야 합니다.
- 모든 진단 설정은 선택한 대상으로의 흐름을 시작하는 데 최대 90분이 걸릴 수 있습니다.
- 연결 로그를 사용하도록 설정하면 Redis 인스턴스의 성능이 약간 저하될 수 있습니다.
참고 항목
INFO 또는 CLIENT LIST 명령을 사용하여 요청 시 캐시 인스턴스에 연결된 사용자를 확인할 수 있습니다.
Important
로그를 선택할 때 Azure 서비스에서 범주 또는 미리 정의된 로그 그룹에 해당하는 특정 범주 그룹을 선택할 수 있습니다. 범주 그룹을 사용하는 경우 더 이상 보존 설정을 구성할 수 없습니다. 연결 로그의 보존 기간을 결정해야 하는 경우 범주 섹션에서 항목을 대신 선택합니다.
로그 대상
Azure Managed Redis 인스턴스에 대한 진단 설정을 켜고 리소스 로그를 다음 대상으로 보낼 수 있습니다.
- Log Analytics 작업 영역 - 모니터링 중인 리소스와 동일한 지역에 있을 필요는 없습니다.
- 스토리지 계정 - 캐시와 동일한 지역에 있어야 합니다. 그러나 Premium Storage 계정은 대상으로 지원되지 않습니다.
- 이벤트 허브 - 가상 네트워크가 사용하도록 설정된 경우 진단 설정에서 이벤트 허브 리소스에 액세스할 수 없습니다. Event Hubs 리소스에 대한 액세스 권한을 부여하려면 Event Hubs에서 신뢰할 수 있는 Microsoft 서비스가 이 방화벽을 바이패스하도록 허용하시겠습니까? 설정을 사용합니다. 이벤트 허브는 캐시와 동일한 지역에 있어야 합니다.
- 파트너 솔루션 - 잠재적인 파트너 로깅 솔루션 목록은 여기에서 찾을 수 있습니다.
진단 요구 사항에 대한 자세한 내용은 진단 설정을 참조하세요.
진단 로그를 두 대상 중 하나로 보낼 때 스토리지 계정 및 이벤트 허브 사용량에 대해 일반 데이터 요금이 청구됩니다. Azure Managed Redis가 아닌 Azure Monitor에서 요금이 청구됩니다. Log Analytics에 로그를 보낼 때 Log Analytics 데이터 수집에 대해서만 비용이 청구됩니다.
가격 책정 정보에 대한 자세한 내용은 Azure Monitor 가격 책정을 참조하세요.
Azure Portal을 사용하여 연결 로깅 사용
Azure Portal에 로그인합니다.
Azure Managed Redis 계정으로 이동합니다. 왼쪽의 모니터링 섹션에서 진단 설정 - 감사 창을 엽니다. 그런 다음, 진단 설정 추가를 선택합니다.
진단 설정 - 감사 창의 범주에서 연결 이벤트를 선택합니다.
기록된 데이터에 대한 자세한 내용은 아래의 연결 로그의 내용을 참조하세요.
연결 이벤트를 선택한 후 원하는 대상으로 로그를 보냅니다. 작업 창에서 정보를 선택합니다.
REST API를 사용하여 연결 로깅 사용
대화형 콘솔을 통해 진단 설정을 만드는 데 Azure Monitor 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-미리 보기 |
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를 사용하여 데이터를 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}/providers/Microsoft.Datadog/monitors/mydatadog
연결 로그의 내용
이러한 필드와 속성은 ConnectionEvents
로그 범주에 나타납니다. Azure Monitor에서 로그는 리소스 공급자** 이름 MICROSOFT.CACHE
의 REDConnectionEvents
테이블에 수집됩니다.
Azure Storage 필드 또는 속성 | Azure Monitor 로그 속성 | 설명 |
---|---|---|
time |
TimeGenerated |
이벤트 로그가 캡처된 타임스탬프(UTC) |
location |
Location |
Azure Managed Redis 인스턴스에 액세스한 위치(지역)입니다. |
category |
해당 없음 | 사용 가능한 로그 범주: ConnectionEvents . |
resourceId |
_ResourceId |
로그를 사용할 수 있는 Azure Managed Redis 리소스입니다. |
operationName |
OperationName |
로그 레코드와 연결된 Redis 작업입니다. |
properties |
해당 없음 | 이 필드의 내용은 다음 행에 설명되어 있습니다. |
eventEpochTime |
EventEpochTime |
이벤트가 UTC에서 발생한 UNIX 타임스탬프(1970년 1월 1일 이후의 초 수). 이 타임스탬프는 로그 분석 작업 영역에서 함수 unixtime_seconds_todatetime을 사용하여 datetime 형식으로 변환할 수 있습니다. |
clientIP |
ClientIP |
Redis 클라이언트 IP 주소입니다. Azure Storage를 사용하는 경우 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에서 플랫폼 로그 및 메트릭을 수집하는 진단 설정 만들기 문서를 참조하세요.