[Simple Message Queue (旧称 MNS)] のログ管理機能を使用すると、メッセージの操作ログを指定したロギングバケットにプッシュできます。メッセージサービス (MNS) コンソールで設定を指定して、Simple Log Service にログをプッシュし、リージョン内のキューまたはトピックのロギング機能を有効にすることができます。[Simple Message Queue (旧称 MNS)] は、キューおよびトピック内のメッセージの操作ログを指定されたロギングバケットにプッシュします。
シナリオ
ログ管理機能は、以下のシナリオに適用できます。
コンシューマークライアントがメッセージを受信できない場合に、メッセージキューに送信されたメッセージを追跡します。
メッセージを消費したクライアントを特定し、メッセージが消費された回数をチェックします。
コンシューマークライアントの障害によりメッセージの消費に失敗した場合、メッセージを再度消費できる時期を判断します。
エンドポイントがトピックにパブリッシュされたメッセージを受信できない場合、その原因を特定します。
これらのシナリオでは、[Simple Message Queue (旧称 MNS)] のログ管理機能を使用して問題を解決できます。
ログを [Log Service] にプッシュし、SLS コンソールでメッセージの操作ログを表示します。
Alibaba Cloud が提供するログクエリツールを使用して、メッセージの操作ログを表示するためのパラメーターを指定します。
SLS へのログのプッシュ
設定方法の詳細については、「ログ管理」をご参照ください。
ログの表示方法の詳細については、「ログ管理」をご参照ください。
[Logstore] を作成する場合は、適切なデータ保持期間を指定する必要があります。[Logstore] の作成後にデータ保持期間を変更する場合は、より短いデータ保持期間のみを指定できます。
ロギングバケットに対応するプロジェクトまたは [Logstore] を削除した場合、または [Simple Message Queue (旧称 MNS)] に付与されている [SLS] へのアクセス権限を取り消した場合、MNS ログは Simple Log Service にプッシュされません。
ログは、生成されてから約 5 分後に MNS から [Log Service] にプッシュされます。
詳細分析
各リージョンにはロギングバケットがあります。ロギング機能が有効になっているキューおよびトピック内のメッセージのすべての操作ログは、ロギングバケットにプッシュされます。
必要に応じて、キューまたはトピックのロギング機能を有効にすることができます。ロギング機能はデフォルトで無効になっています。
課金
[Simple Message Queue (旧称 MNS)] のログ管理機能の使用は無料です。
ただし、[Simple Message Queue (旧称 MNS)] を使用して SLS にログをプッシュする場合、メモリ使用量、転送データ量、リクエスト数に対して課金されます。詳細については、「課金概要」をご参照ください。
生成されるログのサイズは、[Simple Message Queue (旧称 MNS)] サーバーの 1 秒あたりのクエリ数 (QPS) と操作のタイプによって異なります。たとえば、MNS が [SendMessage] API 操作を 1 秒あたり 1,000 回呼び出す場合、生成されるログエントリのサイズは約 10 MB です (
178 bytes × 1000 × 60 / 1024 / 1024 ≈ 10 MB)。この式では、178 bytesは、1 回の [SendMessage] 操作によって生成されるログのサイズを示します。 /* indicates the size of a log that is generated by a single SendMessage operation. */
キューメッセージの操作ログ
キューメッセージの操作ログは、メッセージの送信、消費、削除など、キューメッセージに対して操作が実行されたときに生成されます。各操作ログには、さまざまな情報を示す複数のフィールドが含まれています。ログに含まれるフィールドは、操作によって異なります。次の表に、ログフィールドと、操作タイプとログフィールドの関係を示します。
ログフィールド
各操作ログには複数のフィールドが含まれています。次の表に、フィールドを示します。
フィールド
説明
時間
操作が実行された時間。
メッセージ ID
操作に関連するメッセージの ID。
キュー名
操作に関連するキューの ID。
アカウント ID
キューが属する Alibaba Cloud アカウントまたは RAM ユーザー。
リモートアドレス
操作を実行するクライアントのエンドポイント。
次の表示時間
操作の完了後にメッセージが表示される時間。
リクエスト内の受信ハンドル
操作の実行時にリクエストに渡される [ReceiptHandle] パラメーターの値。
レスポンス内の受信ハンドル
操作の完了後に返される [ReceiptHandle] パラメーターの値。
処理時間
操作が実行される時間。
リクエスト ID
操作の ID。
アクション
操作の具体的なアクション。有効な値: 削除と送信。
さまざまな操作のフィールド
さまざまな操作によって生成されるログには、さまざまなフィールドが含まれています。次の表に、さまざまな操作のログフィールドを示します。
操作
時間
キュー名
アカウント ID
メッセージ ID
リモートアドレス
次の表示時間
レスポンス内の受信ハンドル
リクエスト内の受信ハンドル
[SendMessage]/[BatchSendMessage]
はい
はい
はい
はい
はい
はい
いいえ
いいえ
[PeekMessage]/[BatchPeekMessage]
はい
はい
はい
はい
はい
いいえ
いいえ
いいえ
[ReceiveMessage]/[BatchReceiveMessage]
はい
はい
はい
はい
はい
はい
はい
いいえ
[ChangeMessageVisibility]
はい
はい
はい
はい
はい
はい
はい
はい
[DeleteMessage]/[BatchDeleteMessage]
はい
はい
はい
はい
はい
はい
いいえ
はい
トピックメッセージの操作ログ
トピックメッセージの操作ログは、メッセージのパブリッシュやプッシュなど、トピックメッセージに対して操作が実行されたときに生成されます。次の表に、ログフィールドと、操作タイプとログフィールドの関係を示します。
ログフィールド
各操作ログには複数のフィールドが含まれています。次の表に、フィールドを示します。
フィールド
説明
時間
操作が実行された時間。
メッセージ ID
操作に関連するメッセージの ID。
トピック名
操作に関連するトピックの ID。
サブスクリプション名
操作に関連するサブスクリプションの ID。
アカウント ID
トピックが属する Alibaba Cloud アカウントまたは RAM ユーザー。
リモートアドレス
操作を実行するクライアントのエンドポイント。
通知ステータス
[Simple Message Queue (旧称 MNS)] がクライアントにメッセージをプッシュしたときに返されるステータスコードまたはエラーメッセージ。
処理時間
操作が実行される時間。
メッセージタグ
メッセージのタグ。
リクエスト ID
操作の ID。
アクション
操作の具体的なアクション。有効な値: 削除と送信。
さまざまな操作のフィールド
さまざまな操作によって生成されるログには、さまざまなフィールドが含まれています。次の表に、さまざまな操作のログフィールドを示します。
操作
時間
メッセージ ID
トピック名
サブスクリプション名
アカウント ID
リモートアドレス
通知ステータス
サブスクリプション名
[PublishMessage]
はい
はい
はい
いいえ
はい
はい
いいえ
いいえ
通知
はい
はい
はい
はい
はい
いいえ
はい
はい
[NotifyStatus]
[NotifyStatus] は、[Simple Message Queue (旧称 MNS)] がエンドポイントにメッセージをプッシュできなかった理由を特定するフィールドです。次の表に、エラーコードと対応する解決策を示します。
エラーコード
説明
推奨される解決策
2xx
メッセージがプッシュされます。
該当なし
その他の HTTP ステータスコード
メッセージがエンドポイントにプッシュされた後、2xx 以外の HTTP ステータスコードが返されます。
エンドポイントの処理ロジックを確認してください。
[InvalidHost]
サブスクリプションで指定されたエンドポイントが無効です。
curl または telnet コマンドを使用して、サブスクリプションで指定されたエンドポイントが有効かどうかを確認してください。
[ConnectTimeout]
MNS は、サブスクリプションで指定されたエンドポイントに接続できませんでした。
curl または telnet コマンドを使用して、サブスクリプションで指定されたエンドポイントにアクセスできるかどうかを確認してください。
[ConnectFailure]
MNS は、サブスクリプションで指定されたエンドポイントに接続できませんでした。
curl または telnet コマンドを使用して、サブスクリプションで指定されたエンドポイントにアクセスできるかどうかを確認してください。
[UnknownError]
予期しないエラーが発生しました。
[Simple Message Queue (旧称 MNS)] のテクニカルサポートにお問い合わせください。