概要

クラッシュレポートとエラー追跡を有効にすると、リアルユーザーモニタリングで包括的なクラッシュレポートとエラートレンドを取得できます。

クラッシュレポートは Error Tracking に表示されます。

セットアップ

Datadog Flutter SDK for RUM をまだセットアップしていない場合は、アプリ内セットアップ手順に従うか、Flutter セットアップドキュメントを参照してください。

ネイティブクラッシュレポートの追加

初期化スニペットを更新し、nativeCrashReportEnabledtrue に設定することで iOS と Android のネイティブクラッシュレポートを有効化します。

例:

final configuration = DdSdkConfiguration(
  clientToken: 'DD_CLIENT_TOKEN'
  env: 'DD_ENV'
  site: DatadogSite.us1,
  trackingConsent: TrackingConsent.granted,
  nativeCrashReportEnabled: true, // このフラグを設定します
  loggingConfiguration: LoggingConfiguration(),
  rumConfiguration: 'DD_APP_ID',
);
DatadogSdk.instance.initialize(configuration);

アプリケーションが致命的なクラッシュに見舞われた場合、アプリケーションが再起動すると、Datadog Flutter SDK は Datadog にクラッシュレポートをアップロードします。致命的でないエラーの場合、Datadog Flutter SDK はこれらのエラーを他の RUM データと共にアップロードします。

Datadog へのシンボルファイルのアップロード

ネイティブ iOS クラッシュレポートは生のフォーマットで収集され、そのほとんどがメモリアドレスを含んでいます。これらのアドレスを読みやすいシンボル情報にマッピングするために、Datadog は .dSYM ファイルのアップロードを必要とし、これはアプリケーションのビルドプロセスで生成されます。

--split-debug-info オプションセットと --obfuscate オプションセットでビルドされたすべてのクラッシュレポートについて、その Android Proguard マッピングファイルと Flutter ビルドプロセスによって生成された Dart シンボルファイルをアップロードする必要があります。

コマンドラインツール @datadog/datadog-ci は、必要なファイル (dSYMs、Android Proguard Mapping、Dart Symbol Files) を 1 つのコマンドでアップロードすることに対応しています。

まず、上記の手順で datadog-ci ツールをインストールし、プロジェクトのルートに datadog-ci.json ファイルを作成し、API キーと (オプションで) Datadog サイトを記述します。

{
  "apiKey": "<YOUR_DATADOG_API_KEY>",
  "datadogSite": "datadoghq.eu"  // datadoghq.com を使用している場合はオプション
}

このファイルには API キーが含まれているため、バージョン管理にはチェックインしないでください。

代わりに、環境変数 DATADOG_API_KEYDATADOG_SITE を設定することも可能です。

次に、以下のコマンドを使用して、クラッシュレポートのシンボル化および難読化解除に必要なすべてのファイルをアップロードすることができます。

datadog-ci flutter-symbols upload --service-name <YOUR_SERVICE_NAME> --dart-symbols-location <LOCATION_OF_DART_SYMBOLS> --android-mapping --ios-dsyms

オプションの完全なリストは、datadog-ci Flutter Symbols のドキュメントを参照してください。

高度な設定: フレーバーとビルド番号

Datadog は、service-nameversionflavor の組み合わせで難読化のための正しいシンボルを探すので、datadog-ci コマンドに送るパラメーターと DdSdkConfiguration で設定するパラメーター

Flutter でアプリのフレーバーを使用している場合、フレーバーを自動検出できないため、DdSdkConfiguration.flavor でフレーバーの名前を設定する必要があります。そして、これを datadog-ci コマンドの --flavor パラメーターに渡すことができます。

datadog-ci flutter-symbols upload --service-name <YOUR_SERVICE_NAME> --dart-symbols-location <LOCATION_OF_DART_SYMBOLS> --android-mapping --ios-dsyms --flavor my_flavor

Datadog SDK は、 pubspec.yaml に指定されたアプリケーションのバージョン番号を、ビルド番号を含まない範囲まで自動的に検出します。アプリケーションでバージョンにビルド番号を含めており、ビルドごとにシンボルをアップロードする必要がある場合は、 DdSdkConfiguration.version にそのバージョンを追加してください。その後、datadog-ci コマンドの --version パラメーターにこれを渡します:

datadog-ci flutter-symbols upload --service-name <YOUR_SERVICE_NAME> --dart-symbols-location <LOCATION_OF_DART_SYMBOLS> --android-mapping --ios-dsyms --version 1.2.3+22

Datadog は + を許さないバージョンのタグを使用することに注意してください。すべてのツールは、バージョンタグが Datadog で検索できるように、自動的に +- に置き換えます。

参考資料

お役に立つドキュメント、リンクや記事: