すべてのプロダクト
Search
ドキュメントセンター

Simple Message Queue (formerly MNS):ログ管理

最終更新日:Aug 21, 2026

Simple Message Queue (SMQ) のログ管理機能は、メッセージリクエストログを Simple Log Service (SLS) にプッシュします。その後、 SLS を使用してリクエストログのクエリや分析を行い、本番環境の問題をトラブルシューティングできます。

ユースケース

メッセージの送受信時によくある問題:

  • メッセージはキューに正常に送信されましたが、コンシューマークライアントが受信しません。メッセージはどこに行ったのでしょうか。

  • 特定のメッセージを誰が消費しましたか。何回消費されましたか。

  • コンシューマークライアントがクラッシュしました。消費に失敗したメッセージはいつ再度消費できますか。

  • メッセージがトピックに発行されましたが、エンドポイントが長時間メッセージを受信していません。何が遅延の原因ですか。

SMQ のログ管理は、これらの問題に対処します。

  • ログを SLS にプッシュし、コンソールで完全なメッセージトレースを表示できます。

  • 公式サイトで提供されているクエリツールを使用し、パラメーターを指定してメッセージ処理ログを表示できます。

課金

  • SMQ のログ管理機能では、追加料金は発生しません。

  • SMQ がログを SLS にプッシュすると、SLS はストレージ容量、トラフィック、およびリクエスト数に基づいて課金します。詳細については、課金概要をご参照ください。

キューログのフォーマット

キューメッセージのオペレーション (送信、消費、削除) は、ログエントリを生成します。含まれるフィールドは、オペレーションによって異なります。

  • ログフィールド

    キューログエントリには、次のフィールドが含まれる場合があります:

    フィールド

    説明

    Time

    オペレーションのタイムスタンプ。

    MessageId

    一意のメッセージ ID。

    QueueName

    ターゲットキュー名。

    AccountId

    キュー所有者のアカウント ID。

    RemoteAddress

    クライアントの IP アドレス。

    NextVisibleTime

    メッセージが再び可視状態になる時刻。

    ReceiptHandleInRequest

    クライアントが提供した ReceiptHandle

    ReceiptHandleInResponse

    クライアントに返される ReceiptHandle

    ProcessTime

    オペレーションの処理時間。

    RequestId

    リクエスト ID。

    Action

    アクション (DeleteMessageSendMessage など)。

  • オペレーション別のフィールド

    次の表に、各オペレーションに含まれるフィールドを示します:

    オペレーション

    Time

    QueueName

    AccountId

    MessageId

    RemoteAddress

    NextVisibleTime

    ReceiptHandleInResponse

    ReceiptHandleInRequest

    SendMessage/BatchSendMessage

    はい

    はい

    はい

    はい

    はい

    はい

    いいえ

    いいえ

    PeekMessage/BatchPeekMessage

    はい

    はい

    はい

    はい

    はい

    いいえ

    いいえ

    いいえ

    ReceiveMessage/BatchReceiveMessage

    はい

    はい

    はい

    はい

    はい

    はい

    はい

    いいえ

    ChangeMessageVisibility

    はい

    はい

    はい

    はい

    はい

    はい

    はい

    はい

    DeleteMessage/BatchDeleteMessage

    はい

    はい

    はい

    はい

    はい

    はい

    いいえ

    はい

トピックログフォーマット

