

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 로깅 및 모니터링
<a name="monitoring-overview"></a>

MemoryDB 및 다른 AWS 솔루션의 신뢰성, 가용성 및 성능을 유지하려면 모니터링이 중요합니다. AWS는 MemoryDB를 모니터링하고, 이상이 있을 때 이를 보고하고, 필요한 경우, 자동 조치를 취할 수 있도록 다음과 같은 모니터링 도구를 제공합니다.
+ *Amazon CloudWatch*는 AWS에서 실행하는 AWS 리소스와 애플리케이션을 실시간으로 모니터링합니다. 지표를 수집 및 추적하고, 사용자 지정 대시보드를 생성할 수 있으며, 지정된 지표가 지정한 임곗값에 도달하면 사용자에게 알리거나 조치를 취하도록 경보를 설정할 수 있습니다. 예를 들어 CloudWatch에서 Amazon EC2 인스턴스의 CPU 사용량 또는 기타 지표를 추적하고 필요할 때 자동으로 새 인스턴스를 시작할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 사용 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)를 참조하세요.
+ *Amazon CloudWatch Logs*로 Amazon EC2 인스턴스, CloudTrail, 기타 소스의 로그 파일을 모니터링, 저장 및 액세스할 수 있습니다. CloudWatch Logs는 로그 파일의 정보를 모니터링하고 특정 임곗값에 도달하면 사용자에게 알릴 수 있습니다. 또한 매우 내구성이 뛰어난 스토리지에 로그 데이터를 저장할 수 있습니다. 자세한 내용은 [Amazon CloudWatch Logs 사용 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/)를 참조하세요.
+ AWS CloudTrail은 직접 수행하거나 AWS 계정을 대신하여 수행한 API 직접 호출 및 관련 이벤트를 캡처하고 지정한 Amazon S3 버킷에 로그 파일을 전송합니다.** 어떤 사용자 및 계정이 AWS를 직접적으로 호출했는지, 어떤 소스 IP 주소에 직접 호출이 이루어졌는지, 언제 직접 호출이 발생했는지 확인할 수 있습니다. 자세한 내용은 [AWS CloudTrail 사용 설명서](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)를 참조하세요.

# Amazon CloudWatch를 사용하여 MemoryDB 모니터링
<a name="monitoring-cloudwatch"></a>

원시 데이터를 수집하여 읽기 가능하고 실시간에 가까운 지표로 처리하는 CloudWatch를 사용하여 MemoryDB를 모니터링할 수 있습니다. 이러한 통계는 15개월간 보관되므로 기록 정보에 액세스하고 웹 애플리케이션 또는 서비스가 어떻게 실행되고 있는지 전체적으로 더 잘 파악할 수 있습니다. 특정 임곗값을 주시하다가 해당 임곗값이 충족될 때 알림을 전송하거나 조치를 취하도록 경보를 설정할 수도 있습니다. 자세한 내용은 [Amazon CloudWatch 사용 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)를 참조하세요.

다음 섹션에는 MemoryDB의 지표와 차원이 나열되어 있습니다.

**Topics**
+ [호스트 수준 지표](metrics.HostLevel.md)
+ [MemoryDB에 대한 지표](metrics.memorydb.md)
+ [어떤 지표를 모니터링해야 합니까?](metrics.whichshouldimonitor.md)
+ [지표 통계 및 기간 선택](metrics.ChoosingStatisticsAndPeriods.md)
+ [CloudWatch 지표 모니터링](cloudwatchmetrics.md)

# 호스트 수준 지표
<a name="metrics.HostLevel"></a>

`AWS/MemoryDB` 네임스페이스에는 다음과 같이 개별 노드에 대한 호스트 수준 지표가 포함되어 있습니다.

**참고**
+ [MemoryDB에 대한 지표](metrics.memorydb.md)


| 지표 | 설명 | 단위 | 
| --- | --- | --- | 
| CPUUtilization |  전체 호스트에 대한 CPU 사용률 비율입니다. Valkey 및 Redis OSS는 단일 스레드이므로 vCPU가 4개 이상인 노드에 대해 EngineCPUUtilization 지표를 모니터링하는 것이 좋습니다. |  %  | 
| FreeableMemory  |  호스트에서 사용 가능한 메모리의 양입니다. 이 숫자는 OS가 여유 공간으로 보고한 RAM의 메모리, 버퍼에서 나왔습니다. |  바이트  | 
| NetworkBytesIn |  호스트가 네트워크에서 읽어온 바이트 수입니다. |  바이트  | 
| NetworkBytesOut | 인스턴스가 모든 네트워크 인터페이스에서 보낸 바이트 수입니다. |  바이트  | 
| NetworkPacketsIn | 인스턴스가 모든 네트워크 인터페이스에서 받은 패킷 수입니다. 이 지표는 단일 인스턴스에서 수신 트래픽의 볼륨을 패킷 수 기준으로 식별합니다. | 개수  | 
| NetworkPacketsOut | 인스턴스가 모든 네트워크 인터페이스에서 보낸 패킷 수입니다. 이 지표는 단일 인스턴스에서 발신 트래픽의 볼륨을 패킷 수 기준으로 식별합니다. | 개수  | 
| NetworkBandwidthInAllowanceExceeded | 인바운드 집계 대역폭이 인스턴스의 최대값을 초과하여 형성된 패킷 수입니다. | 개수  | 
| NetworkConntrackAllowanceExceeded | 연결 추적이 인스턴스의 최대값을 초과하여 새 연결을 설정할 수 없기 때문에 형성된 패킷 수입니다. 이로 인해 인스턴스의 수신 또는 송신 트래픽에 대한 패킷 손실이 발생할 수 있습니다. | 개수  | 
| NetworkBandwidthOutAllowanceExceeded | 아웃바운드 집계 대역폭이 인스턴스의 최대값을 초과하여 형성된 패킷 수입니다. | 개수  | 
| NetworkPacketsPerSecondAllowanceExceeded | 양방향 PPS(packets per second)가 인스턴스의 최대값을 초과하여 형성된 패킷 수입니다. | 개수  | 
| NetworkMaxBytesIn | 1분마다 수신된 바이트의 초당 최대 버스트입니다. | 바이트 | 
| NetworkMaxBytesOut  | 1분마다 전송된 바이트의 초당 최대 버스트입니다. | 바이트 | 
| NetworkMaxPacketsIn | 1분마다 수신된 패킷의 초당 최대 버스트입니다. | 개수  | 
| NetworkMaxPacketsOut | 1분마다 전송된 패킷의 초당 최대 버스트입니다. | 개수  | 
| SwapUsage |  호스트에서 사용되는 스왑의 양입니다. |  바이트  | 

# MemoryDB에 대한 지표
<a name="metrics.memorydb"></a>

`AWS/MemoryDB` 네임스페이스에는 다음과 같은 지표가 포함됩니다.

`ReplicationLag`, `EngineCPUUtilization`, `SuccessfulWriteRequestLatency`, `SuccessfulReadRequestLatency`를 제외하고 이 지표는 Valkey 및 Redis OSS **info** 명령에서 파생됩니다. 각 지표는 노드 수준에서 계산됩니다.

