全部產品
Search
文件中心

Simple Message Queue (formerly MNS):日誌管理

更新時間:Sep 25, 2025

輕量訊息佇列(原 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。

開啟/關閉日誌功能

開啟/關閉隊列的日誌功能

  1. 登入輕量訊息佇列(原 MNS)控制台

  2. 在左側導覽列,單擊隊列列表

  3. 在頂部功能表列,選擇地區。

  4. 隊列列表頁面,找到目標隊列,在其右側操作列選擇image > 編輯

  5. 編輯隊列參數面板中,開啟/關閉啟用日誌功能開關。

    隊列列表頁面,目標隊列的日誌功能列顯示為已啟用/未啟用

開啟/關閉主題的日誌功能

  1. 登入輕量訊息佇列(原 MNS)控制台

  2. 在左側導覽列,單擊主題列表

  3. 在頂部功能表列,選擇地區。

  4. 主題列表頁面,找到目標主題,在其右側操作列單擊編輯

  5. 編輯主題參數面板中,開啟/關閉啟用日誌功能開關。

    主題列表頁面,目標主題的日誌功能列顯示為已啟用/未啟用

推送日誌到Log Service

操作步驟

  1. 登入輕量訊息佇列(原 MNS)控制台

  2. 在左側導覽列,單擊日誌管理

  3. 在頂部功能表列,選擇地區。

  4. 日誌管理頁面,在選擇目標設定精靈頁面選擇Log Service(SLS)

  5. 配置目標設定精靈頁面,選擇Project名稱Logstore名稱,然後單擊啟用

    日誌管理頁面,顯示已配置的Project和Logstore。

查看日誌

操作步驟

  1. 登入Log Service控制台

  2. 在Project列表地區,單擊目標Project。

    image

  3. 日誌儲存 > 日誌庫頁簽中,單擊目標Logstore。

    image

  4. 輸入查詢語句,然後單擊最近15分鐘,設定查詢的時間範圍。更多資訊,請參見查詢與分析快速指引

日誌分析樣本

查詢隊列訊息的軌跡

本樣本要查詢隊列訊息的訊息軌跡,即輸入隊列名稱和訊息ID,格式為$QueueName and $MessageId,例如log and EED287A265726135146E6A9CADC8XXXX

查詢結果如下所示,記錄了某條訊息從發送到接收的過程。

image

查詢主題訊息的訊息軌跡

本樣本要查詢主題訊息的訊息軌跡,即輸入主題名稱和MessageId,查詢語句格式為$TopicName and $MessageId,例如logtest and 8798453B65727FC6433E6AB4F746XXXX

查詢結果如下圖所示,記錄了某條訊息從發送到通知的過程。

image

查詢隊列訊息發送量

本樣本要查詢隊列訊息發送量,即輸入隊列名稱和發送操作,查詢語句格式為$QueueName and (SendMessage or BatchSendMessage),例如log and (SendMessage or BatchSendMessage)

查詢結果如下所示,當前查詢時段內,生產者向log隊列發送了3條隊列訊息。查看隊列訊息寫入量

查詢主題訊息發送量

本樣本要查詢主題訊息發送量,即輸入主題名稱和發佈動作,查詢語句格式為$TopicName and PublishMessage,例如logtest and PublishMessage

查詢結果如下圖所示,當前查詢時段內,生產者向logtest主題發送了3條訊息。查看主題訊息發布量

查詢隊列訊息消費量

本樣本要查詢隊列訊息消費量,即輸入隊列名稱和消費操作,查詢語句格式為$QueueName and (ReceiveMessage or BatchReceiveMessage),例如log and (ReceiveMessage or BatchReceiveMessage)。

查詢結果如下所示,當前查詢時段內,log隊列中有12條訊息被消費。查看隊列訊息消費量

查詢隊列訊息刪除量

本樣本要查詢隊列訊息刪除量,即輸入隊列名稱和刪除操作,查詢語句格式為$QueueName and (DeleteMessage or BatchDeleteMessage),例如log and (DeleteMessage or BatchDeleteMessage)

查詢結果如下所示,當前查詢時段內,61條log隊列訊息被刪除。查看隊列訊息刪除量

查詢某個用戶端訊息處理量

本樣本要查詢某個用戶端訊息處理量,即輸入用戶端IP地址,查詢語句格式為$ClientIP,例如10.10.10.0

如果您要查詢某個用戶端的某類動作記錄,可使用多個關鍵字組合方式,例如$ClientIP and (SendMessage or BatchSendMessage)

查詢結果如下圖所示,當前查詢時段內,該用戶端處理了66條訊息。查看某個用戶端訊息處理量