

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon CloudWatch 監控 MemoryDB
<a name="monitoring-cloudwatch"></a>

您可以使用 CloudWatch 監控 MemoryDB，這會收集原始資料並將其處理為可讀且近乎即時的指標。這些統計資料會保留 15 個月，以便您存取歷史資訊，並更清楚 Web 應用程式或服務的執行效能。您也可以設定留意特定閾值的警示，當滿足這些閾值時傳送通知或採取動作。如需詳細資訊，請參閱 [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 是單執行緒，我們建議您監控具有 4 個或更多 vCPUs節點的 EngineCPUUtilization 指標。 |  百分比  | 
| FreeableMemory  |  主機上可用的記憶體數量。此數字衍生自 RAM 中的記憶體，以及作業系統報告為可釋放的緩衝區。 |  位元組  | 
| NetworkBytesIn |  主機已從網路讀取的位元組數。 |  位元組  | 
| NetworkBytesOut | 執行個體在所有網路界面上送出的位元組數目。 |  位元組  | 
| NetworkPacketsIn | 執行個體在所有網路界面上收到的封包數目。此指標識別單一執行個體上的傳入流量 (封包數目)。 | 計數  | 
| NetworkPacketsOut | 執行個體在所有網路界面上送出的封包數目。此指標識別單一執行個體上的傳出流量 (封包數目)。 | 計數  | 
| NetworkBandwidthInAllowanceExceeded | 因傳入的彙總頻寬超過執行個體的上限而成形的封包數目。 | 計數  | 
| NetworkConntrackAllowanceExceeded | 因為連線追蹤超過執行個體的上限且無法建立新的連線，而成形的封包數目。這可能會導致傳送或傳回執行個體流量的封包遺失。 | 計數  | 
| NetworkBandwidthOutAllowanceExceeded | 因傳出的彙總頻寬超過執行個體的上限而成形的封包數目。 | 計數  | 
| NetworkPacketsPerSecondAllowanceExceeded | 因雙向每秒封包數超過執行個體的上限而成形的封包數目。 | 計數  | 
| NetworkMaxBytesIn | 每分鐘接收位元組的每秒爆量上限。 | 位元組 | 
| NetworkMaxBytesOut  | 每分鐘傳輸位元組的每秒爆量上限。 | 位元組 | 
| NetworkMaxPacketsIn | 每分鐘接收封包的每秒爆量上限。 | 計數  | 
| NetworkMaxPacketsOut | 每分鐘傳輸封包的每秒爆量上限。 | 計數  | 
| SwapUsage |  主機已使用的交換空間的量。 |  位元組  | 

# MemoryDB 的指標
<a name="metrics.memorydb"></a>

`AWS/MemoryDB` 命名空間包含下列指標。

除了 `ReplicationLag`、`SuccessfulWriteRequestLatency`、 `EngineCPUUtilization`和 之外`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/zh_tw/memorydb/latest/devguide/metrics.memorydb.html)

這些是來自 **info commandstats** 的特定命令類型彙整。commandstats 區段會根據命令類型提供統計資料，包括呼叫次數。

如需可用命令的完整清單，請參閱 [命令](https://valkey.io/commands)。


| 指標  | 描述  | 單位  | 
| --- | --- | --- | 
| EvalBasedCmds | 以 eval 為基礎之命令的命令總數。這透過加總 commandstats eval和 衍生自 統計資料evalsha。 | 計數 | 
| GeoSpatialBasedCmds | 以 geospatial- 為基礎的之命令的命令總數。這是衍生自 commandstats 統計資料。加總了下列 geo 類型的所有命令而得出：geoadd、geodist、geohash、geopos、georadius 及 georadiusbymember。 | 計數 | 
| GetTypeCmds | read-only 類型命令的總數。這是透過加總所有read-only類型命令 commandstats (get、hget、lrange、 等） scard衍生自 統計資料。 | 計數 | 
| HashBasedCmds | 雜湊類型命令總數。這透過加總對一或多個雜湊 (hget、hkeys、hdel、 等） hvals採取行動的所有命令，衍生自 commandstats統計資料。 | 計數 | 
| HyperLogLogBasedCmds | 以 HyperLogLog 為基礎的命令總數。這透過加總所有pf類型的命令 (pfadd、pfmerge、 pfcount等），衍生自 commandstats統計資料。 | 計數 | 
|  JsonBasedCmds |  JSON 類型命令總數。這透過加總處理一或多個 JSON 文件物件的所有命令，衍生自 commandstats統計資料。 | 計數 | 
| KeyBasedCmds | 金鑰類型命令總數。這衍生自 commandstats 統計資料，加總了跨多個資料結構 (del、rename、 expire等） 對一或多個索引鍵執行動作的所有命令。 | 計數 | 
| ListBasedCmds | 清單類型命令總數。這透過加總對一或多個清單 (lindex、lrange、ltrim、 等） lpush採取行動的所有命令，衍生自 commandstats統計資料。 | 計數 | 
| PubSubBasedCmds | pub/sub 功能的命令總數。這透過加總用於 pub/sub 功能的所有命令衍生自commandstats統計資料：psubscribe、publish、pubsubpunsubscribe、、 subscribe和 unsubscribe。 | 計數 | 
| SearchBasedCmds | 次要索引和搜尋命令的總數，包括讀取和寫入命令。這透過加總處理次要索引的所有搜尋命令，衍生自 commandstats統計資料。 | 計數 | 
| SearchBasedGetCmds | 次要索引和搜尋唯讀命令的總數。這透過加總所有次要索引和搜尋取得命令，衍生自 commandstats統計資料。 | 計數 | 
| SearchBasedSetCmds | 次要索引和搜尋寫入命令的總數。這透過加總所有次要索引和搜尋集命令，衍生自 commandstats統計資料。 | 計數 | 
| SearchNumberOfIndexes | 索引的總數。 | 計數 | 
| SearchNumberOfIndexedKeys | 索引鍵總數  | 計數 | 
| SearchTotalIndexSize | 所有索引使用的記憶體 （位元組）。 | 位元組 | 
| SetBasedCmds | 集合類型命令總數。這透過加總對一或多個集合 (scard、sdiff、sadd、 sunion等） 執行動作的所有命令，衍生自 commandstats統計資料。 | 計數 | 
| SetTypeCmds | write 類型命令的總數。這透過加總在資料 (set、hset、lpop、 等） sadd上操作的所有命令mutative類型，衍生自 commandstats統計資料。 | 計數 | 
| SortedSetBasedCmds | 有序集合類型命令總數。這透過加總對一或多個已排序集合 (zcount、zrange、zadd、 等） zrank執行動作的所有命令，衍生自 commandstats統計資料。 | 計數 | 
| StringBasedCmds | 字串類型命令總數。這透過加總對一或多個字串 (strlen、setrange、 等） setex執行動作的所有命令，衍生自 commandstats統計資料。 | 計數 | 
| StreamBasedCmds | 串流類型命令總數。這透過加總對一或多個串流資料類型 (xrange、xlen、xdel、 等） xadd執行動作的所有命令，衍生自 commandstats統計資料。 | 計數 | 

# 應監控哪些指標？
<a name="metrics.whichshouldimonitor"></a>

下列 CloudWatch 指標提供 MemoryDB 效能的良好洞見。在大多數的案例中，我們建議您為這些指標設定 CloudWatch 警示，讓您可以在發生效能問題前先採取修正動作。

**Topics**
+ [CPUUtilization](#metrics-cpu-utilization)
+ [EngineCPUUtilization](#metrics-engine-cpu-utilization)
+ [SwapUsage](#metrics-swap-usage)
+ [移出](#metrics-evictions)
+ [CurrConnections](#metrics-curr-connections)
+ [記憶體](#metrics-memory)
+ [網路](#metrics-network)
+ [Latency (延遲)](#metrics-latency)
+ [複寫](#metrics-replication)

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

此為主機層級指標，以百分比報告。如需詳細資訊，請參閱[主機層級指標](metrics.HostLevel.md)。

 對於具有 2 個或以下 vCPU 的小型節點類型，請使用 `CPUUtilization ` 指標來監控工作負載。

一般而言，我們建議您將閾值設為您可用 CPU 的 90%。由於 Valkey 和 Redis OSS 是單執行緒，實際閾值應計算為節點總容量的一部分。例如，假設您使用擁有二核心的節點類型。在此情況下，CPUUtilization 的閾值將為 90/2 或 45%。若要尋找節點類型擁有的核心 (vCPUs) 數量，請參閱 [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)。

對於具有 4vCPUs或更多的較大節點類型，您可能需要使用 `EngineCPUUtilization` 指標，該指標會報告 Valkey 或 Redis OSS 引擎核心上的用量百分比。若要查看此指標是否在您的節點上可用，如需詳細資訊，請參閱 [ MemoryDB 的指標](https://docs.aws.amazon.com/memorydb/latest/devguide/metrics.memorydb.html)。

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

對於具有 4vCPUs或更多的較大節點類型，您可能需要使用 `EngineCPUUtilization` 指標，該指標會報告 Valkey 或 Redis OSS 引擎核心上的用量百分比。若要查看此指標是否在您的節點上可用，以及如需詳細資訊，請參閱 [ 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`指標，則節點可能會受到記憶體壓力。

## 移出
<a name="metrics-evictions"></a>

這是引擎指標。建議您根據應用程式需求，親自判斷此指標的警示閾值。

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

這是引擎指標。建議您根據應用程式需求，親自判斷此指標的警示閾值。

*CurrConnections* 的數字增加，可能表示您的應用程式發生問題。您需要調查應用程式行為才能處理此問題。

## 記憶體
<a name="metrics-memory"></a>

記憶體是 Valkey 和 Redis OSS 的核心層面。為避免資料遺失以及因應資料集的未來成長而調整，了解叢集的記憶體使用率是必要的。有關節點記憶體使用率的統計資料，請參閱 [INFO](https://valkey.io/commands/info) 命令的記憶體區段。

## 網路
<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 pipeline 是一種透過一次發出多個命令來改善效能的技術，無需等待對每個個別命令的回應。為了避免膨脹值，建議您使用 [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 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/) 的 MemoryDB 主控台。

1. 選取您要檢視指標的節點。
**注意**  
選取 20 個以上的節點時，會停用主控台上的指標檢視。

   1. 在 AWS 管理主控台的**叢集**頁面上，按一下一或多個叢集的名稱。

      叢集的詳細資訊頁面隨即出現。

   1. 按一下視窗頂端的 **Nodes (節點)** 標籤。

   1. 在詳細資訊視窗的**節點**索引標籤上，選取要檢視指標的節點。

      主控台視窗底部會顯示可用的 CloudWatch 指標清單。

   1. 按一下 **CPU Utilization (CPU 使用率)** 指標。

      隨即開啟 CloudWatch 主控台，並顯示您選取的指標。若要變更顯示的指標，可以使用 **Statistic (統計數字)** 和 **Period (期間)** 下拉式清單方塊和 **Time Range (時間範圍)** 索引標籤。

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