Datadog Error Tracking で、アプリケーションの問題を解明 | Datadog

Datadog Error Tracking で、アプリケーションの問題を解明

Author Paul Gottschling

Published: August 11, 2020

アプリケーションがエラーを提起したら、エラーを解明し、優先度を設定してトラブルシューティングを開始し取り組み結果を評価できるように準備する必要があります。エラーは何千ものブラウザセッションやソフトウェアを実行しているバックエンドホストで発生するため、ノイズの中でその意味を理解することは容易ではありません。特に、フロントエンドのエラーでは、ブラウザバージョン、ロケーション、その他の環境の詳細で果てしない数の配列が考えられるため、傾向を特定することが困難です。

このたび、Datadog Error Tracking がフロントエンド JavaScript で利用できるようになりました。他の言語のサポートも間もなく開始されます。Error Tracking を使用すると、アプリケーションエラーを自動的に問題に分類することで、エラーの原因を今まで以上に高度なレベルで解明したり、効果的に調査したりすることができます。個別のエラーイベントと一緒に問題を追跡することで、根本原因の分析に必要なコンテキストを取得し、解決までの平均時間を短縮できます。Error Tracking は、Datadog ですでに監視しているデータを基盤とするため、追加でセットアップしなくても使用を開始できます。

エラーから問題へ

Datadog では、リアルユーザーモニタリング (RUM) でエラーイベントが受信されると新しい問題を作成します。そして、その問題をもとに同様のメッセージとスタックトレースを含む後続のエラーを 1 つにまとめます。数々のエラーを 1 つの問題へとまとめることで、タスクのトリアージを実施したり、同僚のために問題を要約したりできるほか、今後の作業をより明確に理解するのに役立ちます。また、Error Tracking ではエラーの発生時刻などのメタデータを問題に適用することも可能なため、エラーを個別に調査する場合より多くのコンテキストを提供できます。新しい問題が特定されると、Datadog からその都度チームに通知が送信されるため、常に最新のトリアージ計画を確保できます。

Error Tracking では、RUM データからエラーメッセージを抽出するため、SDK を構成したり、アプリケーションコードを修正したりする必要はありません。初回の実行で、エラー追跡は RUM データを処理してブラウザベースの JavaScript エラーを表面化します。プランは分散型追跡と APM スパン、ログメッセージ、モバイル RUM データからエラーを取り込むように整備されているため、アプリケーション全体のエラーを追跡できます。

初めに修正すべきこと、そしてその修正方法を把握

Error Tracking を使用すると、問題に関するコンテキストをさらに多く取得して、よりスマートなトリアージおよび迅速な調査が可能になります。Error Tracking Explorer ビューには、Datadog が検出した問題のリストが、各問題の合計数や時間の経過に伴う頻度などの重要な集計値と一緒に表示されます。

RUM エクスプローラーで特定のユーザーアクションが拒否されているなど、アプリケーションエラーがユーザーに影響を及ぼしていると疑われる場合は、時間範囲や、サービス、環境、アプリケーションバージョンなどのファセットで Error Tracking Explorer にフィルターを設定し、特定の問題をすばやく識別して優先的に調査することが可能です。たとえば、特定のバージョンのサービスを利用している顧客に問題が発生していると判明している場合、そのサービスのバージョンに影響を及ぼしている問題を詳しく調査できます。

errors-view.png

Error Tracking Explorer 内で問題をクリックすると、問題パネルに有用なメタデータが表示されます。時系列グラフに問題のエラー頻度が表示され、問題の深刻度を把握できるほか、問題の発生を他のイベント (最近のデプロイなど) と関連付けやすくなります。

issue-panel.png

たとえば、特定のブラウザバージョンではサポートされない JavaScript 機能の問題 (lookbehinds など) を調査している場合、問題パネルを参照して問題の「初回発生」時刻を確認できます。次に、エラー頻度のグラフを調査し、エラーを直ちに解決する必要があるか (エラーが初回の発生以降増加している場合など)、後で対処するよう計画するかを判断することができます。

調査段階では、エラーの原因となったソースコードを表示できるため、関連する git コミットを容易に見つけて取り消すことができます。Error Tracking Explorer でタブを開いたままにしておくと、最初の問題が依然として発生しているか、または他の問題が発生しているかを確認できます。

スタックトレースをより詳しく解明

本番アプリケーションは、読み込み時間を短縮するために、ブラウザに軽量化された JavaScript を返すことがありますが、軽量化コードは単一ラインにのみ存在するため、スタックトレースが役に立たなくります。スタックトレースからエラーの原因を特定できたとしても、JavaScript ソースファイル内で対応するラインを見つける必要があります。Datadog Error Tracking なら、JavaScript スタックトレースの軽量化プロセスを自動的に取り消せるため、問題を解決するためにソースコードに加えるべき変更が把握しやすくなります。

unminify.png

Error Tracking では、ソースマップを使用してコードの軽量化が解除され、軽量化コードのセグメントが元のソースのどこに位置するかが示されます。Datadog では、継続的なインテグレーション環境での実行を意図して設計された datadog-ci バイナリを使用するため、ソースマップのアップロードが容易です。[datadog-ci sourcemaps upload][upload] コマンドを実行して、構築時にソースマップディレクトリのコンテンツを Datadog へ自動的に送信すると、問題パネル内で軽量化されていないソースコードを確認できるようになります。

Datadog のエラートラッキング機能

Datadog Error Tracking を使えば、アプリケーションエラーに対してすぐに実施可能なインサイトを得られるため、ユーザーに多大な影響を与えている問題をすぐにトラブルシューティングできます。RUM を使用している場合、直ちに Error Tracking が開始します。また、アプリケーションを包括的に視覚化には、Error Tracking のほかにログ管理APMSynthetic の監視を設定することも可能です。コードのリソース使用状況をより明確に視覚化するには、本番アプリケーションでも連続的に実行できる Datadog プロファイリングを設定できます。Datadog のご利用を検討されている場合は、から始めることをおすすめします。