トピックのメッセージオペレーション (パブリッシュおよびプッシュ) は、ログエントリを生成します。含まれるフィールドは、オペレーションによって異なります。

  • ログフィールド

    トピックのログエントリには、次のフィールドが含まれる場合があります。

    フィールド

    説明

    Time

    オペレーションのタイムスタンプ。

    MessageId

    一意のメッセージ ID。

    TopicName

    対象のトピック名。

    SubscriptionName

    サブスクリプション名。

    AccountId

    トピック所有者のアカウント ID。

    RemoteAddress

    クライアント IP アドレス。

    NotifyStatus

    SMQ がメッセージをプッシュする際に、エンドポイントから返されるステータスコードまたはエラー。

    ProcessTime

    オペレーションの処理時間。

    MessageTag

    メッセージタグ。

    RequestId

    リクエスト ID。

    Action

    PublishMessageNotify などのアクション。

  • オペレーションごとのフィールド

    次の表に、各オペレーションに含まれるフィールドを示します。

    オペレーション

    Time

    MessageId

    TopicName

    SubscriptionName

    AccountId

    RemoteAddress

    NotifyStatus

    MessageTag

    PublishMessage

    はい

    はい

    はい

    いいえ

    はい

    はい

    いいえ

    いいえ

    Notify

    はい

    はい

    はい

    はい

    はい

    いいえ

    はい

    はい

  • NotifyStatus

    プッシュログの NotifyStatus フィールドは、SMQ がメッセージの配信に失敗した理由を示します。次の値に基づいてトラブルシューティングしてください。

    エラーコード

    説明

    推奨アクション

    2xx

    メッセージは正常にプッシュされました。

    不要です。

    その他の HTTP ステータスコード

    エンドポイントが 2xx 以外のステータスコードを返しました。

    エンドポイント側の処理ロジックを確認してください。

    InvalidHost

    サブスクリプションのエンドポイントが無効です。

    curl または telnet を使用して、サブスクリプションのエンドポイントが有効で、アクセス可能であることを確認してください。

    ConnectTimeout

    サブスクリプションのエンドポイントへの接続がタイムアウトしました。

    curl または telnet を使用して、サブスクリプションのエンドポイントにアクセスできることを確認してください。

    ConnectFailure

    サブスクリプションのエンドポイントへの接続に失敗しました。

    curl または telnet を使用して、サブスクリプションのエンドポイントにアクセスできることを確認してください。

    UnknownError

    不明なエラーが発生しました。

    SMQ テクニカルサポートにお問い合わせください。

ログ操作

ログ管理を使用する前に、次のことを確認してください:

  • Simple Log Service (SLS) でプロジェクトと Logstore を作成しておく必要があります。詳細については、プロジェクトの管理およびLogstore の作成をご参照ください。

    SMQ サービスの操作ログは、同じリージョン内の SLS プロジェクトにのみプッシュできます。

  • AliyunMNSLoggingRole RAM ロールを使用して、SMQ がログをエクスポートできるように承認しておく必要があります。

    クラウドリソースのアクセス承認 をクリックし、画面の指示に従って承認を完了します。

    警告

    承認を取り消したり、RAM ロールを削除したりしないでください。そうしないと、SMQ ログが SLS にプッシュされなくなります。

ロギングの有効化または無効化

キューロギングの有効化または無効化

  1. MNS コンソールにログインします。
  2. ナビゲーションペインで、キュー をクリックします。

  3. トップメニューバーで、リージョンを選択します。

  4. キュー ページで対象のキューを見つけ、操作 列で image > [Edit] を選択します。

  5. [Edit Queue Parameters] パネルで、ログ機能の有効化 スイッチをオンまたはオフにします。

    キュー ページの対象キューの [Logging] 列に、[Enabled] または [Disabled] と表示されます。

トピックロギングの有効化または無効化

  1. MNS コンソールにログインします。
  2. ナビゲーションペインで、トピック をクリックします。

  3. トップメニューバーで、リージョンを選択します。

  4. トピック ページで、対象のトピックを見つけ、操作 列で [Edit] をクリックします。

  5. [Edit Topic Parameters] パネルで、ログ機能の有効化 スイッチをオンまたはオフにします。

    トピック ページの対象トピックの [Logging] 列に、[Enabled] または [Disabled] と表示されます。

SLS へのログプッシュ

手順

  1. MNS コンソールにログインします。
  2. ナビゲーションペインで、ログ管理 をクリックします。

  3. トップメニューバーで、リージョンを選択します。

  4. ログ管理 ページの [Select Target] タブで、[Simple Log Service (SLS)] を選択します。

  5. ターゲットの設定 タブで、[Project Name][Logstore Name] を選択し、[Enable] をクリックします。

    ログ管理 ページに、設定されたプロジェクトと Logstore が表示されます。

ログの表示

手順

  1. Log Serviceコンソールにログインします。

  2. [プロジェクト] セクションで、管理するプロジェクトをクリックします。

  3. [Log Storage > Logstores] タブで、対象のログストアをクリックします。

  4. クエリステートメントを入力し、[Last 15 Minutes] をクリックして時間範囲を設定します。詳細については、検索と分析のクイックスタートをご参照ください。

ログ分析の例

キューメッセージトレースのクエリ

キューメッセージをトレースするには、キュー名とメッセージ ID でクエリします: $QueueName and $MessageId。例: log and EED287A265726135146E6A9CADC8XXXX

