輕量訊息佇列(原 MNS)的日誌管理功能將訊息請求日誌推送到Simple Log Service (SLS),然後可以使用SLS的能力查詢和分析請求日誌功能來定位線上問題。
應用情境
您在收發訊息的過程中,是否遇到過以下問題:
訊息成功發送到隊列,但消費端收不到訊息,訊息去哪兒了?
訊息被誰消費了?消費了幾次?
消費端宕機了,消費失敗的訊息什麼時候可以再次被消費?
訊息發布到主題,Endpoint卻遲遲收不到訊息?
這些問題可以通過輕量訊息佇列(原 MNS)的日誌管理功能解決,方法如下:
將日誌推送到SLS,在控制台查看完整訊息軌跡。
使用官網提供查詢工具,指定相應參數即可查看訊息的處理日誌。
費用說明
輕量訊息佇列(原 MNS)不針對日誌管理功能收取額外費用。
輕量訊息佇列(原 MNS)將日誌推送到SLS,對應服務會根據儲存空間、流量、請求數等進行收費,詳情請參見計費概述。
隊列日誌格式說明
隊列訊息作業日誌是指操作隊列訊息所產生的日誌,例如發送訊息、消費訊息、刪除訊息等操作。一條訊息作業日誌中包含多個欄位,每個欄位都有特定的含義。根據操作的不同,訊息作業日誌所包含的欄位也不相同。以下分別介紹各個欄位的含義和不同操作所包含的欄位資訊。
日誌欄位解析
一條訊息作業日誌中包含多個欄位,各個欄位的含義如下:
欄位
含義
Time
本次操作的發生時間。
MessageId
訊息的MessageId,標識本次操作處理的訊息。
QueueName
本次操作對應的隊列名稱。
AccountId
本次操作對應隊列的帳號。
RemoteAddress
發起該操作的用戶端地址。
NextVisibleTime
該操作執行完成後,這條訊息的下次可見時間。
ReceiptHandleInRequest
用戶端執行該操作時傳入的ReceiptHandle參數。
ReceiptHandleInResponse
該操作執行完成後,返回用戶端的ReceiptHandle。
ProcessTime
本次操作的處理時間。
RequestId
本次執行的任務ID。
Action
表示動作,例如:刪除、發送等。
各個操作的欄位列表
不同操作的日誌包含的欄位資訊各不相同,具體每個操作包含的欄位如下:
操作
Time
QueueName
AccountId
MessageId
RemoteAddress
NextVisibleTime
ReceiptHandleInResponse
ReceiptHandleInRequest
SendMessage/BatchSendMessage
有
有
有
有
有
有
無
無
PeekMessage/BatchPeekMessage
有
有
有
有
有
無
無
無
ReceiveMessage/BatchReceiveMessage
有
有
有
有
有
有
有
無
ChangeMessageVisibility
有
有
有
有
有
有
有
有
DeleteMessage/BatchDeleteMessage
有
有
有
有
有
有
無
有
主題日誌格式說明
主題訊息作業日誌是指操作主題訊息產生的日誌,主要有兩類:發布訊息和推送訊息。以下分別介紹主題訊息作業日誌各個欄位的含義,以及不同的操作所包含的欄位資訊。
日誌欄位解析
一條訊息作業日誌中包含多個欄位,各個欄位的含義如下:
欄位
含義
Time
本次操作的發生時間。
MessageId
訊息的MessageId,標識本次操作處理的訊息。
TopicName
本次操作對應的主題名稱。
SubscriptionName
本次操作對應的訂閱名稱。
AccountId
本次操作對應主題的帳號。
RemoteAddress
發起該操作的用戶端地址。
NotifyStatus
輕量訊息佇列(原 MNS)將訊息推送給使用者時,使用者返回的狀態代碼或者相應的出錯資訊。
ProcessTime
本次操作的處理時間。
MessageTag
設定的訊息標籤。
RequestId
本次執行的任務ID。
Action
表示動作,例如:刪除、發送等。
各個操作的欄位列表
不同操作的日誌包含的欄位資訊各不相同,具體每個操作包含的欄位如下:
操作
Time
MessageId
TopicName
SubscriptionName
AccountId
RemoteAddress
NotifyStatus
SubscriptionName
PublishMessage
有
有
有
無
有
有
無
無
Notify
有
有
有
有
有
無
有
有
NotifyStatus
NotifyStatus是推送訊息日誌特有的欄位,可以協助您排查輕量訊息佇列(原 MNS)推送訊息到Endpoint失敗的原因。 根據不同的NotifyStatus,您可以按照下表建議的處理方法進行處理。
錯誤碼
描述
建議處理方法
2xx
訊息推送成功。
無。
其它HTTP狀態代碼
訊息推送給使用者,Endpoint返回了非2xx的狀態代碼。
檢查Endpoint端處理邏輯。
InvalidHost
訂閱指定的Endpoint不合法。
確認訂閱中Endpoint是否真實有效,可使用curl或telnet進行確認。
ConnectTimeout
串連訂閱指定的Endpoint逾時。
確認訂閱中Endpoint當前是否可訪問,可使用curl或telnet進行確認。
ConnectFailure
串連訂閱指定的Endpoint失敗。
確認訂閱中Endpoint當前是否可訪問,可使用curl或telnet進行確認。
UnknownError
未知錯誤。
請聯絡輕量訊息佇列(原 MNS)技術人員支援。
日誌管理操作
如需使用日誌功能,請先完成以下操作:
已建立Log ServiceProject和Logstore。具體操作,請參見建立專案Project和建立Logstore。
您的Message Service動作記錄只能被推送到相同地區下的Log ServiceProject中。
已授權Message Service使用AliyunMNSLoggingRole角色匯出日誌。
單擊雲資源訪問授權,根據提示完成授權。
警告請勿取消授權或刪除RAM角色,否則將導致輕量訊息佇列(原 MNS)日誌無法正常推送到Log Service。