閱讀907 返回首頁    go windows


日誌管理__開發人員指南_消息服務-阿裏雲

MNS 的日誌管理功能將用戶的消息操作日誌推送到指定 LoggingBucket 中。
用戶在控製台上配置將日誌推送到 OSS 或者 LogService,然後開啟該地域隊列/主題的日誌管理功能,MNS 將自動推送該隊列/主題消息的操作日誌到指定的 LoggingBucket 中。

推送日誌到LogService(必讀)

  • 配置方法:推送日誌到LogService
  • 日誌查看:查看日誌——LogService
  • 在為LogStore創建索引時,請選擇合理的數據保存時間,該屬性後續隻支持縮短,不支持延長
  • 如果用戶將 LoggingBucket 對應的LogService 的Project、LogStore刪除,或者將授予 MNS 的權限取消,日誌將無法正常推送給用戶;
  • 日誌延遲時間約5分鍾;

推送日誌到OSS(必讀)

  • 配置方法:推送日誌到OSS
  • 日誌查看:查看日誌——OSS
  • 如果用戶將 LoggingBucket 對應的OSS Bucket刪除,或者將授予 MNS 的權限取消,日誌將無法正常推送給用戶;
  • 日誌延遲時間約15分鍾;

細節分析

  • 每個地域配置一個 LoggingBucket,該地域所有開通日誌管理功能的隊列/主題的消息操作日誌均推送到該 LoggingBucket中;
  • 每個隊列/主題可以獨立設置是否開啟日誌管理功能,默認不開啟;

費用解析

  • MNS 不針對日誌管理功能收取額外費用;
  • MNS 將日誌推送到OSS 或者 LogService中,對應服務會根據存儲空間、流量、請求數等進行收費,具體細則請參考:LogService價格總覽OSS價格總覽
  • 日誌量的大小與用戶操作 MNS 的 Qps 和操作類型有關係,此處以 SendMessage 操作、Qps 1000為例,計算每分鍾的日誌量: 178Byte*1000*60/1024/1024 約為 10MB,其中 178 為單條SendMessag操作的日誌大小。

隊列消息操作日誌

隊列消息操作日誌是指操作隊列消息所產生的日誌,比如發送消息、消費消息、刪除消息等操作。
一條消息操作日誌中包含多個字段,每個字段都有自己的含義。
根據操作的不同,消息操作日誌所包含的字段也不相同。
接下來,將分別介紹各個字段的含義和不同操作所包含的字段信息。

日誌字段解析

一條消息操作日誌中包含多個字段,各個字段的含義如表格所示。

字段 含義
Time 本次操作的發生時間
MessageId 消息的 MessageId,標識本次操作處理的消息
QueueName 本次操作對應的隊列名稱
AccountId 本次操作對應隊列的賬號
RemoteAddress 發起該操作的客戶端地址
NextVisibleTime 該操作執行完成後,這條消息的下次可見時間
ReceiptHandleInRequest 用戶執行該操作時傳入的 ReceiptHandle 參數
ReceiptHandleInResponse 該操作執行完成後,返回給用戶的 ReceiptHandle

各個操作的字段列表

不同操作的日誌包含的字段信息各不相同,具體每個操作包含的字段請參考表格。

操作 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 將消息推送給用戶時,用戶返回的狀態碼或者相應的出錯信息

各個操作的字段列表

不同操作的日誌包含的字段信息各不相同,具體每個操作包含的字段請參考表格。

操作 Time MessageId TopicName SubscriptionName AccountId RemoteAddress NotifyStatus SubscriptionName
PublishMessage - - -
Notify -

NotifyStatus

NotifyStatus 是推送消息日誌特有的字段,該可以協助您調查MNS 推送消息到 Endpoint失敗的原因。
根據不同的 NotifyStatus,您可以按照下表建議的處理方法進行處理。

錯誤碼 描述 建議處理方法
2xx 消息推送成功
其它Http狀態碼 消息推送給用戶,Endpoint 返回了非2xx的狀態碼 檢查 Endpoint 端處理邏輯
InvalidHost 訂閱指定的 Endpoint 不合法 確認訂閱中 Endpiont 是否真實有效,可使用curl/telnet進行確認
ConnectTimeout 連接訂閱指定的 Endpoint 超時 確認訂閱中 Endpoint 當前是否可訪問,可使用curl/telnet進行確認
ConnectFailure 連接訂閱指定的 Endpoint 失敗 確認訂閱中 Endpoint 當前是否可訪問,可使用curl/telnet進行確認
UnknownError 未知錯誤 請聯係 MNS 技術人員支持

日誌管理功能可以做什麼?

  • 消息成功發送到隊列,但消費端收不到消息,消息去哪兒了?
  • 消息被誰消費了、消費了幾次?
  • 消費端宕機了,消費失敗的消息什麼時候可以再次被消費?
  • 消息發布到主題,Endpoint 卻遲遲收不到消息?
  • 想看一個月前的消息操作日誌?

MNS 的日誌管理功能通通滿足你!!

  • 將日誌推送到LogService,控製台查看完整消息軌跡:查看日誌——LogService
  • 使用官網提供查詢工具,指定相應參數即可查看消息的處理日誌;日誌查詢命令行工具
  • 登陸OSS控製台,配置LoggingBucket的LifeCycle屬性,查看一年前的日誌也不是問題:oss控製台
  • 除了官方工具,還可以寫寫代碼,通過 OSS 的 GetObject 接口下載日誌文件,做你想做的任何事情;

最後更新:2016-11-23 17:16:04

  上一篇:go 事件通知__開發人員指南_消息服務-阿裏雲
  下一篇:go 郵件推送__開發人員指南_消息服務-阿裏雲