- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
ダイナミックインスツルメンテーションを使用すると、再起動することなく、サードパーティのライブラリを含むアプリケーションのコードの任意の場所で、実行中の本番システムにインスツルメンテーションを追加することができます。Datadog の UI から、ログ、メトリクス、スパン、および対応するタグ付けのテレメトリーを追加または変更することができます。ダイナミックインスツルメンテーションはオーバーヘッドが少なく、システムに副作用を与えません。
ダイナミックインスツルメンテーションはベータ版です。
ダイナミックインスツルメンテーションには、以下のものが必要です。
dd-trace-java
1.15.0 以降。dd-trace-py
1.15.0 以降。dd-trace-dotnet
2.32.0 以降。service
、env
、version
がデプロイメントに適用されていること。debugger_read
) 権限が必要です。debugger_write
) 権限が必要です。ロールの詳細とユーザーにロールを割り当てる方法については、ロールベースアクセス制御を参照してください。ダイナミックインスツルメンテーションは、Datadog に送信され、通常のアプリケーションログと一緒に表示される「ダイナミックログ」を作成します。
除外フィルターを使用する場合は、ダイナミックインスツルメンテーションのログがフィルターされないようにします。
source:dd_debugger
タグにマッチするようにフィルターを設定します。すべてのダイナミックインスツルメンテーションログはこのソースを持ちます。サービスでダイナミックインスツルメンテーションを有効にするには、アプリ内設定ページにアクセスしてください。
より詳細な説明については、以下のランタイムを選択してください。
ダイナミックインスツルメンテーションは、アプリケーションがランタイムに何をしているかを理解するのに役立ちます。ダイナミックインスツルメンテーションのプローブを追加することで、コードを変更したり再デプロイすることなく、アプリケーションから追加のデータをエクスポートすることができます。
プローブを使用すると、プログラムの実行を停止することなく、コード内の特定のポイントからデータを収集できます。
プローブの使用は、コードの変更、デプロイ、サービスの再起動を行うことなく、実行中のアプリケーションに動的なログ、メトリクス、スパンを追加して観測可能性を強化することと考えてください。ユーザーエクスペリエンスを妨げたり、長時間のデプロイを必要とすることなく、即座にデータを収集することができます。
開発者としては、プローブを「ブレークしないブレークポイント」と考えることもできます。従来のデバッグでは、ブレークポイントとはプログラムの実行を停止するポイントのことで、開発者はその時点でのプログラムの状態を検査することができます。しかし、実際の本番環境では、プログラムの実行を停止することは現実的ではありませんし、不可能です。プローブは、非侵入的な方法で本番環境の変数状態を検査できるようにすることで、このギャップを埋めます。
どのプローブタイプでも、初期設定は同じです。
各プローブタイプの具体的な作成手順については、以下の各プローブタイプを参照してください。
または、これらの他のコンテキストからプローブを作成することもできます。
プロファイリング : プロファイラーのフレームグラフで、フレームのコンテキストメニューから Instrument this frame with a probe を選択すると、メソッドのプローブを作成できます。
エラー追跡 : スタックトレース上で、スタックフレームにカーソルを合わせ、** Instrument** をクリックします。これにより、プローブ作成フォームに問題のコンテキストが入力されます。
ログプローブは、実行時にログを出力します。
ログプローブは、指定された環境とバージョンに一致するすべてのサービスインスタンスでデフォルトで有効になっています。また、サービスの各インスタンスで 1 秒間に最大 5000 回までしか実行できないようにレート制限されています。
ログプローブで Capture method parameters and local variables (メソッドのパラメーターとローカル変数のキャプチャ) を有効にすると、以下のデバッグデータがキャプチャされ、ログイベントに追加されます。
実行コンテキストのキャプチャはパフォーマンスに影響するため、デフォルトでは、指定した環境とバージョンに一致するサービスの 1 つのインスタンスでのみ有効になっています。この設定を有効にしたプローブは、1 秒間に 1 回のヒットにレートが制限されます。
すべてのログプローブでログメッセージテンプレートを設定する必要があります。テンプレートは、中括弧内の式の埋め込みをサポートします。例: User {user.id} purchased {count(products)} products
.
式言語を使用して、ログプローブに条件を設定することもできます。式はブール値で評価する必要があります。式が true の場合はプローブが実行され、式が false の場合はデータはキャプチャされず、また何も出力されません。
警告: キャプチャされたデータには、個人データ、パスワード、AWS キーなどの秘密をはじめとした機密情報が含まれる可能性があります。
この情報が Datadog に送信されないようにするには、以下のいずれかのオプションを実行してください。
Capture method parameters and local variables
(メソッドのパラメーターとローカル変数のキャプチャ) オプションを無効にし、ログメッセージテンプレートに含めたい変数を明示的に選択する。これを行うことにより、具体的に特定した変数に関連するデータのみがログプローブに含まれるようになります。あるいは、このデータを記録する必要はあるが、Datadog 製品内でそれがアクセス可能となることに関連するリスクを軽減したい場合は、source:dd_debugger
に制限クエリを設定することで、組織内のどのユーザーがキャプチャされたデータを表示できるかを制限することができます。
ログプローブを作成するには
メトリクスプローブは、実行時にメトリクスを出力します。
メトリクスプローブは、構成された環境とバージョンに一致するすべてのサービスインスタンスで自動的に有効になります。メトリクスプローブはレート制限を受けず、メソッドまたは行が呼び出されるたびに実行されます。
ダイナミックインスツルメンテーションメトリクスプローブは、以下のメトリクスタイプをサポートしています。
メトリクスプローブを作成するには
dynamic.instrumentation.metric.probe.
となります。スパンプローブは、メソッドの実行時にスパンを出力します。
カスタムインスツルメンテーションで新しいスパンを作成するより効率的な代替手段として、スパンプローブを使用することができます。メソッドが例外をスローした場合、例外の詳細は新しく作成されたスパンの error
タグに関連付けられます。
スパンプローブを作成するには
スパンタグプローブは、既存のスパンにタグ値を追加します。タグは、_アクティブ_スパンまたは_サービスエントリ_スパンに追加できます。 内部スパンはデフォルトでインデックス化されていないため、APM で検索できない可能性があることに注意してください。
コードにタグを追加するためにカスタムインスツルメンテーションを使用するより効率的な代替手段として、スパンタグプローブを使用することができます。
スパンタグプローブを作成するには