- 重要な情報
- はじめに
- 用語集
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Datadog Real User Monitoring (RUM) を使用すると、Flutter アプリケーションの個々のユーザーのリアルタイムパフォーマンスとユーザージャーニーを視覚化して分析できます。
RUM は Flutter 2.8+ の Flutter Android および iOS アプリケーションの監視をサポートしています。
iOS SDK | Android SDK | Browser SDK |
---|---|---|
1.14.0 | 1.16.0 | 4.x.x |
iOS の Podfile は use_frameworks!
(Flutter のデフォルトでは true) で、iOS のバージョン >= 11.0 をターゲットにしている必要があります。
Android では、minSdkVersion
が >= 19 である必要があり、Kotlin を使用している場合は、バージョン >= 1.5.31 である必要があります。
⚠️ Flutter Web の Datadog サポートはまだ初期開発中です
Web の場合、index.html
の head
タグの下に以下を追加します。
<script type="text/javascript" src="https://www.datadoghq-browser-agent.com/datadog-logs-v4.js"></script>
<script type="text/javascript" src="https://www.datadoghq-browser-agent.com/datadog-rum-slim-v4.js"></script>
これは、Logs と RUM の CDN 配信された Datadog Browser SDK をロードします。Datadog Browser SDK の同期 CDN 配信バージョンは、Flutter プラグインでサポートされている唯一のバージョンです。
Flutter
を選択します。データの安全性を確保するために、クライアントトークンを使用する必要があります。クライアントトークンの設定方法については、クライアントトークンのドキュメントを参照してください。
以下のスニペットで、Datadog の各機能 (Logs や RUM など) のコンフィグレーションオブジェクトを作成します。ある機能に対してコンフィギュレーションを渡さないことで、その機能は無効化されます。
// 追跡に対するユーザーの同意の判断
final trackingConsent = ...
final configuration = DdSdkConfiguration(
clientToken: '<CLIENT_TOKEN>',
env: '<ENV_NAME>',
site: DatadogSite.us1,
trackingConsent: trackingConsent,
nativeCrashReportEnabled: true,
loggingConfiguration: LoggingConfiguration(
sendNetworkInfo: true,
printLogsToConsole: true,
),
rumConfiguration: RumConfiguration(
applicationId: '<RUM_APPLICATION_ID>',
)
);
利用可能な構成オプションの詳細については、DdSdkConfiguration オブジェクトのドキュメントを参照してください。
RUM の初期化は、main.dart
ファイル内の 2 つのメソッドのうちの 1 つを使用して行うことができます。
エラーレポートとリソーストレースを自動的にセットアップする DatadogSdk.runApp
を使用します。
await DatadogSdk.runApp(configuration, () async {
runApp(const MyApp());
})
また、手動でエラー追跡とリソース追跡を設定することもできます。DatadogSdk.runApp
は WidgetsFlutterBinding.ensureInitialized
を呼び出すので、DatadogSdk.runApp
を使用しない場合は、DatadogSdk.instance.initialize
を呼び出す前にこのメソッドを呼び出す必要があります。
runZonedGuarded(() async {
WidgetsFlutterBinding.ensureInitialized();
final originalOnError = FlutterError.onError;
FlutterError.onError = (details) {
FlutterError.presentError(details);
DatadogSdk.instance.rum?.handleFlutterError(details);
originalOnError?.call(details);
};
await DatadogSdk.instance.initialize(configuration);
runApp(const MyApp());
}, (e, s) {
DatadogSdk.instance.rum?.addErrorInfo(
e.toString(),
RumErrorSource.source,
stackTrace: s,
);
});
Datadog を LoggingConfiguration
で初期化した後、logs
のデフォルトインスタンスを使用して Datadog にログを送信することができます。
DatadogSdk.instance.logs?.debug("A debug message.");
DatadogSdk.instance.logs?.info("Some relevant information?");
DatadogSdk.instance.logs?.warn("An important warning...");
DatadogSdk.instance.logs?.error("An error was met!");
また、createLogger
メソッドを使用して、追加のロガーを作成することも可能です。
final myLogger = DatadogSdk.instance.createLogger(
LoggingConfiguration({
loggerName: 'Additional logger'
})
);
myLogger.info('Info from my additional logger.');
ロガーに設定されたタグおよび属性は、各ロガーにローカルです。
Datadog Flutter Plugin は、MaterialApp 上の DatadogNavigationObserver
を使用して、自動的に名前付きルートを追跡することができます。
MaterialApp(
home: HomeScreen(),
navigatorObservers: [
DatadogNavigationObserver(DatadogSdk.instance),
],
);
これは名前付きルートを使用している場合、または PageRoute
の settings
パラメーターに名前を指定した場合に動作します。
また、DatadogRouteAwareMixin
プロパティと DatadogNavigationObserverProvider
プロパティを組み合わせて使用すると、RUM ビューを自動的に起動したり停止したりすることができます。DatadogRouteAwareMixin
を使って、initState
から didPush
へとロジックを移動させます。
デフォルトでは、DatadogRouteAwareMixin
はウィジェットの名前をビューの名前として使用することに注意してください。しかし、これは難読化されたコードでは動作しません。難読化の際に Widget クラスの名前が失われてしまうからです。正しいビュー名を保持するには、rumViewInfo
をオーバーライドしてください。
class _MyHomeScreenState extends State<MyHomeScreen>
with RouteAware, DatadogRouteAwareMixin {
@override
RumViewInfo get rumViewInfo => RumViewInfo(name: 'MyHomeScreen');
}
Datadog Tracking HTTP Client パッケージを使用すると、RUM ビューからリソースと HTTP 呼び出しの自動追跡を有効にすることができます。このパッケージを pubspec.yaml
に追加し、初期設定に以下を追加します。
final configuration = DdSdkConfiguration(
// 構成
firstPartyHosts: ['example.com'],
)..enableHttpTracking()
Datadog 分散型トレーシングを有効にするには、構成オブジェクトの DdSdkConfiguration.firstPartyHosts
プロパティを、分散型トレーシングをサポートするドメインに設定する必要があります。また、RumConfiguration
で tracingSamplingRate
を設定することで、Datadog 分散型トレーシングのサンプリングレートを変更することができます。
データが Datadog にアップロードされる前に、アプリケーションのキャッシュディレクトリに平文で保存されます。このキャッシュフォルダは、Android のアプリケーションサンドボックスによって保護されており、ほとんどのデバイスで、このデータは他のアプリケーションによって読み取られることはありません。しかし、モバイルデバイスがルート化されていたり、誰かが Linux カーネルをいじったりすると、保存されているデータが読めるようになる可能性があります。
データは Datadog にアップロードされる前に、アプリケーションサンドボックスのキャッシュディレクトリ (Library/Caches
) に平文で保存され、デバイスにインストールされた他のアプリからは読み取ることができません。
プルリクエストを歓迎します。まず、課題を開いて、何を変更したいかを議論してください。
詳しくは、寄稿ガイドラインをご覧ください。
詳細については、Apache ライセンス、v2.0 を参照してください。