如何對 CloudWatch 日誌中的 InvalidSequenceToken 錯誤進行疑難排解?

上次更新日期:2022 年 3 月 24 日

當我使用 CloudWatch 代理程式向 Amazon CloudWatch 發送日誌時,我收到日誌檔案中 InvalidSequenceToken 錯誤的訊息。如何進行疑難排解並解決此錯誤?

簡短描述

CloudWatch 代理程式使用 PutLogEvents API 發佈到 CloudWatch。此 API 對每個連續的 PutLogEvents 呼叫使用順序字符,且每個日誌串流都有一個與之關聯的順序字符。當 CloudWatch 代理程式進行 PutLogEvents 呼叫時,會提供順序字符 (除非是寫入新建立的日誌串流)。作為回應,CloudWatch 會將下一個預期的順序字符傳回至該來源。需要將傳回的順序字符用於下一個推送的日誌事件。

如果 CloudWatch 收到一個具有順序字符的事件,且日誌系統不預期會有該事件,則會傳回 InvalidSequenceToken 錯誤以及其所預期的順序字符。如有需要,您可以使用 DescribeLogStreams API 呼叫來取得更新後的字符。

在以下情況時會發生 InvalidSequenceToken 錯誤:

  • 您最近安裝或重新啟動了 CloudWatch 代理程式服務
  • 多個來源都在將日誌發送至同一個串流

解決方案

CloudWatch 代理程式重新啟動後的 InvalidSquenceToken 錯誤

重新啟動 CloudWatch 代理程式後,您可能會看到此錯誤。當 CloudWatch 代理程式服務剛剛啟動或重新啟動時,第一次嘗試推送日誌會失敗。這是預期中會發生的行為,因為 CloudWatch 日誌中已經存在有日誌串流。因此,CloudWatch 代理程式不知道要使用哪個順序字符。由於其具有內建的重試機制,CloudWatch 代理程式會選取正確的順序字符並用來再次推送日誌。

當有多個來源向同一個日誌串流發向日誌時的 InvalidSequenceToken 錯誤

如果您有多個執行個體正在向同一個日誌串流發送日誌,則會收到 InvalidSequenceToken 錯誤。同樣的,如果在同一個執行個體中有多個日誌檔案正在向同一個日誌串流發送日誌,也會收到錯誤。發生這種情況的原因在於 PutLogEvents 呼叫中發送的順序字符與串流預期的字符不相符。

解決 InvalidSequenceToken 錯誤

檢閱代理程式組態檔案,並確認您沒有從多個來源發送日誌到同一個日誌串流。不支援配置多個日誌來源以將資料發送到單一日誌串流。更新代理程式組態檔案,以便針對每個來源使用唯一的日誌串流名稱。然後,使用 fetch-config 命令重新啟動代理程式服務


此文章是否有幫助?


您是否需要帳單或技術支援?