適用於 Amazon SQS 的可用 CloudWatch 指標 - Amazon Simple Queue Service

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

適用於 Amazon SQS 的可用 CloudWatch 指標

Amazon SQS 會傳送下列指標至 CloudWatch。

注意

對於某些指標,結果是近似值,因為 Amazon SQS 的分散式架構。在大多數情況下,計數應接近佇列中的實際訊息數目。

Amazon SQS 指標

Amazon SQS 會自動將操作指標發佈至 AWS/SQS 命名空間下的 Amazon CloudWatch。這些指標可協助您監控佇列運作狀態和效能。由於 SQS 的分散式本質,許多值都是近似值,但對於大多數的操作決策來說,足夠準確。

注意
  • 只有在佇列作用中時,所有指標才會發出非負值。

  • 在至少傳送一則訊息之前,不會發出某些指標 (例如 SentMessageSize)。

指標 描述 個單位 報告行為 重要備註
ApproximateAgeOfOldestMessage 佇列中最舊未處理訊息的存留期。

秒鐘

如果佇列包含至少一個作用中訊息,則回報。
  • 對於標準佇列,如果收到訊息三次以上但未刪除,SQS 會將其移至佇列的背面。指標接著會反映未超過接收閾值的下一個訊息的存留期。即使有再驅動政策,也會發生此重新排序。

  • 此指標會排除毒丸訊息 (重複接收但從未刪除的訊息),直到成功處理為止。

  • 當訊息在超過 之後移至 DLQ 時maxReceiveCount,存留期會重設。在這種情況下,DLQ 的指標會反映訊息移動的時間,而不是最初傳送的時間。

  • FIFO 佇列不會重新排序訊息以保留順序。失敗的訊息會封鎖其訊息群組,直到刪除或過期為止。如果已設定 DLQ,訊息會在達到接收閾值後傳送至該處。

ApproximateNumberOfGroupsWithInflightMessages 僅適用於 FIFO。具有一或多個傳輸中訊息的訊息群組數量。

計數

如果 FIFO 佇列處於作用中狀態,則回報。
  • 消費者從佇列收到訊息後,但尚未刪除或過期,訊息會被視為正在處理中。

  • 此指標可協助您疑難排解和最佳化 FIFO 佇列輸送量。高值通常表示強並行。

  • 如果佇列有大型待處理項目,且此值仍低,請考慮擴展取用者或增加作用中訊息群組的數量。

  • 如需輸送量和傳輸中限制,請參閱 Amazon SQS 配額

ApproximateNumberOfMessagesDelayed

佇列中延遲且無法立即擷取的訊息數量。

計數

如果佇列中存在延遲訊息,則回報。
  • 適用於設定預設延遲的佇列,以及使用 DelaySeconds 參數傳送的個別訊息。

  • 延遲訊息在延遲期間到期之前會保持隱藏狀態,這可能會影響感知的佇列待處理項目或輸送量。

ApproximateNumberOfMessagesNotVisible 已接收但尚未刪除或過期的傳輸中訊息數量。

計數

如果傳輸中的訊息存在,則回報。
  • 透過 ReceiveMessage API 傳送給消費者後,訊息會進入傳輸中狀態。

  • 在可見性逾時時段期間,其他消費者會暫時隱藏這些訊息。

  • 使用此指標來追蹤訊息處理延遲或停滯的消費者。

ApproximateNumberOfMessagesVisible 目前可供擷取和處理的訊息數量。

計數

如果佇列處於作用中狀態,則回報。
  • 反映佇列中目前的處理待處理項目。

  • 可以累積多少訊息沒有硬性限制,但它們受限於佇列設定的保留期間

  • 持續較高的值可能表示佈建不足的消費者或處理邏輯停滯。

NumberOfEmptyReceives1 未傳回訊息的 ReceiveMessage API 呼叫數目。

計數

在接收操作期間報告。
  • 此指標有助於識別輪詢行為中的效率低落或未充分利用的消費者執行個體。

  • 當佇列為空、取用者使用短輪詢,或訊息處理速度比產生速度更快時,可能會發生高值。

  • 這不是佇列狀態的精確指標。它反映服務端行為,可能包括重試。

