監控 Amazon DocumentDB 無伺服器 - Amazon DocumentDB

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

監控 Amazon DocumentDB 無伺服器

若要進一步了解 Amazon DocumentDB 中的監控,請參閱 監控 Amazon DocumentDB

記憶體不足:不相容參數狀態

如果其中一個無伺服器執行個體持續達到容量上限,Amazon DocumentDB 會將執行個體設定為不相容參數的狀態,以指出此條件。如需詳細資訊,請參閱避免記憶體不足錯誤

DocumentDB Serverless 的 Amazon CloudWatch 指標

若要進一步了解如何搭配 Amazon DocumentDB 使用 CloudWatch,請參閱 使用 CloudWatch 監控 Amazon DocumentDB

您可以在 CloudWatch 中檢視無伺服器執行個體,以使用 ServerlessDatabaseCapacity 指標監控每個執行個體耗用的容量。您也可以監控所有標準 DocumentDB CloudWatch 指標,例如 DatabaseConnections和 查詢。如需您可以為 Amazon DocumentDB 監控的 CloudWatch 指標完整清單,請參閱 使用 CloudWatch 監控 Amazon DocumentDB 。下列 CloudWatch 執行個體層級指標對於監控您了解 DocumentDB 無伺服器執行個體如何向上和向下擴展非常重要。所有這些指標每秒計算一次。如此一來,您就可以監控無伺服器執行個體的目前狀態。您可以設定警示,以便在任何無伺服器執行個體接近容量相關指標的閾值時通知您。您可決定最小和最大容量設定是否合適,或者是否需要進行調整。您可決定將精力集中於最佳化您資料庫效率之處。

  • ServerlessDatabaseCapacity — 做為執行個體層級指標,它會報告目前執行個體容量所代表的 DCUs 數量。做為叢集層級指標,代表叢集中所有 DocumentDB 無伺服器執行個體ServerlessDatabaseCapacity的值平均值。

  • DCUUtilization. — 此指標是 DocumentDB 無伺服器的新指標。此值以百分比表示。其計算方式為ServerlessDatabaseCapacity指標值除以叢集的最大 DCU 值。請考慮下列指導方針來解譯此指標並採取行動:

    • 如果此指標接近 的值100.0,則執行個體已盡可能向上擴展。考慮增加叢集的最大 DCU 設定。如此一來,寫入器和讀取器執行個體都可以擴展到更高的容量。

    • 假設唯讀工作負載會導致讀取器執行個體接近 DCUUtilization100.0,而寫入器執行個體並未接近其最大容量。在此情況下,請考慮將其他讀取器執行個體新增至叢集。如此一來,您可以將工作負載的唯讀部分分散到更多執行個體,以減少每個讀取器執行個體的負載。

    • 假設您正在執行生產應用程式,其中效能和可擴展性是主要考慮因素。在這種情況下,您可以將叢集的最大 DCU 值設定為高數字。您的目標是讓DCUUtilization指標一律低於 100.0。使用高最大 DCU 值,您可以確信有足夠的空間,以防資料庫活動發生意外尖峰。您僅需為實際使用的資料庫容量付費。

  • CPUUtilization — 此指標的解譯方式 DocumentDB 與佈建執行個體中的解譯方式不同。對於 DocumentDB 無伺服器,此值是百分比,計算方式為目前使用的 CPU 數量,除以叢集最大 DCU 值下可用的 CPU 容量。Amazon DocumentDB 會自動監控此值,並在執行個體持續使用高比例的 CPU 容量時擴展無伺服器執行個體。

    如果此指標接近 的值100.0,則執行個體已達到其 CPU 容量上限。考慮增加叢集的最大 DCU 設定。如果此指標接近讀取器執行個體100.0上的 值,請考慮將其他讀取器執行個體新增至叢集。如此一來,您可以將工作負載的唯讀部分分散到更多執行個體,以減少每個讀取器執行個體的負載。

  • FreeableMemory — 此值代表當 DocumentDB 無伺服器執行個體擴展至其最大容量時可用的未使用記憶體數量。對於目前容量低於最大容量的每個 DCU,此值會增加約 2 GiB。因此,此指標在盡可能地縱向擴展執行個體之前不會接近零。

    如果此指標接近零的值,則執行個體已盡可能向上擴展,並接近其可用記憶體的限制。考慮增加叢集的最大 DCU 設定。如果此指標在讀取器執行個體上接近零的值,請考慮將其他讀取器執行個體新增至叢集。如此一來,工作負載的唯讀部分就可以分散到更多執行個體,減少每個讀取器執行個體的記憶體用量。

  • TempStorageIops — 在連接至執行個體的本機儲存上完成的 IOPS 數量。其包括讀取和寫入的 IOPS。此指標表示計數,且每秒測量一次。這是 DocumentDB Serverless 的新指標。如需詳細資訊,請參閱使用 CloudWatch 監控 Amazon DocumentDB

  • TempStorageThroughput — 與執行個體相關聯的本機儲存體往返傳輸的資料量。此指標表示位元組,且每秒測量一次。這是 DocumentDB Serverless 的新指標。如需詳細資訊,請參閱使用 CloudWatch 監控 Amazon DocumentDB

