RUM エラー追跡
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

RUM エラー追跡

Error Tracking とは?

Datadog では、非常に多くのエラーが収集されます。システムの正常性維持には、このエラーを監視することが不可欠ですが、件数が多いため個々のエラーイベントを重要度により特定し修正の順序を見極めることは大変困難です。

Error Tracking を使用すると、以下の機能により簡単にエラーを監視できます。

  • 同様のエラーを問題としてグループ化する ため、ノイズがなくなり最も重要なエラーを特定することができます。
  • 経時的に問題を監視する ため、開始のタイミングや継続した場合の頻度を把握できます。
  • 必要なコンテキストをまとめて 1 か所で確認 できるため、問題のトラブルシューティングが容易になります。

はじめに

Error Tracking では、RUM SDK によりブラウザから収集されたエラー (ソース元のあるエラー) を処理します。

エラー追跡を素早く開始するには:

  1. RUM Browser SDK の最新バージョンをダウンロードします。
  2. SDK の初期化時に、versionenvservice を構成します。

マッピングファイルのアップロード

一部のアプリケーションのソースコードは、実稼働用にデプロイされるときにパフォーマンスの最適化およびセキュリティの観点から難読化または縮小されます。 その結果、そのようなアプリケーションで発生したエラーのスタックトレースも難読化され、トラブルシューティングのプロセスが難航することになります。

Javascript ソースマップ

ソースマップは、Javascript のソースコードを縮小する際に生成されるマッピングファイルです。このマッピングファイルをビルドディレクトリからアップロードするために、Datadog CLI を使用できます(ビルドディレクトリとそのサブディレクトリをスキャンして、関連する縮小化ファイルとともにソースマップを自動的にアップロード)。CI パイプラインから、ソースマップを直接アップロードします。

  1. package.json ファイルに @datadog/datadog-ci を追加します (必ず最新バージョンを使用してください)。
  2. 新しい専用の Datadog API キーを作成し、DATADOG_API_KEY という名前の環境変数としてエクスポートします。
  3. 次のコマンドを実行します。
datadog-ci sourcemaps upload /path/to/dist \
    --service=my-service \
    --release-version=v35.2395005 \
    --minified-path-prefix=https://hostname.com/static/js
  1. package.json ファイルに @datadog/datadog-ci を追加します (必ず最新バージョンを使用してください)。
  2. 新しい専用の Datadog API キーを作成し、DATADOG_API_KEY という名前の環境変数としてエクスポートします。
  3. 2 つの追加環境変数 export DATADOG_SITE="datadoghq.eu" および export DATADOG_API_HOST="api.datadoghq.eu" をエクスポートして、EU リージョンにファイルをアップロードするために CLI を構成します。
  4. 次のコマンドを実行します。
datadog-ci sourcemaps upload /path/to/dist \
    --service=my-service \
    --release-version=v35.2395005 \
    --minified-path-prefix=https://hostname.com/static/js

ソースマップでエラー追跡が正常に動作するには、以下を満たすように Javascript バンドルを構成する必要があります。

  • ソースマップが直接関連ソースコードを直接含むこと。アップロードする前に、ソースマップ内の sourcesContent 属性が空でないことを確認してください。
  • 関連する縮小ファイルのサイズで拡張された各ソースマップのサイズが、__上限の 50mb__を越えないこと。この合計は、ソースコードを複数の小さい部分に分けるようバンドルを構成することで抑制することができます (WebpackJS でこれを実行する方法はこちら)。

その他の参考資料