結果には、送信から受信までのメッセージライフサイクルが表示されます。

2 つのログエントリは同じ MessageId を共有しています。エントリ 5 は SendMessage 操作に対応し、エントリ 4 は ReceiveMessage 操作に対応しています。

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

トピックメッセージトレースのクエリ

トピックメッセージをトレースするには、トピック名とメッセージ ID でクエリします: $TopicName and $MessageId。例: logtest and 8798453B65727FC6433E6AB4F746XXXX

結果には、発行から通知までのメッセージライフサイクルが表示されます。

1  10-22 11:30:15  MNSLogging  1603337415

  PushResult :SUCCESS
  ProcessTime :5
  Time :2020-10-22 11:30:15.120000
  AccountId :1xxx xxx5
  Action :PushMessage
    MessageId :8798453B65727FC6433E6AB4F746XXXX
    RequestId :5F90B1A7C8D8E9F553C1A2B3
    RemoteAddress :MNS-Internal
    TopicName :logtest
    SubscriptionName :logtest-sub-http
    Endpoint :http://example.com/receiver

2  10-22 11:30:10  MNSLogging  1603337410

  ProcessTime :2
  Time :2020-10-22 11:30:10.550000
  AccountId :17xxx xxx2745
  Action :PublishMessage
    MessageId :8798453B65727FC6433E6AB4F746XXXX
    RequestId :5F90B1A2A1B2C3D4E5F6A7B8
    RemoteAddress :xxx xxx1
    TopicName :logtest

送信されたキューメッセージのクエリ

キューに送信されたメッセージをクエリするには、キュー名と送信操作を使用します: $QueueName and (SendMessage or BatchSendMessage)。例: log and (SendMessage or BatchSendMessage)

クエリステートメントを入力し、時間範囲 (例: [Last 15 Minutes (Relative)]) を設定した後、 [Query/Analyze] をクリックします。クエリ結果には、指定された時間範囲内にプロデューサーが log キューに送信した 3 つのメッセージが表示されます。各ログエントリには、Action、QueueName、MessageId、RequestId、AccountId などのフィールドが含まれています。

発行されたトピックメッセージのクエリ

トピックに発行されたメッセージをクエリするには、トピック名と発行操作を使用します: $TopicName and PublishMessage。例: logtest and PublishMessage

クエリを実行すると、結果には、指定された時間範囲内にプロデューサーから logtest トピックに発行された 3 つのメッセージが表示されます。各ログレコードには、[TopicName] (値:logtest)、[Action] (値:PublishMessage)、[ProcessTime][Time][AccountId][MessageId][RequestId][RemoteAddress][MessageTag] などのフィールドが含まれています。

消費されたキューメッセージのクエリ

キューから消費されたメッセージをクエリするには、キュー名と消費操作を使用します: $QueueName and (ReceiveMessage or BatchReceiveMessage)。例: log and (ReceiveMessage or BatchReceiveMessage)

クエリを実行すると、結果には、指定された時間範囲内に log キューから消費された 12 のメッセージが表示されます。ログの詳細では、[Action] フィールドは ReceiveMessage[QueueName] フィールドは log となっており、指定されたキューの消費レコードが一致していることが確認できます。

削除されたキューメッセージのクエリ

キューから削除されたメッセージをクエリするには、キュー名と削除操作を使用します: $QueueName and (DeleteMessage or BatchDeleteMessage)。例: log and (DeleteMessage or BatchDeleteMessage)

[Query/Analyze] をクリックします。クエリ結果には、指定された時間範囲内に log キューから削除された 61 のメッセージが表示されます。ログの詳細では、[Action] フィールドは DeleteMessage[QueueName] フィールドは log です。

クライアント別のメッセージクエリ

特定のクライアントによって処理されたメッセージをクエリするには、クライアント IP アドレスを使用します: $ClientIP。例: 10.10.10.0

操作タイプでフィルタリングするには、キーワードを組み合わせます。例: $ClientIP and (SendMessage or BatchSendMessage)

クエリステートメントを入力した後、[Query/Analyze] をクリックし、右側の時間ピッカーを使用して時間範囲 (例: [Last 15 Minutes (Relative)]) を設定します。クエリ結果には、指定された時間範囲内にクライアントが処理した 66 のメッセージが表示されます。ページには [Query Results] のステータスである [Precise][Log Count] が表示され、クエリ結果ヒストグラムには時間経過に伴うログの分布が表示されます。