LaunchDarkly を使用した RUM のリモート構成
概要
RUM アプリケーションをインスツルメントする場合、より忠実なデータが必要な進行中のインシデントなどの即時のニーズに基づいて、RUM 初期化構成をリモートで制御することができます。
RUM の初期化構成の変更をデプロイする必要がない代わりに、機能フラグを使用することができます。LaunchDarkly のような機能フラグ管理会社は、サーバー側で機能フラグを評価するため、コードを再デプロイする必要なく、変更を加えることができます。
LaunchDarkly でフラグを設定する
LaunchDarkly でフラグを設定するには、まず SDK の設定のドキュメントに従うことから始めてください。その他の詳細については、LaunchDarkly のクライアントサイド SDK のドキュメントを参照してください。
LaunchDarkly は多変量フラグをサポートしており、返すバリエーションの数や種類をカスタマイズすることができます。多変量フラグの種類は以下の通りです。
- 文字列フラグ: 単純な構成値、あるいはコンテンツを渡すためによく使われます。
- 数字フラグ: 単純な数値の構成値を渡すためによく使われます。
- JSON フラグ: 複雑な構成オブジェクトや、構造化されたコンテンツを渡すために使用することができます。
機能フラグオプション
このガイドでは、機能フラグを設定して、リモートで RUM の構成を変更する 2 つの方法を説明します。
- 構成したい個々のパラメーターに対応する機能フラグを作成します。
- RUM 構成全体の機能フラグを作成します。
ヒント: 最初のオプションを使用して、各パラメーターに個別のフラグを作成すると、RUM 構成をよりきめ細かく制御することができます。RUM 構成全体に対して機能フラグを作成すると、多くの異なるバリエーションが発生し、追跡が難しくなり、開発者がバリエーション間の特定の違いを判断するためのオーバーヘッドが発生する可能性があります。
個々のパラメーターオプション
以下の例では、RUM 構成の個々のパラメーターである sessionSampleRate
に対する機能フラグを作成しています。
- LaunchDarkly で新しい機能フラグを作成し、名前とキーを指定します。
フラグのバリエーションを指定します。sessionSampleRate
パラメーターには、数値の値を渡したいので、フラグタイプを Number にし、バリエーションフィールドに値として必要な Sample Rates を追加してください。
注: 必要であれば、複数の異なるフラグのバリエーションを作成することができます。今、必要と思われるすべてのサンプルレートを追加する必要はありません。後でいつでも新しい値のバリエーションを追加することができます。
デフォルトのルールを設定します。以下の例では、機能フラグがオフのときは “Default Sample Rate”、オンのときは “High Fidelity Sample Rate” が設定されています。
RUM 全体構成オプション
この例では、RUM 構成オブジェクト全体に対する機能フラグが作成されます。
LaunchDarkly で新しい機能フラグを作成し、名前とキーを指定します。
フラグのバリエーションを修正します。RUM の構成は、Object を渡したいので、フラグタイプを JSON にして、好きな構成を値として追加し、後でコード内で JSON を Object に変更します。
**注: **必要であれば、複数の異なるフラグのバリエーションを作成することができます。必要と思われるすべての構成を追加する必要はありません。いつでも好きなときに新しい値のバリエーションを追加することができます。
デフォルトのルールを設定します。機能フラグがオフのときは “Default Configuration”、オンのときは “High Fidelity Configuration” が設定されています。
RUM 構成に機能フラグを追加する
上記のように LaunchDarkly をセットアップし、依存関係をインストールし、LaunchDarkly クライアントを初期化したら、Datadog のコードに機能フラグ評価を追加することが可能です。LaunchDarkly でのフラグ評価については、こちらを参照してください。
個々のパラメーターオプション
個々のパラメーターについて RUM SDK を初期化する前に、まず LaunchDarkly の機能フラグを評価する必要があります。
この例では、以下のコードスニペットのように JS で評価を追加することができます。
const RUM_sample_rate = client.variation('rum-sample-rate-configuration', false);
そして、これを RUM の初期設定に追加します。
datadogRum.init({
applicationId: '<DATADOG_APPLICATION_ID>',
clientToken: '<DATADOG_CLIENT_TOKEN>',
site: '<DATADOG_SITE>',
service: 'my-web-application',
env: 'production',
version: '1.0.0',
sessionSampleRate: RUM_sample_rate,
sessionReplaySampleRate: 100,
trackResources: true,
trackLongTasks: true,
trackUserInteractions: true,
})
RUM 全体構成オプション
RUM SDK を初期化する前に、まず、LaunchDarkly の機能フラグを評価する必要があります。例えば、JS ではこのような評価を追加します。
const RUM_configuration = client.variation('rum-configuration', false);
しかし、RUM を初期化するための構成を渡す前に、フラグの JSON 値から Object を作成する必要があります。これを行うと、RUM SDK を初期化することができます。
datadogRum.init(RUM_configuration_object)
LaunchDarkly のコントロールを埋め込んで、ダッシュボードで直接 RUM を構成する
Datadog アプリケーションで直接 RUM の構成を変更したい場合は、LaunchDarkly UI を Datadog に埋め込んで、機能フラグのオン/オフを切り替えることができます。機能フラグはデフォルト値のまま、オフにしておくことができるように設定されています。より忠実度の高いデータを取得したい場合は、機能フラグをオンにすれば、オンのバリエーションに設定した値が RUM の初期化に使用されます。
LaunchDarkly の Datadog アプリインテグレーションは、機能フラグ管理 UI をダッシュボードウィジェットとして埋め込んでいます。このウィジェットを使用すると、Datadog を離れることなく機能フラグを切り替えることができます。主要なメトリクスを表示する新規または既存のダッシュボード内に、LaunchDarkly ウィジェットを埋め込むことができます。インシデントやエラーの急増があった場合、Datadog 内から RUM 構成の機能フラグを切り替え、より多くのデータのサンプリングを開始し、チームが問題に対処し解決するために必要な情報にアクセスできるようにすることが可能です。
構成に最初に設定した値を変更する必要がある場合は、いつでも LaunchDarkly 内でフラグを更新することができます。変更を保存すると、すべての新しいフラグ評価には更新された値が適用されます。
その他の参考資料