NumberOfDeduplicatedSentMessages 僅適用於 FIFO。已刪除但未新增至佇列的已傳送訊息數量。

計數

偵測到重複MessageDeduplicationId值或內容時回報。
  • SQS 根據 MessageDeduplicationId或內容型雜湊 (如果啟用) 刪除重複訊息。

  • 高值可能表示生產者在 5 分鐘的重複資料刪除時段內重複傳送相同的訊息。

  • 使用此指標對備援生產者邏輯進行疑難排解,或確認重複資料刪除如預期般運作。

NumberOfMessagesDeleted1

成功從佇列刪除的訊息數量。

計數

使用有效的接收控點報告每個刪除請求。
  • 此指標會計算所有成功的刪除操作,即使刪除相同的訊息超過一次。

  • higher-than-expected值的常見原因包括:

    • 在可見性逾時過期且再次收到訊息後,使用不同的接收控點多次刪除相同訊息。

    • 使用相同的接收控點重複刪除,這仍會傳回成功狀態並增加指標。

  • 使用此指標追蹤訊息處理成功,但不將其視為唯一已刪除訊息的確切計數。

NumberOfMessagesReceived1 ReceiveMessage API 傳回的訊息數量。

計數

在接收操作期間報告。
  • 這包括傳回給消費者的所有訊息,包括稍後因可見性逾時過期而傳回佇列的訊息。

  • 如果未刪除單一訊息,則可以多次接收訊息,這可能會導致此指標超過傳送的訊息數量。

  • 使用此項目來追蹤消費者活動,但不要將其視為已處理的唯一訊息計數。

NumberOfMessagesSent1 成功新增至佇列的訊息數量。

計數

每次手動傳送成功時回報。
  • 手動呼叫 SendMessageSendMessageBatch會計入,包括直接以 DLQ 為目標的呼叫。

  • 超過 後自動移至 DLQ 的訊息maxReceiveCount不包含在此指標中。

  • 因此, NumberOfMessagesSent可能低於 NumberOfMessagesReceived- 特別是如果再驅動政策將許多訊息移至幕後DLQs。

SentMessageSize1

成功傳送至佇列的訊息大小。

位元組

在至少傳送一個訊息之前不會發出。
  • 在佇列收到第一個訊息之前,此指標不會出現在 CloudWatch 主控台中。

  • 使用此指標來追蹤每個訊息的大小,以位元組為單位。這有助於分析承載趨勢或估計輸送量成本。

  • SQS 的訊息大小上限為 1 MiB。

ApproximateNumberOfNoisyGroups

在公平佇列中被視為雜訊的訊息群組數量。雜訊訊息群組代表多租用戶佇列的雜訊鄰近租用戶。

計數

如果佇列處於作用中狀態,則會報告非負值。
  • 透過追蹤耗用不成比例資源的訊息群組,協助識別多租戶環境中的潛在雜訊鄰近問題。

  • 使用此指標設定警示,在雜訊群組數量超過您可接受的閾值時觸發,表示潛在的佇列公平性問題。

ApproximateNumberOfMessagesVisibleInQuietGroups

可見的訊息數量,不包括來自雜訊訊息群組的訊息。

計數

如果佇列處於作用中狀態,則會報告非負值。
  • 提供標準費率訊息群組佇列待處理項目的可見性,不包括來自雜訊鄰近的訊息。

  • 透過篩選出雜訊鄰近區域的影響,協助識別典型訊息群組的真實處理待處理項目。

ApproximateNumberOfMessagesNotVisibleInQuietGroups 傳輸中的訊息數量,不包括來自雜訊訊息群組的訊息。

計數

如果佇列處於作用中狀態,則會報告非負值。
  • 追蹤行為良好的訊息群組中的傳輸中訊息 (處理中但尚未刪除)。

  • 使用此指標來監控正常訊息群組的處理輸送量,並偵測非由雜訊鄰近引起的處理瓶頸。

ApproximateNumberOfMessagesDelayedInQuietGroups 排除來自雜訊訊息群組的訊息,且延遲且無法立即讀取的訊息數量。當佇列設定為延遲佇列,或使用延遲參數傳送訊息時,就會發生延遲訊息。

計數

如果佇列處於作用中狀態,則會報告非負值。
  • 協助監控訊息群組中具有正常或預期輸送量模式的延遲訊息待處理項目 (而不是大量或雜訊群組)

  • 有助於了解一般工作負載的未來處理需求和容量規劃。

ApproximateAgeOfOldestMessageInQuietGroups 佇列中最舊未刪除訊息的存留期,不包括來自雜訊訊息群組的訊息。

秒鐘

如果佇列處於作用中狀態,則會報告非負值。
  • 用於監控 SLA 合規性,並偵測具有正常或預期輸送量模式的訊息群組中的處理瓶頸 (而不是可能扭曲指標的大量或雜訊訊息群組)。

  • 使用此指標來設定訊息處理逾時的警示,忽略來自雜訊鄰近的人工過時訊息。

1 這些指標反映系統層級的活動,可能包括重試、重複或延遲訊息。請勿使用原始計數來估計即時佇列狀態,而不考慮訊息生命週期行為。

無效字母佇列 (DLQs) 和 CloudWatch 指標

使用 DLQs 時,請務必了解 Amazon SQS 指標的行為:

  • NumberOfMessagesSent – 此指標對 DLQs 的行為不同:

    • 手動傳送 – 此指標會擷取手動傳送至 DLQ 的訊息。

    • 自動重新驅動 – 此指標不會擷取因處理失敗而自動移至 DLQ 的訊息。因此, NumberOfMessagesSentNumberOfMessagesReceived指標可能會顯示 DLQs 的差異。

  • DLQs 的建議指標 – 若要監控 DLQ 的狀態,請使用 ApproximateNumberOfMessagesVisible 指標。此指標表示目前可在 DLQ 中處理的訊息數量。

公平佇列和 CloudWatch 指標

當您使用公平佇列時,Amazon SQS 會發出下列其他指標:

  • ApproximateNumberOfNoisyGroups

  • ApproximateNumberOfMessagesVisibleInQuietGroups

  • ApproximateNumberOfMessagesNotVisibleInQuietGroups

  • ApproximateNumberOfMessagesDelayedInQuietGroups

  • ApproximateAgeOfOldestMessageInQuietGroups

注意

每個QuietGroup指標都是同等標準佇列層級Approximate指標的子集,但排除來自雜訊鄰近群組的訊息。

雜訊群組

雜訊訊息群組代表多租用戶佇列的雜訊鄰近租用戶。

靜音群組

排除雜訊群組的訊息群組。

觀察 SQS 公平佇列行為

若要監控 Amazon SQS 公平佇列的效果,您可以將Approximate..InQuietGroups指標與標準佇列層級指標進行比較。在特定租用戶的流量激增期間,一般佇列層級指標可能會顯示不斷增加的待處理項目或較舊的訊息存留期。不過,您可以單獨查看安靜的群組,找出大多數非雜訊的訊息群組或租用戶不受影響,並提供受影響訊息群組總數的預估值。

雖然這些新指標提供 Amazon SQS 公平佇列行為的良好概觀,但了解哪些特定租用戶導致負載是有益的。Amazon CloudWatch 貢獻者洞見可讓您查看前 N 名貢獻者的指標、唯一貢獻者的總數及其用量。這在您處理數千個租用戶時特別有用,否則在發出傳統指標時會導致高基數資料 (和成本)。

如需公平佇列的監控組態範例,請參閱 GitHub 上的範例。

Amazon SQS 指標的維度

CloudWatch 中的 Amazon SQS 指標使用單一維度:QueueName。所有指標資料都會依佇列的名稱分組和篩選。

監控秘訣

使用關鍵指標和 CloudWatch 警示有效監控 SQS,以偵測佇列待處理項目、最佳化效能,並保持在服務限制內。

  • 根據 設定 CloudWatch 警示ApproximateNumberOfMessagesVisible,以捕捉待處理項目成長。

  • 監控NumberOfEmptyReceives以調整輪詢頻率並降低 API 成本。

  • 在 FIFO 佇列ApproximateNumberOfGroupsWithInflightMessages中使用 來診斷輸送量限制。

  • 檢閱 SQS 配額以了解指標閾值和服務限制。