Application Real-Time Monitoring Service(ARMS)で監視されているアプリケーションのログをSimple Log Service(SLS)に収集できます。ARMSでプロジェクトとログストアを設定した後、ARMSを使用してログを分析できます。 アプリケーションで例外が発生した場合、ログを使用して例外を正確に特定できます。
アプリケーションモニタリングでは、新しい請求モードを有効にしているユーザー向けに、新しいアプリケーション詳細ページが提供されています。 詳細については、「請求(新規)」をご参照ください。
新しい請求モードを有効にしていない場合は、[アプリケーションリスト] ページで [新しいバージョンに切り替える] をクリックして、新しいアプリケーション詳細ページを表示できます。 アプリケーション一覧
前提条件
アプリケーションがARMSによって監視されていること。 詳細については、「アプリケーションモニタリングの概要」をご参照ください。
Simple Log Serviceがアクティブになっていること。 Simple Log Serviceコンソールにログオンし、画面の指示に従ってSimple Log Serviceをアクティブにします。
Simple Log Serviceプロジェクトが作成されていること。 詳細については、「プロジェクトの作成」をご参照ください。
ログストアが作成されていること。 詳細については、「ログストアの管理」トピックの「ログストアの作成」セクションをご参照ください。
トレースデータが収集され、Simple Log Serviceにインポートされていること。 詳細については、「データ収集の概要」をご参照ください。
手順 1:ビジネスログをトレースIDに関連付ける
[] ARMS console にログオンします。左側のナビゲーション [ペイン] で、 を選択します。
[アプリケーションリスト] ページで、上部のナビゲーションバーでリージョンを選択し、管理するアプリケーションの名前をクリックします。
説明[言語] 列に表示されるアイコンは、アプリケーションが記述されている言語を示します。
:Java アプリケーション
:Go アプリケーション
:Python アプリケーション
ハイフン(-):Managed Service for OpenTelemetry で監視されているアプリケーション。
上部のナビゲーションバーで、
を選択します。[ ] 内の アプリケーションログの関連付け設定 セクションで、[ログ ソース] パラメーターを ログサービス SLS、[オン] にしますビジネスログと TraceId を自動的に関連付ける、リージョン、プロジェクト、およびログストアを選択します。
[保存] をクリックします。
手順 2:ログのクエリと分析
上部のナビゲーションバーで、
を選択します。ログをクエリします。
検索ボックスにクエリステートメントを入力します。
クエリの期間を指定します。
開始時刻と終了時刻を指定することで、カスタム期間を設定できます。 開始時刻と終了時刻は時間単位または秒単位で指定できます。 開始時刻または終了時刻を指定せずに時間の長さを設定することもできます。
説明クエリ結果には、指定された期間よりも 1 分早く、または 1 分遅く生成されたログが含まれる場合があります。
[検索と分析] をクリックして、クエリ結果を表示します。
FAQ
XML 設定を変更した後、トレース ID がログに関連付けられなかったのはなぜですか?
SLS でログをクエリする際にこの問題が発生した場合は、ログが SLS に報告されているかどうか、および SLS プロジェクトとログストアが ARMS コンソールで関連付けのために指定されているかどうかを確認してください。
SLS にデータが存在する場合は、次の操作を実行して問題のトラブルシューティングを行ってください。
すべてのログがトレース ID に関連付けられない。 この状況は、一般的にいくつかの原因が考えられます。
ARMS エージェントがマウントされていない。
すべてのメトリックが ARMS コンソールに正常に表示されているかどうかを確認することで、これを確認します。
エージェントのメインスイッチが無効になっているか、特定のプラグインが無効になっている。 たとえば、Tomcat プラグインがオフになっている可能性があります。
アプリケーション詳細ページに移動し、[カスタム設定] タブの [プローブスイッチ設定] セクションで設定を確認できます。 プローブスイッチの設定カスタム構成
サーバーフレームワークがサポートされていない。 たとえば、サポートされていない Web コンテナ、RPC フレームワーク、スケジュールタスクフレームワーク、およびメッセージフレームワークが使用されています。 サポートされているフレームワークについては、「ARMS でサポートされている Java コンポーネントとフレームワーク」をご参照ください。
log4j、log4j2、logback 以外のロギングフレームワークが使用されているか、これらのロギングフレームワークに大幅な変更が加えられている。
ユーザーログ XML 設定エラーが発生した。
次のトラブルシューティング手順に従います。
エージェント v4.1.6 以降を使用している場合は、トレース ID の自動入力を有効にして、エージェントがトレース ID を関連付けることができるかどうかを確認します。 できる場合は、問題はユーザーログ XML 設定にあります。
ARMS SDK for Java を導入し、メッセージをログに記録するときに手動でトレース ID を取得します。 サンプルコード:
Span span = Tracer.builder().getSpan(); // 新しいスパンは作成されません。 String traceId = span.getTraceId(); logger.warn("traceId={} this is your log message", traceId)
トレース ID を取得できる場合は、ユーザーログ XML 設定にエラーがあることが確認されます。
上記の検証が失敗した場合は、チケットを送信してください。
一部のログがトレース ID に関連付けられない。 これは、ログにトレースコンテキストが存在しないために発生する可能性があります。
通常、一般的な操作中に出力されるログにはトレースコンテキストがありません。 HTTP インターフェース、RPC インターフェース、スケジュールタスク、メッセージ消費などのリクエストエントリポイントで出力されるログのみがトレースコンテキストを含みます。
サンプルシナリオ:
アプリケーションが HTTP リクエストを受信してデータベースクエリを実行した後、ログを出力します。 この場合、トレースコンテキストが存在し、ログはトレース ID に関連付けることができます。
HTTP リクエストを受信した後、アプリケーションはスレッドプールを介して非同期タスクを送信してデータベースクエリを実行し、ログを出力します。
ARMS エージェント v3.x の場合、トレースコンテキストの非同期自動伝播がサポートされていないため、非同期スレッドにはトレースコンテキストがなく、ログはトレース ID に関連付けることができません。
ただし、トレースコンテキストの非同期自動伝播をサポートする ARMS エージェント v4.x の場合、ログはトレース ID に関連付けることができます。
起動後、アプリケーションは JDK のスレッドプールを使用してデータベースクエリを循環的に実行し、各クエリ後にログを出力します。 このシナリオでは、トレースコンテキストがないため、ログはトレース ID に関連付けることができません。
ログを出力するスレッドの名前を調べることで、特定のシナリオを判断できます。
例:
Tomcat を Web コンテナとして使用する場合、
http-nio-
で始まるスレッド名は通常、HTTP リクエストを処理するスレッドを表し、これらのスレッドによって出力されるログはトレース ID に関連付けることができます。Dubbo を RPC フレームワークとして使用する場合、
DubboServerHandler-
で始まるスレッド名は通常、Dubbo リクエストを処理するスレッドを表し、これらのスレッドによって出力されるログはトレース ID に関連付けることができます。
上記のいずれのシナリオにも当てはまらない場合は、チケットを送信してください。
トレースエクスプローラーからログを表示したときにログが空だったのはなぜですか?
次の手順を実行して問題のトラブルシューティングを行ってください。
アプリケーションのすべてのログがトレース ID に関連付けられなかったかどうかを確認します。 アプリケーションのすべてのログがトレース ID に関連付けられなかった場合は、「XML 設定を変更した後、トレース ID がログに関連付けられなかったのはなぜですか?」を参照して問題のトラブルシューティングを行ってください。 すべてのログがトレース ID に関連付けられないわけではない場合は、次の手順に進みます。
特定のトレース ID のログがないインターフェースを特定します。 特定のトレース ID のログをクエリできないインターフェースが常に 1 つまたは少数の特定のインターフェースである場合、一般的にこれらのインターフェース自体が内部でログを出力していないことを示します。
上記のいずれのシナリオにも当てはまらない場合は、チケットを送信してください。
ログストアとプロジェクトをバインドした後、ログストアにログがなかったのはなぜですか?
SLS のドキュメントに従って、アプリケーションログのログストアへの収集を自分で設定する必要があります。 ARMS はログストアへのログの収集を自動的には行いません。
ビジネスアプリケーションログは成功したのに、アプリケーションログがトレース ID に関連付けられなかったのはなぜですか?
エージェント v3.x には Spring Cloud Gateway のインストルメント化に欠陥があります。 エージェントを v4.x にアップグレードすることをお勧めします。
TraceCallable.wrap()を使用してカプセル化した後、非同期タスクのログがトレース ID に関連付けられなかったのはなぜですか?
エージェントを v4.x にアップグレードします。 非同期シナリオでは、コードの変更は必要ありません。
トレース ID の自動入力を有効にした後、トレース ID の関連付けが失敗したのはなぜですか?
この問題は、次の状況で発生する可能性があります。
すべてのログがトレース ID に関連付けられなかった:この場合、トレース ID 入力設定がエージェントにプッシュされませんでした。 Application Configuration Management(ACM)サーバーの接続を確認してください。 詳細については、「ARMS エージェント for Java に必要なネットワーク設定」をご参照ください。
一部のログがトレース ID に関連付けられなかった:「XML 設定を変更した後、トレース ID がログに関連付けられなかったのはなぜですか?」を参照して問題のトラブルシューティングを行ってください。