Simple Message Queue (旧称:MNS) のログ管理機能は、メッセージリクエストログを Simple Log Service (SLS) にプッシュします。その後、SLS のクエリおよび分析機能を使用して、問題をトラブルシューティングできます。
シナリオ
メッセージの送受信時に、次のような問題が発生したことはありませんか?
メッセージがキューに送信されたが、コンシューマーが受信できない。メッセージはどこに行ったのか?
誰がメッセージを消費したのか? 何回消費されたのか?
コンシューマーが利用できない。失敗したメッセージはいつ再消費できるのか?
メッセージが Topic に公開されたが、エンドポイントが受信しない。なぜ遅延が発生するのか?
Simple Message Queue (旧称:MNS) のログ管理機能を使用すると、これらの問題を解決できます。方法は次のとおりです。
ログを SLS にプッシュし、コンソールで完全なメッセージトレースを表示します。
公式サイトのクエリツールを使用します。必要なパラメーターを指定して、メッセージ処理ログを表示します。
課金
Simple Message Queue (旧称:MNS) は、ログ管理機能に追加料金を請求しません。
Simple Message Queue (旧称:MNS) はログを SLS にプッシュします。SLS は、ストレージ容量、トラフィック、リクエスト数などの要因に基づいて課金します。詳細については、「課金の概要」をご参照ください。
キューログのフォーマット
キューメッセージの操作ログは、メッセージの送信、消費、削除など、キューメッセージに対する操作から生成されます。各操作ログには複数のフィールドが含まれています。各フィールドには特定の意味があります。ログに含まれるフィールドは、操作によって異なります。次のセクションでは、各フィールドの意味を説明し、さまざまな操作に含まれるフィールドをリストします。
ログフィールドの説明
各操作ログには複数のフィールドが含まれています。次の表に、これらのフィールドを示します。
フィールド
説明
Time
操作が発生した時間。
MessageId
操作で処理されるメッセージの ID。
QueueName
操作が実行されるキューの名前。
AccountId
キューを所有するアカウントの ID。
RemoteAddress
操作を開始したクライアントの IP アドレス。
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
はい
はい。
はい
はい
はい
はい
いいえ
はい
Topic ログのフォーマット
Topic メッセージの操作ログは、Topic メッセージに対する操作から生成されます。これらの操作は、主にメッセージの公開とメッセージのプッシュの 2 種類です。次のセクションでは、Topic メッセージ操作ログの各フィールドの意味を説明し、さまざまな操作に含まれるフィールドをリストします。
ログフィールドの説明
各操作ログには複数のフィールドが含まれています。次の表に、これらのフィールドを示します。
フィールド
説明
Time
操作が発生した時間。
MessageId
操作で処理されるメッセージの ID。
TopicName
操作が実行される Topic の名前。
SubscriptionName
操作が実行されるサブスクリプションの名前。
AccountId
Topic を所有するアカウントの ID。
RemoteAddress
操作を開始したクライアントの IP アドレス。
NotifyStatus
Simple Message Queue (旧称:MNS) がメッセージをプッシュするときにユーザーによって返される HTTP ステータスコードまたはエラー情報。
ProcessTime
操作の処理にかかる時間。
MessageTag
メッセージタグ。
RequestId
タスクの ID。
Action
削除や送信などの操作。
各操作のフィールド
ログに含まれるフィールドは、操作によって異なります。次の表に、各操作のフィールドを示します。
操作
Time
MessageId
TopicName
SubscriptionName
AccountId
RemoteAddress
NotifyStatus
サブスクリプション名
PublishMessage
はい。
はい
はい
いいえ
はい
はい
なし
いいえ
Notify
はい
はい
はい
はい
はい
いいえ
はい。
はい
NotifyStatus
NotifyStatus は、メッセージプッシュログに固有のフィールドです。このフィールドは、Simple Message Queue (旧称:MNS) がメッセージをエンドポイントにプッシュするときに発生する障害のトラブルシューティングに役立ちます。次の表に記載されているさまざまな NotifyStatus 値の提案に基づいて問題を解決できます。
エラーコード
説明
推奨される解決策
2xx
メッセージは正常にプッシュされました。
なし。
その他の HTTP ステータスコード
メッセージがプッシュされると、エンドポイントは 2xx 以外のステータスコードを返します。
エンドポイントの処理ロジックを確認してください。
InvalidHost
サブスクリプションで指定されたエンドポイントが無効です。
サブスクリプションのエンドポイントが有効であることを確認します。curl または telnet を使用して確認できます。
ConnectTimeout
サブスクリプションで指定されたエンドポイントへの接続がタイムアウトしました。
サブスクリプションのエンドポイントにアクセスできることを確認します。curl または telnet を使用して確認できます。
ConnectFailure
サブスクリプションで指定されたエンドポイントへの接続に失敗しました。
サブスクリプションのエンドpointにアクセスできることを確認します。curl または telnet を使用して確認できます。
UnknownError
不明なエラーが発生しました。
Simple Message Queue (旧称:MNS) のテクニカルサポートにお問い合わせください。
ログ管理操作
ログ機能を使用する前に、次の前提条件を完了してください。
Simple Log Service でプロジェクトと Logstore を作成します。詳細については、「プロジェクトの管理」および「Logstore の作成」をご参照ください。
MNS 操作ログは、同じリージョン内の SLS プロジェクトにのみプッシュできます。
AliyunMNSLoggingRole ロールを MNS に付与して、ログをエクスポートします。
クラウド資源アクセス承認 をクリックし、画面の指示に従って権限を付与します。
警告権限付与を取り消したり、RAM ロールを削除したりしないでください。そうしないと、Simple Message Queue (旧称:MNS) ログを Simple Log Service にプッシュできなくなります。
> [編集]






