

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

# 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>
  ```