全部產品
Search
文件中心

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

更新時間:Aug 21, 2026

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

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

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

日誌分析樣本

查詢隊列訊息的軌跡

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

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

兩條日誌的 MessageId 相同,分別對應 SendMessage(第 5 條)和 ReceiveMessage(第 4 條)操作。

4  10-21 16:50:57  MNSLogging  1603270323

  NextVisibleTime :1603270287
  ProcessTime :2
  ReceiptHandleInResponse :8-BBMzv7glMLMzuzazpcz0z6GXz23TAhoSh7bA
  Time :2020-10-21 16:50:57.097000
  AccountId :1xxx xxx5
  Action :ReceiveMessage
    MessageId :EED287A265726135146E6A9CADC8xxx
    RequestId :5F8FF671454539F442BF7CE9
    RemoteAddress :1xxx xxx4
    QueueName :sgw-express-sync-queue-gw-0008q1m4pv7qjse4na31-5796

5  10-21 16:50:53  MNSLogging  1603270327

  NextVisibleTime :1603270253
  ProcessTime :1
  Time :2020-10-21 16:50:53.001000
  AccountId :17xxx xxx2745
  Action :SendMessage
    MessageId :EED287A265726135146E6A9CADC8xxx
    RequestId :5F8FF66D3030359405DF281F
    RemoteAddress :xxx xxx1
    QueueName :sgw-express-sync-queue-gw-0008q1m4pv7qjse4na31-5796

查詢主題訊息的訊息軌跡

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

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

4  10-21 16:50:57  MNSLogging  1603270323

  NextVisibleTime :1603270287
  ProcessTime :2
  ReceiptHandleInResponse :8-BBMzv7glMLMzuzazpcz0z6GXz23TAhoSh7bA
  Time :2020-10-21 16:50:57.097000
  AccountId :1xxx xxx5
  Action :ReceiveMessage
    MessageId :EED287A265726135146E6A9CADC8xxx
    RequestId :5F8FF671454539F442BF7CE9
    RemoteAddress :1xxx xxx4
    QueueName :sgw-express-sync-queue-gw-0008q1m4pv7qjse4na31-5796

5  10-21 16:50:53  MNSLogging  1603270327

  NextVisibleTime :1603270253
  ProcessTime :1
  Time :2020-10-21 16:50:53.001000
  AccountId :17xxx xxx2745
  Action :SendMessage
    MessageId :EED287A265726135146E6A9CADC8xxx
    RequestId :5F8FF66D3030359405DF281F
    RemoteAddress :xxx xxx1
    QueueName :sgw-express-sync-queue-gw-0008q1m4pv7qjse4na31-5796

查詢隊列訊息發送量

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

當前查詢時段內,生產者向log隊列發送了3條隊列訊息。

在搜尋欄輸入查詢語句並設定時間範圍(如15分鐘(相對))後,單擊查詢/分析即可查看結果,每條日誌包含 Action、QueueName、MessageId、RequestId、AccountId 等欄位資訊。

查詢主題訊息發送量

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

當前查詢時段內,生產者向logtest主題發送了3條訊息。

每條日誌包含 TopicName(值為 logtest)、Action(值為 PublishMessage)、ProcessTimeTimeAccountIdMessageIdRequestIdRemoteAddressMessageTag 等欄位。

查詢隊列訊息消費量

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

當前查詢時段內,log隊列中有12條訊息被消費。

日誌詳情中 Action 欄位值為 ReceiveMessageQueueName 欄位值為 log,確認已匹配到指定隊列的訊息消費記錄。

查詢隊列訊息刪除量

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

當前查詢時段內,61條log隊列訊息被刪除。

單擊查詢/分析後,日誌詳情中 Action 欄位顯示 DeleteMessageQueueName 欄位顯示 log

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

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

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

當前查詢時段內,該用戶端處理了66條訊息。

輸入查詢語句後,單擊查詢/分析,在右側時間選取器中設定查詢時間範圍(如15分鐘(相對))。頁面顯示查詢結果狀態(結果精確)及日誌條數,並通過查詢長條圖展示日誌在各時間段的分布情況。