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
アクション。例:
DeleteMessage、SendMessage。 -
オペレーション別のフィールド
次の表は、各オペレーションに含まれるフィールドを示しています。
オペレーション
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 アドレス。
通知ステータス
SMQ がメッセージをプッシュする際に、エンドポイントから返されたステータスコードまたはエラー。
ProcessTime
オペレーションの処理時間。
MessageTag
メッセージタグ。
RequestId
リクエスト ID。
Action
PublishMessageやNotifyなどのアクション。 -
オペレーション別フィールド
次の表に、各オペレーションに含まれるフィールドを示します。
オペレーション
Time
MessageId
TopicName
SubscriptionName
AccountId
RemoteAddress
通知ステータス
MessageTag
PublishMessage
Yes
Yes
Yes
No
Yes
Yes
No
No
Notify
Yes
Yes
Yes
Yes
Yes
No
Yes
Yes
-
通知ステータス
プッシュ ログの通知ステータス フィールドは、SMQ がメッセージの配信に失敗した理由を示します。次の値に基づいてトラブルシューティングしてください。
エラーコード
説明
推奨アクション
2xx
メッセージは正常にプッシュされました。
なし。
Other HTTP status codes
エンドポイントが 2xx 以外のステータスコードを返しました。
エンドポイントの処理ロジックを確認してください。
InvalidHost
サブスクリプションのエンドポイントが無効です。
curlまたはtelnetを使用して、サブスクリプションのエンドポイントが有効でアクセス可能であることを確認してください。ConnectTimeout
サブスクリプションのエンドポイントへの接続がタイムアウトしました。
curlまたはtelnetを使用して、サブスクリプションのエンドポイントにアクセスできることを確認してください。ConnectFailure
サブスクリプションのエンドポイントへの接続に失敗しました。
curlまたはtelnetを使用して、サブスクリプションのエンドポイントにアクセスできることを確認してください。UnknownError
不明なエラーが発生しました。
SMQ のテクニカルサポートにお問い合わせください。
ログの操作
ログ管理を使用する前に、次のことを確認してください。
-
SLS でプロジェクトと Logstore を作成しておきます。 詳細については、「プロジェクトの管理」および「Logstore の作成」をご参照ください。
SMQ サービスの操作ログは、同じリージョン内の SLS プロジェクトにのみプッシュできます。
-
AliyunMNSLoggingRoleRAM ロールを使用して、ログをエクスポートするための権限を SMQ に付与しておきます。「クラウドリソースアクセス権限付与」をクリックし、画面の指示に従って権限付与を完了してください。
警告権限付与を取り消したり、RAM ロールを削除したりしないでください。 そうしないと、SMQ のログを SLS にプッシュできなくなります。
> [Edit] を選択します。