一般而言,大多數的 DocumentDB 無伺服器執行個體擴展都是由記憶體用量和 CPU 活動造成。TempStorageIopsTempStorageThroughput指標可協助您診斷極少數情況下,執行個體與本機儲存裝置之間傳輸的網路活動會導致意外容量增加。如要監控其他網路活動,您可使用以下現有指標:

  • NetworkReceiveThroughput

  • NetworkThroughput

  • NetworkTransmitThroughput

  • StorageNetworkReceiveThroughput

  • StorageNetworkThroughput

  • StorageNetworkTransmitThroughput

DocumentDB 無伺服器 CloudWatch 指標如何套用至您的 AWS 帳單

AWS 帳單上的 DocumentDB 無伺服器費用是根據您可以監控的相同ServerlessDatabaseCapacity指標來計算。如果您僅在一小時中使用 DocumentDB 無伺服器容量,則計費機制可能與此指標的計算 CloudWatch 平均值不同。若系統問題造成 CloudWatch 指標在短時間內無法使用,其亦可能會有所不同。因此,與從ServerlessDatabaseCapacity平均值自行計算數字時相比,您可能會在帳單上看到略有不同的 DCU 小時值。

DocumentDB 無伺服器指標的 Amazon CloudWatch CLI 命令範例

下列 AWS CLI 範例示範如何監控與 DocumentDB Serverless 相關的最重要 CloudWatch 指標。在每個案例中,將 --dimensions 參數的Value=字串取代為您自己的 DocumentDB 無伺服器執行個體的識別符。

下列 Linux 範例顯示執行個體的最小、最大和平均容量值,在一小時內每 10 分鐘測量一次。Linux 日期命令會指定相對於目前日期和時間的開始和結束時間。--query 參數中的 sort_by 函數依據 Timestamp 欄位依時間順序對結果進行排序。

aws cloudwatch get-metric-statistics \ --metric-name "ServerlessDatabaseCapacity" \ --start-time "$(date -d '1 hour ago')" \ --end-time "$(date -d 'now')" \ --period 600 \ --namespace "AWS/DocDB" \ --statistics Minimum Maximum Average \ --dimensions Name=DBInstanceIdentifier,Value=my_instance \ --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' \ --output table

下列 Linux 範例示範監控叢集中執行個體的容量。它測量執行個體的最小、最大和平均容量使用率。在三個小時內每小時進行一次測量。這些範例使用代表 DCUs 上限百分比的DCUUtilization指標,而不是ServerlessDatabaseCapacity代表固定數量DCUs。如此一來,您就不需要知道容量範圍內最小和最大 DCU 值的實際數字。您可看到從 0 到 100 的百分比。

aws cloudwatch get-metric-statistics \ --metric-name "DCUUtilization" \ --start-time "$(date -d '3 hours ago')" \ --end-time "$(date -d 'now')" \ --period 3600 \ --namespace "AWS/DocDB" \ --statistics Minimum Maximum Average \ --dimensions Name=DBInstanceIdentifier,Value=my_instance \ --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' \ --output table

下列 Linux 範例執行與先前測量類似的測量。於此狀況下,測量適用於 CPUUtilization 指標。在 1 小時內每 10 分鐘進行一次測量。這些數字代表使用之可用 CPU 的百分比,以執行個體最大容量設定的可用 CPU 資源為基礎。

aws cloudwatch get-metric-statistics \ --metric-name "CPUUtilization" \ --start-time "$(date -d '1 hour ago')" \ --end-time "$(date -d 'now')" \ --period 600 \ --namespace "AWS/DocDB" \ --statistics Minimum Maximum Average \ --dimensions Name=DBInstanceIdentifier,Value=my_instance \ --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' \ --output table

下列 Linux 範例執行與先前測量類似的測量。於此狀況下,測量適用於 FreeableMemory 指標。在 1 小時內每 10 分鐘進行一次測量。

aws cloudwatch get-metric-statistics \ --metric-name "FreeableMemory" \ --start-time "$(date -d '1 hour ago')" \ --end-time "$(date -d 'now')" \ --period 600 \ --namespace "AWS/DocDB" \ --statistics Minimum Maximum Average \ --dimensions Name=DBInstanceIdentifier,Value=my_instance \ --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' \ --output table

使用績效詳情監控 DocumentDB 無伺服器效能

您可以使用 Performance Insights 來監控 DocumentDB 無伺服器執行個體的效能。如需有關績效詳情的程序,請參閱 使用績效詳情進行監控

下列新的績效詳情計數器適用於 DocumentDB 無伺服器執行個體:

  • os.general.serverlessDBCapacity — DCUs 中執行個體的目前容量。此值對應至執行個體的 ServerlessDatabaseCapacity CloudWatch 指標。

  • os.general.dcuUtilization — 目前容量超出最大設定容量的百分比。此值對應至執行個體的 DCUUtilization CloudWatch 指標。

  • os.general.maxConfiguredDcu — 您為此 DocumentDB 無伺服器執行個體設定的容量上限。它以 DCUs測量。

  • os.general.minConfiguredDcu — 您為此 DocumentDB 無伺服器執行個體設定的最小容量。它以 DCUs測量。

如需績效詳情計數器的完整清單,請參閱 計數器指標的績效詳情

在績效詳情中顯示 DocumentDB 無伺服器執行個體的 vCPU 值時,這些值代表根據執行個體 DCU 值的預估值。在預設的一分鐘間隔中,任何小數 vCPU 值皆會無條件進位至最接近的非負整數。若為較長的時間間隔,顯示的 vCPU 值為每分鐘整數 vCPU 值的平均值。