**INFO** 명령의 전체 설명서는 [INFO](http://valkey.io/commands/info)를 참조하세요.

**또한 다음 섹션도 참조하세요.**
+ [호스트 수준 지표](metrics.HostLevel.md)

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/metrics.memorydb.html)

다음은 **info commandstats**에서 파생된 몇 가지 유형의 명령 모음입니다. commandstats 섹션은 직접 호출 수를 포함하여 명령 유형에 따른 통계를 제공합니다.

사용 가능한 명령의 전체 목록은 [명령](https://valkey.io/commands)을 참조하세요.


| 지표  | 설명  | 단위  | 
| --- | --- | --- | 
| EvalBasedCmds | EVAL 기반 명령의 총 명령 수입니다. 이 지표는 eval, evalsha를 합산하여 commandstats 통계에서 파생됩니다. | 개수 | 
| GeoSpatialBasedCmds | 지리 기반 명령의 총 명령 수입니다. 이 수는 commandstats 통계 자료에서 나왔습니다. 이 수는 모든 geo 유형의 명령(geoadd, geodist, geohash, geopos, georadius, georadiusbymember)을 합산하여 계산됩니다. | 개수 | 
| GetTypeCmds | read-only 유형 명령의 총 건수입니다. 이 수는 read-only 유형의 모든 명령(get, hget, scard, lrange 등)을 합산하여 commandstats 통계에서 나왔습니다. | 개수 | 
| HashBasedCmds | 해시 기반 명령 총 수입니다. 이 지표는 1개 이상의 해시(hget, hkeys, hvals, hdel 등)를 기반으로 실행되는 모든 명령을 합산하여 commandstats 통계에서 파생됩니다. | 개수 | 
| HyperLogLogBasedCmds | HyperLogLog 기반 명령 총 건수입니다. 이 수는 pf 유형의 모든 명령(pfadd, pfcount, pfmerge 등)을 합산하여 commandstats 통계에서 나왔습니다. | 개수 | 
|  JsonBasedCmds |  JSON 기반 명령 총 수입니다. 이 지표는 1개 이상의 JSON 문서 객체를 기반으로 실행되는 모든 명령을 합산하여 commandstats 통계에서 파생됩니다. | 개수 | 
| KeyBasedCmds | 키 기반 명령 총 수입니다. 이 수는 여러 데이터 구조(del, expire, rename 등) 상에서 1개 이상의 키에서 작동하는 모든 명령을 합산하여 commandstats 통계에서 나왔습니다. | 개수 | 
| ListBasedCmds | 목록 기반 명령 총 수입니다. 이 지표는 1개 이상의 목록(lindex, lrange, lpush, ltrim 등)을 기반으로 실행되는 모든 명령을 합산하여 commandstats 통계에서 파생됩니다. | 개수 | 
| PubSubBasedCmds | pub/sub 기능의 명령 총 수입니다. 이 지표는 pub/sub 기능에 사용되는 모든 명령(psubscribe, publish, pubsub, punsubscribe, subscribe 및 unsubscribe)을 합산하여 commandstats 통계에서 파생됩니다. | 개수 | 
| SearchBasedCmds | 읽기 및 쓰기 명령을 포함한 총 보조 인덱스 및 검색 명령 수입니다. 이 지표는 보조 인덱스를 기반으로 실행되는 모든 검색 명령을 합산하여 commandstats 통계에서 파생됩니다. | 개수 | 
| SearchBasedGetCmds | 보조 인덱스 및 검색 읽기 전용 명령의 총 수입니다. 이 지표는 모든 보조 인덱스 및 검색 가져오기 명령을 합산하여 commandstats 통계에서 파생됩니다. | 개수 | 
| SearchBasedSetCmds | 보조 인덱스 및 검색 쓰기 명령의 총 수입니다. 이 지표는 모든 보조 인덱스 및 검색 세트 명령을 합산하여 commandstats 통계에서 파생됩니다. | 개수 | 
| SearchNumberOfIndexes | 총 인덱스 수입니다. | 개수 | 
| SearchNumberOfIndexedKeys | 인덱싱된 키의 총 수  | 개수 | 
| SearchTotalIndexSize | 모든 인덱스에서 사용하는 메모리(바이트)입니다. | 바이트 | 
| SetBasedCmds | 집합 기반 명령 총 수입니다. 이 지표는 1개 이상의 집합(scard, sdiff, sadd, sunion 등)을 기반으로 실행되는 모든 명령을 합산하여 commandstats 통계에서 파생됩니다. | 개수 | 
| SetTypeCmds | write 유형의 총 명령 건수입니다. 이 수는 데이터(set, hset, sadd, lpop 등)에서 작동하는 모든 mutative 유형의 명령을 합산하여 commandstats 통계에서 나왔습니다. | 개수 | 
| SortedSetBasedCmds | 정렬된 집합 기반 명령 총 수입니다. 이 지표는 1개 이상의 정렬된 집합(zcount, zrange, zrank, zadd 등)을 기반으로 실행되는 모든 명령을 합산하여 commandstats 통계에서 파생됩니다. | 개수 | 
| StringBasedCmds | 문자열 기반 명령 총 수입니다. 이 지표는 1개 이상의 문자열(strlen, setex, setrange 등)을 기반으로 실행되는 모든 명령을 합산하여 commandstats 통계에서 파생됩니다. | 개수 | 
| StreamBasedCmds | 총 스트림 기반 명령 수입니다. 이 지표는 1개 이상의 스트림 데이터 형식(xrange, xlen, xadd, xdel 등)을 기반으로 실행되는 모든 명령을 합산하여 commandstats 통계에서 파생됩니다. | 개수 | 

# 어떤 지표를 모니터링해야 합니까?
<a name="metrics.whichshouldimonitor"></a>

다음 CloudWatch 지표는 MemoryDB 성능에 대한 좋은 정보를 제공합니다. 대부분의 경우, 이러한 지표에 대해 성능 문제가 생기기 전에 수정 조치를 취할 수 있도록 CloudWatch 경보를 설정하는 것이 좋습니다.

**Topics**
+ [CPUUtilization](#metrics-cpu-utilization)
+ [EngineCPUUtilization](#metrics-engine-cpu-utilization)
+ [SwapUsage](#metrics-swap-usage)
+ [Evictions](#metrics-evictions)
+ [CurrConnections](#metrics-curr-connections)
+ [Memory](#metrics-memory)
+ [Network](#metrics-network)
+ [Latency](#metrics-latency)
+ [복제](#metrics-replication)

## CPUUtilization
<a name="metrics-cpu-utilization"></a>

이는 백분율(%)로 보고된 호스트 수준 지표입니다. 자세한 내용은 [호스트 수준 지표](metrics.HostLevel.md) 섹션을 참조하세요.

 2vCPU 이하의 작은 노드 유형에는 `CPUUtilization ` 지표를 사용하여 워크로드를 모니터링하세요.

일반적으로, 사용 가능한 CPU의 90%로 임곗값을 설정하는 것이 좋습니다. Valkey 및 Redis OSS는 단일 스레드이기 때문에 실제 임곗값은 노드 총용량의 일부로 계산해야 합니다. 2개의 코어가 있는 노드 유형을 사용하는 경우를 예로 들어보겠습니다. 이 경우, CPUUtilization의 임곗값은 90/2 또는 45%입니다. 노드 유형에 있는 코어(vCPU)의 수를 확인하려면 [MemoryDB 요금](https://aws.amazon.com/memorydb/pricing/?p=ps)을 참조하세요.

사용 중인 노드에 있는 코어 개수에 따라 임곗값을 결정해야 합니다. 이 임곗값을 초과하고, 주된 워크로드가 읽기 요청에서 비롯되는 경우에는 읽기 전용 복제본을 추가하여 클러스터를 스케일 아웃합니다. 기본 워크로드가 쓰기 요청에서 발생하는 경우, 샤드를 추가하여 쓰기 워크로드를 프라이머리 노드 전체에 더 많이 배포합니다.

**작은 정보**  
호스트 수준 지표 `CPUUtilization`을 사용하는 대신, Valkey 또는 Redis OSS 엔진 코어의 사용률을 보고하는 지표 `EngineCPUUtilization`을 사용할 수 있습니다. 노드에서 이 지표를 사용할 수 있는지 확인하고 자세한 내용을 보려면 [MemoryDB 지표](https://docs.aws.amazon.com/memorydb/latest/devguide/metrics.memorydb.html)를 참조하세요.

4vCPU 이상의 대규모 노드 유형에는 Valkey 또는 Redis OSS 엔진 코어의 대한 사용률을 보고하는 `EngineCPUUtilization` 지표를 사용할 수 있습니다. 노드에서 이 지표를 사용할 수 있는지 확인하고 자세한 내용을 보려면 [MemoryDB 지표](https://docs.aws.amazon.com/memorydb/latest/devguide/metrics.memorydb.html)를 참조하세요.

## EngineCPUUtilization
<a name="metrics-engine-cpu-utilization"></a>

4vCPU 이상의 대규모 노드 유형에는 Valkey 또는 Redis OSS 엔진 코어의 대한 사용률을 보고하는 `EngineCPUUtilization` 지표를 사용할 수 있습니다. 노드에서 이 지표를 사용할 수 있는지 확인하고 자세한 내용을 보려면 [MemoryDB 지표](https://docs.aws.amazon.com/memorydb/latest/devguide/metrics.memorydb.html)를 참조하세요.

## SwapUsage
<a name="metrics-swap-usage"></a>

이는 바이트로 보고된 호스트 수준 지표입니다. 자세한 내용은 [호스트 수준 지표](metrics.HostLevel.md) 섹션을 참조하세요.

`FreeableMemory` CloudWatch 지표가 0에 가깝거나(즉, 100MB 미만) `SwapUsage` 지표가 `FreeableMemory` 지표보다 큰 경우 노드가 메모리 부족 상태일 수 있습니다.

## Evictions
<a name="metrics-evictions"></a>

이것은 엔진 지표입니다. 애플리케이션 요구 사항에 따라 이 지표에 대한 경보 임곗값을 결정하는 것이 좋습니다.

## CurrConnections
<a name="metrics-curr-connections"></a>

이것은 엔진 지표입니다. 애플리케이션 요구 사항에 따라 이 지표에 대한 경보 임곗값을 결정하는 것이 좋습니다.

*CurrConnections* 개수가 증가하는 것은 애플리케이션에 문제가 있음을 나타내며 이 문제를 해결하려면 애플리케이션 동작을 확인해야 합니다.

## Memory
<a name="metrics-memory"></a>

메모리는 Valkey 및 Redis OSS의 핵심적인 측면입니다. 데이터 손실을 방지하고 데이터 집합의 향후 증가를 수용하려면 클러스터의 메모리 사용률을 파악할 필요가 있습니다. 노드의 메모리 사용률에 대한 통계는 [INFO](https://valkey.io/commands/info) 명령의 메모리 섹션에서 확인할 수 있습니다.

## Network
<a name="metrics-network"></a>

클러스터의 네트워크 대역폭 용량을 결정하는 요인 중 하나는 선택한 노드 유형입니다. 노드의 네트워크 용량에 대한 자세한 내용은 [Amazon MemoryDB 요금](https://aws.amazon.com/memorydb/pricing/) 섹션을 참조하세요.

## Latency
<a name="metrics-latency"></a>

지연 시간 지표 `SuccessfulWriteRequestLatency` 및 `SuccessfulReadRequestLatency`는 Valkey 엔진의 MemoryDB가 요청에 응답하는 데 걸리는 총 시간을 측정합니다.

**참고**  
Valkey 클라이언트에서 CLIENT REPLY가 활성화된 상태에서 Valkey 파이프라이닝을 사용할 때 `SuccessfulWriteRequestLatency` 및 `SuccessfulReadRequestLatency` 지표에 대한 팽창된 값이 발생할 수 있습니다. Valkey 파이프라이닝은 각 개별 명령에 대한 응답을 기다리지 않고 한 번에 여러 명령을 실행하여 성능을 개선하는 기법입니다. 값이 부풀어 오르지 않도록 하려면 [CLIENT REPLY OFF](https://valkey.io/commands/client-reply/)를 사용하여 명령을 파이프라인하도록 Redis 클라이언트를 구성하는 것이 좋습니다.

## 복제
<a name="metrics-replication"></a>

복제되는 데이터의 볼륨은 `ReplicationBytes` 지표를 통해 확인할 수 있습니다. 복제 용량 처리량에 대해 `MaxReplicationThroughput`을 모니터링할 수 있습니다. 최대 복제 용량 처리량에 도달하면 샤드를 더 추가하는 것이 좋습니다.

`ReplicationDelayedWriteCommands`은(는) 또한 워크로드가 최대 복제 용량 처리량을 초과하는지 여부를 나타낼 수도 있습니다. MemoryDB 복제에 대한 자세한 내용은 [MemoryDB 복제 이해](https://docs.aws.amazon.com/memorydb/latest/devguide/replication.html)를 참조하세요.

# 지표 통계 및 기간 선택
<a name="metrics.ChoosingStatisticsAndPeriods"></a>

CloudWatch에서 각 지표의 통계 및 기간을 선택하도록 허용하며 모든 조합이 유용한 것은 아닙니다. 예를 들어, CPUUtilization에 대한 Average, Minimum 및 Maximum 통계는 유용하지만 Sum 통계는 유용하지 않습니다.

모든 MemoryDB 샘플은 각 개별 노드에 대해 60초 동안 게시됩니다. 60초 기간 동안 노드 지표는 단일 샘플만 포함할 수 있습니다.

# CloudWatch 지표 모니터링
<a name="cloudwatchmetrics"></a>

MemoryDB와 CloudWatch가 서로 통합되어 있어서 다양한 지표를 수집할 수 있습니다. CloudWatch를 사용하여 이러한 지표를 모니터링할 수 있습니다.

**참고**  
다음 예제를 실행하려면 CloudWatch 명령줄 도구가 필요합니다. CloudWatch에 대해 자세한 내용을 알아보고 개발자 도구를 다운로드하려면 [ CloudWatch 제품 페이지](https://aws.amazon.com/cloudwatch)를 참조하세요.

다음 절차에서는 CloudWatch를 사용하여 지난 시간 클러스터의 스토리지 공간 통계를 수집하는 방법을 보여줍니다.

**참고**  
아래 예제에 나온 `StartTime` 및 `EndTime` 값은 설명을 돕기 위해 지정되었습니다. 노드의 올바른 시작 및 종료 시간 값으로 대체해야 합니다.

MemoryDB 제한에 대한 자세한 내용은 MemoryDB의 [AWS서비스 제한](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_memorydb)을 참조하세요.

## CloudWatch 지표 모니터링(콘솔)
<a name="cloudwatchmetricsclusters.viewdetails"></a>

 **클러스터의 CPU 사용률 통계를 수집하려면** 

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)에서 MemoryDB 콘솔을 엽니다.

1. 지표를 확인할 노드를 선택합니다.
**참고**  
20개보다 많은 노드를 선택하면 콘솔에 지표가 표시되지 않습니다.

   1. AWS Management Console의 **클러스터** 페이지에서 하나 이상의 클러스터 이름을 클릭합니다.

      클러스터의 세부 정보 페이지가 나타납니다.

   1. 창 맨 위의 [**Nodes**] 탭을 클릭합니다.

   1. 세부 정보 창의 [**Nodes**] 탭에서 지표를 확인할 노드를 선택합니다.

      사용 가능한 CloudWatch 지표 목록이 콘솔 창 하단에 나타납니다.

   1. [**CPU Utilization**] 지표를 클릭합니다.

      선택한 지표가 표시된 CloudWatch 콘솔이 열립니다. **통계** 및 **기간** 드롭다운 목록 상자와 **시간 범위** 탭을 사용하여 표시되는 지표를 변경할 수 있습니다.

## CloudWatch CLI를 사용하여 CloudWatch 지표 모니터링
<a name="cloudwatchmetrics.cli"></a>

 **클러스터의 CPU 사용률 통계를 수집하려면** 
+ CloudWatch 명령 **aws cloudwatch get-metric-statistics**을(를) 다음 파라미터와 함께 사용합니다. 시작 및 종료 시간은 예제와 같이 표시되며 적절한 시작 및 종료 시간으로 대체해야 합니다.

  Linux, macOS, Unix의 경우:

  ```
  1. aws cloudwatch get-metric-statistics CPUUtilization \
  2.     --dimensions=ClusterName=mycluster,NodeId=0002" \
  3.     --statistics=Average \
  4.     --namespace="AWS/MemoryDB" \
  5.     --start-time 2013-07-05T00:00:00 \
  6.     --end-time 2013-07-06T00:00:00 \
  7.     --period=60
  ```

  Windows의 경우:

  ```
  1. mon-get-stats CPUUtilization ^
  2.     --dimensions=ClusterName=mycluster,NodeId=0002" ^
  3.     --statistics=Average ^
  4.     --namespace="AWS/MemoryDB" ^
  5.     --start-time 2013-07-05T00:00:00 ^
  6.     --end-time 2013-07-06T00:00:00 ^
  7.     --period=60
  ```

## CloudWatch API를 사용하여 CloudWatch 지표 모니터링
<a name="cloudwatchmetrics.api"></a>

 **클러스터의 CPU 사용률 통계를 수집하려면** 
+ CloudWatch API `GetMetricStatistics`를 다음 파라미터와 함께 호출합니다. 시작 및 종료 시간은 예제와 같이 표시되며 적절한 시작 및 종료 시간으로 대체해야 합니다.
  + `Statistics.member.1``=Average`
  + `Namespace``=AWS/MemoryDB`
  + `StartTime``=2013-07-05T00:00:00`
  + `EndTime``=2013-07-06T00:00:00`
  + `Period``=60`
  + `MeasureName``=CPUUtilization`
  + `Dimensions``=ClusterName=mycluster,NodeId=0002`  
**Example**  

  ```
   1. http://monitoring.amazonaws.com/
   2.     ?SignatureVersion=4
   3.     &Action=GetMetricStatistics
   4.     &Version=2014-12-01
   5.     &StartTime=2013-07-16T00:00:00
   6.     &EndTime=2013-07-16T00:02:00
   7.     &Period=60
   8.     &Statistics.member.1=Average
   9.     &Dimensions.member.1="ClusterName=mycluster"
  10.     &Dimensions.member.2="NodeId=0002"
  11.     &Namespace=Amazon/memorydb
  12.     &MeasureName=CPUUtilization						
  13.     &Timestamp=2013-07-07T17%3A48%3A21.746Z
  14.     &AWS;AccessKeyId=<&AWS; Access Key ID>
  15.     &Signature=<Signature>
  ```

# MemoryDB 이벤트 모니터링
<a name="monitoring-events"></a>

클러스터에서 중요 이벤트가 발생하면 MemoryDB는 특정 Amazon SNS 주제에 알림을 전송합니다. 이러한 예에는 노드 추가 실패, 노드 추가 성공, 보안 그룹 수정 등이 있습니다. 주요 이벤트를 모니터링하면 클러스터의 현재 상태를 파악할 수 있으며, 이벤트에 따라 교정 작업을 수행할 수도 있습니다.

**Topics**
+ [MemoryDB Amazon SNS 알림 관리](mdbevents.sns.md)
+ [MemoryDB 이벤트 보기](mdbevents.viewing.md)
+ [이벤트 알림 및 Amazon SNS](memorydbsns.md)

# MemoryDB Amazon SNS 알림 관리
<a name="mdbevents.sns"></a>

Amazon Simple Notification Service(SNS)를 사용하여 중요한 클러스터 이벤트에 대해 알림을 보내도록 MemoryDB를 구성할 수 있습니다. 이러한 예에서는 Amazon SNS 항목의 Amazon 리소스 이름(ARN)으로 클러스터를 구성하여 알림을 받습니다.

**참고**  
이 항목에서는 Amazon SNS에 가입했으며 Amazon SNS 주제를 설정 및 구독했다고 가정합니다. 이렇게 하는 방법에 대한 정보는 [Amazon Simple Notification Service 개발자 안내서](https://docs.aws.amazon.com/sns/latest/dg/)를 참조하세요.

## Amazon SNS 주제 추가
<a name="mdbevents.sns.adding"></a>

다음 섹션은 AWS 콘솔, AWS CLI 또는 MemoryDB API를 사용하여 Amazon SNS 주제를 추가하는 방법을 보여줍니다.

### Amazon SNS 주제 추가(콘솔)
<a name="mdbevents.sns.addingclusters.viewdetails.console"></a>

 다음 절차는 클러스터에 대해 Amazon SNS 주제를 추가하는 방법을 보여줍니다.

**참고**  
 이 프로세스는 Amazon SNS 주제를 수정하는 데에도 사용할 수 있습니다.

**클러스터에 대해 Amazon SNS 주제를 추가 또는 수정하려면(콘솔)**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)에서 MemoryDB 콘솔을 엽니다.

1. ** 클러스터**에서 Amazon SNS 주제 ARN을 추가 또는 수정할 클러스터를 선택합니다.

1. **수정**을 선택합니다.

1. **클러스터 수정**의 **SNS 알림에 대한 주제**에서 추가하려는 SNS 주제를 선택하거나 **수동 ARN 입력**을 선택하고 Amazon SNS 주제의 ARN을 입력합니다.

1. **수정**을 선택합니다.

### Amazon SNS 주제 추가(AWS CLI)
<a name="mdbevents.sns.adding.cli"></a>

클러스터에 대해 Amazon SNS 주제를 추가 또는 수정하려면 AWS CLI 명령 `update-cluster`를 사용합니다.

다음 코드 예제는 Amazon SNS 주제 arn을 *my-cluster*에 추가합니다.

Linux, macOS, Unix의 경우:

```
aws memorydb update-cluster \
    --cluster-name my-cluster \
    --sns-topic-arn arn:aws:sns:us-east-1:565419523791:memorydbNotifications
```

Windows의 경우:

```
aws memorydb update-cluster ^
    --cluster-name my-cluster ^
    --sns-topic-arn arn:aws:sns:us-east-1:565419523791:memorydbNotifications
```

자세한 내용은 [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)를 참조하세요.

### Amazon SNS 주제 추가(MemoryDB API)
<a name="mdbevents.sns.adding.api"></a>

클러스터에 대해 Amazon SNS 주제를 추가 또는 업데이트하려면 다음 파라미터와 함께 `UpdateCluster` 작업을 호출합니다.
+ `ClusterName``=my-cluster`
+ `SnsTopicArn``=arn%3Aaws%3Asns%3Aus-east-1%3A565419523791%3AmemorydbNotifications`

클러스터에 대해 Amazon SNS 주제를 추가 또는 업데이트하려면 `UpdateCluster` 작업을 직접적으로 호출합니다.

자세한 내용은 [UpdateCluster를](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html) 참조하세요.

## Amazon SNS 알림 활성화 및 비활성화
<a name="mdbevents.sns.disabling"></a>

 클러스터에 대해 알림을 켜거나 끌 수 있습니다. 다음 절차는 Amazon SNS 알림을 비활성화하는 방법을 보여줍니다.

### Amazon SNS 알림 활성화 및 비활성화(콘솔)
<a name="mdbevents.sns.disablingclusters.viewdetails.console"></a>

**AWS Management Console을 사용하여 Amazon SNS 알림을 비활성화하려면**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)에서 MemoryDB 콘솔을 엽니다.

1. 알림을 수정할 클러스터의 이름 왼쪽에 있는 라디오 버튼을 선택합니다.

1. **수정**을 선택합니다.

1. **클러스터 수정**의 **SNS 알림에 대한 주제**에서 *알림 비활성화*를 선택합니다.

1. **수정**을 선택합니다.

### Amazon SNS 알림 활성화 및 비활성화(AWS CLI)
<a name="mdbevents.sns.disabling.cli"></a>

Amazon SNS 알림을 비활성화하려면 다음 파라미터와 함께 `update-cluster` 명령을 사용합니다.

Linux, macOS, Unix의 경우:

```
aws memorydb update-cluster \
    --cluster-name my-cluster \
    --sns-topic-status inactive
```

Windows의 경우:

```
aws memorydb update-cluster ^
    --cluster-name my-cluster ^
    --sns-topic-status inactive
```

### Amazon SNS 알림 활성화 및 비활성화(MemoryDB API)
<a name="mdbevents.sns.disabling.api"></a>

Amazon SNS 알림을 비활성화하려면 다음 파라미터와 함께 `UpdateCluster` 작업을 호출합니다.
+ `ClusterName``=my-cluster`
+ `SnsTopicStatus``=inactive`

이 호출은 다음과 비슷한 출력을 반환합니다.

**Example**  

```
 1. https://memory-db.us-east-1.amazonaws.com/
 2.     ?Action=UpdateCluster    
 3.     &ClusterName=my-cluster
 4.     &SnsTopicStatus=inactive
 5.     &Version=2021-01-01
 6.     &SignatureVersion=4
 7.     &SignatureMethod=HmacSHA256
 8.     &Timestamp=20210801T220302Z
 9.     &X-Amz-Algorithm=Amazon4-HMAC-SHA256
10.     &X-Amz-Date=20210801T220302Z
11.     &X-Amz-SignedHeaders=Host
12.     &X-Amz-Expires=20210801T220302Z
13.     &X-Amz-Credential=<credential>
14.     &X-Amz-Signature=<signature>
```

# MemoryDB 이벤트 보기
<a name="mdbevents.viewing"></a>

MemoryDB 로그는 클러스터, 보안 그룹 및 파라미터 그룹과 관련된 이벤트를 기록합니다. 여기에는 이벤트 날짜 및 시간, 이벤트의 원본 이름 및 원본 유형, 이벤트 설명 등의 정보가 포함됩니다. MemoryDB 콘솔, AWS CLI `describe-events` 명령 또는 MemoryDB API 작업 `DescribeEvents`을 사용하여 로그에서 이벤트를 쉽게 검색할 수 있습니다.

다음 절차는 지난 24시간(1440분) 동안의 모든 MemoryDB 이벤트를 보는 방법을 보여줍니다.

## MemoryDB 이벤트 보기(콘솔)
<a name="mdbevents.viewingclusters.viewdetails"></a>

다음 절차는 MemoryDB 콘솔을 사용하여 이벤트를 표시합니다.

**MemoryDB 콘솔을 사용하여 이벤트를 보려면**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)에서 MemoryDB 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **이벤트**를 선택합니다.

   사용 가능한 모든 이벤트가 나열된 *이벤트* 화면이 나타납니다. 이벤트 화면에서 목록의 각 행은 이벤트 하나를 나타내며 이벤트 소스, 이벤트 유형(클러스터, parameter-group, acl, 보안 그룹 또는 서브넷 그룹), 이벤트의 GMT 시간 및 이벤트 설명을 표시합니다.

   [**Filter**]를 사용하여 이벤트 목록에서 모든 이벤트를 볼지 특정 유형의 이벤트만 볼지를 지정할 수 있습니다.

## MemoryDB 이벤트 보기(AWS CLI)
<a name="mdbevents.viewing.cli"></a>

AWS CLI을(를) 사용하여 MemoryDB 이벤트의 목록을 생성하려면 `describe-events` 명령을 사용합니다. 선택적 파라미터를 사용하여 나열된 이벤트의 유형, 나열된 이벤트의 기간, 나열할 이벤트의 최대 수 등을 제어할 수 있습니다.

다음 코드는 최대 40개의 클러스터 이벤트를 나열합니다.

```
aws memorydb describe-events --source-type cluster --max-results 40  
```

다음 코드는 지난 24시간(1440분) 동안의 모든 이벤트를 나열합니다.

```
aws memorydb describe-events --duration 1440  
```

`describe-events` 명령의 출력은 다음과 같습니다.

```
{
    "Events": [        
        {
            "Date": "2021-03-29T22:17:37.781Z", 
            "Message": "Added node 0001 in Availability Zone us-east-1a", 
            "SourceName": "memorydb01", 
            "SourceType": "cluster"
        }, 
        {
            "Date": "2021-03-29T22:17:37.769Z", 
            "Message": "cluster created", 
            "SourceName": "memorydb01", 
            "SourceType": "cluster"
        }
    ]
}
```

사용 가능한 파라미터 및 허용된 파라미터 값과 같은 자세한 내용은 [https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-events.html](https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-events.html)를 참조하세요.

## MemoryDB 이벤트 보기(MemoryDB API)
<a name="mdbevents.viewing.api"></a>

MemoryDB API를 사용하여 MemoryDB 이벤트의 목록을 생성하려면 `DescribeEvents` 작업을 사용합니다. 선택적 파라미터를 사용하여 나열된 이벤트의 유형, 나열된 이벤트의 기간, 나열할 이벤트의 최대 수 등을 제어할 수 있습니다.

다음 코드는 40개의 최신 클러스터 이벤트를 나열합니다.

```
https://memory-db.us-east-1.amazonaws.com/
   ?Action=DescribeEvents
   &MaxResults=40
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &SourceType=cluster
   &Timestamp=20210802T192317Z
   &Version=2021-01-01
   &X-Amz-Credential=<credential>
```

다음 코드는 지난 24시간(1440분) 동안의 클러스터 이벤트를 나열합니다.

```
https://memory-db.us-east-1.amazonaws.com/
   ?Action=DescribeEvents
   &Duration=1440
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &SourceType=cluster
   &Timestamp=20210802T192317Z
   &Version=2021-01-01
   &X-Amz-Credential=<credential>
```

위 작업을 통해 다음과 비슷한 출력이 생성되어야 합니다.

```
<DescribeEventsResponse xmlns="http://memory-db.us-east-1.amazonaws.com/doc/2021-01-01/"> 
    <DescribeEventsResult> 
        <Events> 
            <Event> 
                <Message>cluster created</Message> 
                <SourceType>cluster</SourceType> 
                <Date>2021-08-02T18:22:18.202Z</Date> 
                <SourceName>my-memorydb-primary</SourceName> 
            </Event> 
               
 (...output omitted...)
          
        </Events> 
    </DescribeEventsResult> 
    <ResponseMetadata> 
        <RequestId>e21c81b4-b9cd-11e3-8a16-7978bb24ffdf</RequestId> 
    </ResponseMetadata> 
</DescribeEventsResponse>
```

사용 가능한 파라미터 및 허용된 파라미터 값과 같은 자세한 내용은 [https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeEvents.html](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeEvents.html)를 참조하세요.

# 이벤트 알림 및 Amazon SNS
<a name="memorydbsns"></a>

MemoryDB는 클러스터에서 중요 이벤트가 발생하는 경우, Amazon Simple Notification Service(SNS)를 사용하여 메시지를 게시할 수 있습니다. 이 기능은 클러스터의 개별 노드 엔드포인트에 연결된 클라이언트 머신의 서버 목록을 새로 고침하는 데 사용될 수 있습니다.

**참고**  
이용 요금 정보 및 Amazon SNS 설명서 링크 등 Amazon Simple Notification Service(SNS)에 대한 자세한 내용은 [Amazon SNS 제품 페이지](https://aws.amazon.com/sns)를 참조하세요.

알림은 지정된 Amazon SNS *주제*에 대해 게시됩니다. 다음은 알림에 대한 요구 사항입니다.
+ MemoryDB 알림에 대해 주제 하나만 구성할 수 있습니다.
+ Amazon SNS 주제를 소유한 AWS 계정은 알림이 활성화된 클러스터를 소유하는 계정과 동일해야 합니다.

## MemoryDB 이벤트
<a name="memorydbSNS.Events"></a>

다음 MemoryDB 이벤트는 Amazon SNS 알림을 트리거합니다.


| Event Name | 메시지 | 설명 | 
| --- | --- | --- | 
|  MemoryDB:AddNodeComplete  |  "Modified number of nodes from %d to %d"  |  노드가 클러스터에 추가되었고 사용할 준비가 되어 있습니다.  | 
|  무료 IP 주소가 부족함으로 인한 MemoryDB:AddNodeFailed  |  "Failed to modify number of nodes from %d to %d due to insufficient free IP addresses"  |  사용 가능한 IP 주소가 충분하지 않아 노드를 추가하지 못했습니다.  | 
|  MemoryDB:ClusterParametersChanged  |  "Updated parameter group for the cluster" 생성 시 `"Updated to use a ParameterGroup %s"`도 전송합니다.  |  하나 이상의 클러스터 파라미터가 변경되었습니다.  | 
|  MemoryDB:ClusterProvisioningComplete  |  "Cluster created."  |  클러스터의 프로비저닝이 완료되어 클러스터에 있는 노드를 사용할 수 있습니다.  | 
|  호환되지 않는 네트워크 상태로 인한 MemoryDB:ClusterProvisioningFailed  |  "Failed to create cluster due to incompatible network state. %s"  |  존재하지 않는 Virtual Private Cloud(VPC)에서 새로운 클러스터를 실행하려고 시도했습니다.  | 
|  MemoryDB:ClusterRestoreFailed  |  "Restore from %s failed for node %s. %s"  |  MemoryDB가 클러스터를 스냅샷 데이터로 채우지 못했습니다. Amazon S3에 스냅샷 파일이 없거나 해당 파일에 대한 권한이 잘못되었기 때문일 수 있습니다. 클러스터를 설명할 경우, 상태는 `restore-failed`입니다. 클러스터를 삭제하고 다시 시작해야 합니다. 자세한 내용은 [외부에서 생성된 스냅샷으로 새 클러스터 시드](snapshots-seeding-redis.md) 섹션을 참조하세요.  | 
| MemoryDB:ClusterScalingComplete  | `"Succeeded applying modification to node type to %s."` | 클러스터의 스케일 업이 성공적으로 완료되었습니다. | 
| MemoryDB:ClusterScalingFailed | `"Failed applying modification to node type to %s."` | 클러스터에 대한 스케일 업 작업이 실패했습니다. | 
|  MemoryDB:NodeReplaceStarted  |  "Recovering node %s"  |  MemoryDB가 노드를 실행하는 호스트 성능이 저하되었거나 연결되지 않음을 감지하여 노드 교체를 시작했습니다.  교체된 노드의 DNS 항목은 변경되지 않습니다.  대부분의 경우에 이 이벤트가 발생할 때 클라이언트의 서버 목록을 새로 고침하지 않아도 됩니다. 하지만 일부 클라이언트 라이브러리는 MemoryDB가 노드를 교체한 후에도 캐시 노드 사용을 중단할 수 있습니다. 이 경우에 애플리케이션은 이 이벤트가 발생할 때 서버 목록을 새로 고침해야 합니다.  | 
|  MemoryDB:NodeReplaceComplete  |  "Finished recovery for node %s"  |  MemoryDB가 노드를 실행하는 호스트 성능이 저하되었거나 연결되지 않음을 감지하여 노드 교체를 완료했습니다.  교체된 노드의 DNS 항목은 변경되지 않습니다.  대부분의 경우에 이 이벤트가 발생할 때 클라이언트의 서버 목록을 새로 고침하지 않아도 됩니다. 하지만 일부 클라이언트 라이브러리는 MemoryDB가 노드를 교체한 후에도 캐시 노드 사용을 중단할 수 있습니다. 이 경우에 애플리케이션은 이 이벤트가 발생할 때 서버 목록을 새로 고침해야 합니다.  | 
|  MemoryDB:CreateClusterComplete  |  "Cluster created"  |  클러스터가 성공적으로 생성되었습니다.  | 
|  MemoryDB:CreateClusterFailed  |  "Failed to create cluster due to unsuccessful creation of its node(s)."‘and’"Deleting all nodes belonging to this cluster."  |  클러스터가 생성되지 않았습니다.  | 
|  MemoryDB:DeleteClusterComplete  |  "Cluster deleted."  |  클러스터 및 연결된 모든 노드 삭제를 완료했습니다.  | 
| MemoryDB:FailoverComplete | `"Failover to replica node %s completed"` | 복제본 노드에 대한 장애 조치가 성공했습니다. | 
|  MemoryDB:NodeReplacementCanceled  |  "The replacement of node %s which was scheduled during the maintenance window from start time: %s, end time: %s has been canceled"  |  교체가 예약되어 있는 클러스터의 노드가 더 이상 교체 예약이 되지 않습니다.  | 
|  MemoryDB:NodeReplacementRescheduled  |  "The replacement in maintenance window for node %s has been re-scheduled from previous start time: %s, previous end time: %s to new start time: %s, new end time: %s"  |  이전에 교체가 예약되어 있는 클러스터의 노드가 알림에 설명된 새 기간 동안 교체가 예약됩니다. 수행할 수 있는 작업에 대한 자세한 내용은 [노드 교체](nodes.nodereplacement.md) 섹션을 참조하세요.  | 
|  MemoryDB:NodeReplacementScheduled  |  "The node %s is scheduled for replacement during the maintenance window from start time: %s to end time: %s"  |  클러스터의 노드가 알림에 설명된 기간 동안 교체가 예약됩니다. 수행할 수 있는 작업에 대한 자세한 내용은 [노드 교체](nodes.nodereplacement.md) 섹션을 참조하세요.  | 
|  MemoryDB:RemoveNodeComplete  |  "Removed node %s"  |  노드가 클러스터에서 제거되었습니다.  | 
|  MemoryDB:SnapshotComplete  |  "Snapshot %s succeeded for node %s"  |  스냅샷이 성공적으로 완료되었습니다.  | 
|  MemoryDB:SnapshotFailed  |  "Snapshot %s failed for node %s"  |  스냅샷이 실패했습니다. 원인에 대한 자세한 내용은 클러스터의 이벤트를 참조하세요. 스냅샷을 설명할 경우, [DescribeSnapshots](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeSnapshots.html)를 참조하세요. 상태는 `failed`입니다.  | 

# AWS CloudTrail을 사용하여 MemoryDB API 직접 호출 로깅
<a name="logging-using-cloudtrail"></a>

MemoryDB는 MemoryDB에서 사용자, 역할 또는 AWS 서비스가 수행한 작업에 대한 레코드를 제공하는 서비스인 AWS CloudTrail과 통합됩니다. CloudTrail은 MemoryDB 콘솔의 직접 호출, MemoryDB API 작업에 대한 코드 직접 호출을 포함하여 MemoryDB에 대한 모든 API 직접 호출을 이벤트로 캡처합니다. 추적을 생성하면 MemoryDB 이벤트를 포함한 CloudTrail 이벤트를 지속적으로 Amazon S3 버킷에 배포할 수 있습니다. 추적을 구성하지 않은 경우에도 CloudTrail 콘솔의 **이벤트 기록**에서 최신 이벤트를 볼 수 있습니다. CloudTrail에서 수집한 정보를 사용하여 MemoryDB에 수행된 요청, 요청이 수행된 IP 주소, 요청을 수행한 사람, 요청이 수행된 시간 및 추가 세부 정보를 확인할 수 있습니다.

CloudTrail에 대한 자세한 내용은 [AWS CloudTrail 사용 설명서](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)를 참조하세요.

## CloudTrail의 MemoryDB 정보
<a name="memorydb-info-in-cloudtrail"></a>

CloudTrail은 계정 생성 시 AWS 계정에서 활성화됩니다. MemoryDB에서 활동이 발생하면 해당 활동이 **이벤트 기록**의 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. AWS 계정에서 최신 이벤트를 확인, 검색 및 다운로드할 수 있습니다. 자세한 설명은 [CloudTrail 이벤트 기록으로 이벤트 보기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)를 참조하세요.

MemoryDB에 대한 이벤트를 포함하여 AWS 계정에 이벤트를 지속적으로 기록하려면 추적을 생성합니다. 트레일을 통해 CloudTrail은 로그 파일을 Amazon S3 버킷으로 전송할 수 있습니다. 콘솔에서 트레일을 생성하면 기본적으로 모든 리전에 트레일이 적용됩니다. 추적은 AWS파티션에 있는 모든 리전의 이벤트를 로깅하고 지정된 Amazon S3 버킷으로 로그 파일을 전송합니다. 추가적으로, CloudTrail 로그에서 수집된 이벤트 데이터를 추가 분석 및 처리하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 내용은 다음 자료를 참조하세요.
+ [트레일 생성 개요](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 지원 서비스 및 통합](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [CloudTrail에서 Amazon SNS 알림 구성](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [여러 리전으로부터 CloudTrail 로그 파일 받기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) 및 [여러 계정으로부터 CloudTrail 로그 파일 받기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

MemoryDB의 모든 작업은 CloudTrail에서 로깅됩니다. 예를 들어 `CreateCluster`, `DescribeClusters`, `UpdateCluster` 작업을 직접 호출하면 CloudTrail 로그 파일에 항목이 생성됩니다.

모든 이벤트 또는 로그 항목에는 요청을 생성했던 사용자에 대한 정보가 포함됩니다. ID 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.
+ 요청을 루트로 했는지 아니면 IAM 사용자 보안 인증 정보로 했는지 여부.
+ 역할 또는 페더레이션 사용자의 임시 보안 인증을 사용하여 요청이 생성되었는지 여부.
+ 다른 AWS 서비스에서 요청했는지.

자세한 설명은 [CloudTrail userIdentity 요소](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)를 참조하세요.

## MemoryDB 로그 파일 항목에 대한 이해
<a name="understanding-memorydb-entries"></a>

추적이란 지정한 S3 버킷에 이벤트를 로그 파일로 입력할 수 있게 하는 구성입니다. CloudTrail 로그 파일에는 하나 이상의 로그 항목이 포함될 수 있습니다. 이벤트는 모든 소스의 단일 요청을 나타내며 요청된 작업, 작업 날짜와 시간, 요청 파라미터 등에 대한 정보를 포함하고 있습니다. CloudTrail 로그 파일은 퍼블릭 API 직접 호출에 대한 순서 지정된 스택 추적이 아니기 때문에 특정 순서로 표시되지 않습니다.

다음은 `CreateCluster` 작업을 보여 주는 CloudTrail 로그 항목이 나타낸 예제입니다.

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "EKIAUAXQT3SWDEXAMPLE",
        "arn": "arn:aws:iam::123456789012:user/john",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "userName": "john"
    },
    "eventTime": "2021-07-10T17:56:46Z",
    "eventSource": "memorydb.amazonaws.com",
    "eventName": "CreateCluster",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.01",
    "userAgent": "aws-cli/2.2.29 Python/3.9.6 Darwin/19.6.0 source/x86_64 prompt/off command/memorydb.create-cluster",
    "requestParameters": {
        "clusterName": "memorydb-cluster",
        "nodeType": "db.r6g.large",
        "subnetGroupName": "memorydb-subnet-group",
        "aCLName": "open-access"
    },
    "responseElements": {
        "cluster": {
            "name": "memorydb-cluster",
            "status": "creating",
            "numberOfShards": 1,
            "availabilityMode": "MultiAZ",
            "clusterEndpoint": {
                "port": 6379
            },
            "nodeType": "db.r6g.large",
            "engineVersion": "6.2",
            "enginePatchVersion": "6.2.6",
            "parameterGroupName": "default.memorydb-redis6",
            "parameterGroupStatus": "in-sync",
            "subnetGroupName": "memorydb-subnet-group",
            "tLSEnabled": true,
            "aRN": "arn:aws:memorydb:us-east-1:123456789012:cluster/memorydb-cluster",
            "snapshotRetentionLimit": 0,
            "maintenanceWindow": "tue:06:30-tue:07:30",
            "snapshotWindow": "09:00-10:00",
            "aCLName": "open-access",
            "dataTiering": "false",
            "autoMinorVersionUpgrade": true
        }
    },
    "requestID": "506fc951-9ae2-42bb-872c-98028dc8ed11",
    "eventID": "2ecf3dc3-c931-4df0-a2b3-be90b596697e",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "eventCategory": "Management"
}
```

다음은 `DescribeClusters` 작업을 설명하는 CloudTrail 로그 항목을 보여 주는 예시입니다. 모든 MemoryDB Describe 및 List 직접 호출(`Describe*` 및 `List*`)에 대해 `responseElements` 섹션이 제거되고 `null`로 표시됩니다.

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "EKIAUAXQT3SWDEXAMPLE",
        "arn": "arn:aws:iam::123456789012:user/john",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "userName": "john"
    },
    "eventTime": "2021-07-10T18:39:51Z",
    "eventSource": "memorydb.amazonaws.com",
    "eventName": "DescribeClusters",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.01",
    "userAgent": "aws-cli/2.2.29 Python/3.9.6 Darwin/19.6.0 source/x86_64 prompt/off command/memorydb.describe-clusters",
    "requestParameters": {
        "maxResults": 50,
        "showShardDetails": true
    },
    "responseElements": null,
    "requestID": "5e831993-52bb-494d-9bba-338a117c2389",
    "eventID": "32a3dc0a-31c8-4218-b889-1a6310b7dd50",
    "readOnly": true,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "eventCategory": "Management"
}
```

다음 예제는 `UpdateCluster` 작업을 기록하는 CloudTrail 로그 항목을 보여줍니다.

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "EKIAUAXQT3SWDEXAMPLE",
        "arn": "arn:aws:iam::123456789012:user/john",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "userName": "john"
    },
    "eventTime": "2021-07-10T19:23:20Z",
    "eventSource": "memorydb.amazonaws.com",
    "eventName": "UpdateCluster",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.01",
    "userAgent": "aws-cli/2.2.29 Python/3.9.6 Darwin/19.6.0 source/x86_64 prompt/off command/memorydb.update-cluster",
    "requestParameters": {
        "clusterName": "memorydb-cluster",
        "snapshotWindow": "04:00-05:00",
        "shardConfiguration": {
            "shardCount": 2
        }
    },
    "responseElements": {
        "cluster": {
            "name": "memorydb-cluster",
            "status": "updating",
            "numberOfShards": 2,
            "availabilityMode": "MultiAZ",
            "clusterEndpoint": {
                "address": "clustercfg.memorydb-cluster.cde8da.memorydb.us-east-1.amazonaws.com",
                "port": 6379
            },
            "nodeType": "db.r6g.large",
            "engineVersion": "6.2",
            "EnginePatchVersion": "6.2.6",
            "parameterGroupName": "default.memorydb-redis6",
            "parameterGroupStatus": "in-sync",
            "subnetGroupName": "memorydb-subnet-group",
            "tLSEnabled": true,
            "aRN": "arn:aws:memorydb:us-east-1:123456789012:cluster/memorydb-cluster",
            "snapshotRetentionLimit": 0,
            "maintenanceWindow": "tue:06:30-tue:07:30",
            "snapshotWindow": "04:00-05:00",
            "autoMinorVersionUpgrade": true,
            "DataTiering": "false"
        }
    },
    "requestID": "dad021ce-d161-4365-8085-574133afab54",
    "eventID": "e0120f85-ab7e-4ad4-ae78-43ba15dee3d8",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "eventCategory": "Management"
}
```

다음은 `CreateUser` 작업을 설명하는 CloudTrail 로그 항목을 보여 주는 예시입니다. 민감한 데이터를 포함하는 MemoryDB 직접 호출의 경우 아래 `requestParameters` 섹션에 표시된 대로 해당 CloudTrail 이벤트에서 관련 데이터가 삭제된다는 점에 유의하세요.

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "EKIAUAXQT3SWDEXAMPLE",
        "arn": "arn:aws:iam::123456789012:user/john",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "userName": "john"
    },
    "eventTime": "2021-07-10T19:56:13Z",
    "eventSource": "memorydb.amazonaws.com",
    "eventName": "CreateUser",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.01",
    "userAgent": "aws-cli/2.2.29 Python/3.9.6 Darwin/19.6.0 source/x86_64 prompt/off command/memorydb.create-user",
    "requestParameters": {
        "userName": "memorydb-user",
        "authenticationMode": {
            "type": "password",
            "passwords": [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ]
        },
        "accessString": "~* &* -@all +@read"
    },
    "responseElements": {
        "user": {
            "name": "memorydb-user",
            "status": "active",
            "accessString": "off ~* &* -@all +@read",
            "aCLNames": [],
            "minimumEngineVersion": "6.2",
            "authentication": {
                "type": "password",
                "passwordCount": 1
            },
            "aRN": "arn:aws:memorydb:us-east-1:123456789012:user/memorydb-user"
        }
    },
    "requestID": "ae288b5e-80ab-4ff8-989a-5ee5c67cd193",
    "eventID": "ed096e3e-16f1-4a23-866c-0baa6ec769f6",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "eventCategory": "Management"
}
```