このチュートリアルのパート 1 では、さらに調査するためにエラー グループを選択しました。パート 2 では、エラーに関する属性、ログ、トレースを表示する新しいページを調査します。
チュートリアルのこの部分では、エラーを分析するための 2 つの推奨手段、ログとスタック トレースについて説明します。
目的
このドキュメントは、このチュートリアル シリーズの 「サービス停止への対応」 ドキュメントの範囲内の問題を基にして構築されています。このドキュメントでは、次のことを行います。
- ログを使用して、失敗した API に関連するエラー コードを特定します。
- スタック トレースを使用して、コード内のどこでエラーが発生しているかを見つけます。
ログとスタック トレースを使用してエラーの原因を特定する
エラーの概要は、エラー グループの背後にあるストーリーを示します。New Relic の構成方法に応じて、各サービスでエラーに関するさまざまな種類の情報が表示される場合があります。たとえば、分散トレースを無効にしている場合、トレースには外部サービスに関する詳細があまり表示されません。
ログの詳細ウィンドウを開く
この例を見ると、APM エージェントは api-gateway
に関連するログを取得し、エラーに関するイベント データを提供しています。
ログインコンテキスト機能はログ情報をフォーマットしますが、フォーマットされていないログを調査するオプションもあります。
システム内の障害点を見つける
ログの性質に応じて、分類する必要のあるログの詳細が多かれ少なかれ必要になる場合があります。事前に時間をかけて障害に最も近いサービスを絞り込み、可能性の高いエラー グループを選択したため、ログを読む時間があります。
ログによると、問題は次のとおりです。
タイムアウトエラー:
error.error.code: ETIMEDOUT
顧客 API に関連するもの:
error.endpoint: customers-api-internal
顧客 API に送信されるリクエストの種類に依存しません。
error.request: /api/customers/search/Kirlin/-/
それを結び付けるのに十分なコンテキストがあります。依存関係に障害があると結論付けます。顧客 API へのすべての呼び出しがタイムアウトになり、
api-gateway
からのアップストリーム リクエストが失敗します。
スタック トレースを使用してコード内の障害ポイントを見つける
コードを実行すると、New Relic は例外または実行時エラーをキャプチャし、それらをウォーターフォール ビューに整理します。これらはスタック トレースです。使用されている言語に応じて、これらのスタック トレースにより、詳細なメッセージと障害ポイントの場所が提供されます。
ログはエラーの原因を示しますが、スタック トレースはエラーの原因を特定します。これらのスタック トレースを使用すると、コード内のどこでエラーが発生しているかを正確に見つけて、それらのエラーを所有チームに結び付けることができます。
New Relic から IDE で開きます
New Relic からコードを開くには、 CodeStream をインストールする必要があります。これはオプションですが、スタック トレースから IDE を直接開くことができる強く推奨される機能です。
次は何ですか?
エラーに対応し、機能停止の直接の原因を特定することは、アプリのエラーへの対処の一部にすぎません。機能停止の原因を説明、診断、検索する方法を説明したので、エラーを関連チームに転送できます。