メインコンテンツまでスキップ

Databricks Appsのテレメトリを構成する

備考

ベータ版

アプリテレメトリはベータ版です。

Databricks Appsテレメトリは、トレース、ログ、メトリックを収集し、OpenTelemetry (OTel) プロトコルを使用してUnity Catalogテーブルに保存します。 アプリ テレメトリを有効にすると、Databricks は、ユーザー ログインや直接 API 要求などのシステム ログと使用イベントを自動的にキャプチャします。フレームワーク用の OpenTelemetry SDK を使用してカスタム インストルメンテーションを追加することもできます。

要件

  • ワークスペースは、サポートされているリージョン内にある必要があります: ap-northeast-1ap-northeast-2ap-south-1ap-southeast-1ap-southeast-2ca-central-1eu-central-1eu-west-1eu-west-2sa-east-1us-east-1us-east-2us-west-2

  • Unity Catalogに新しいテレメトリ ターゲット テーブルを作成するには、ターゲット カタログとスキーマに対するCAN MANAGE権限と、スキーマに対するCREATE TABLE権限が必要です。

  • Unity Catalog内の既存のテレメトリ ターゲット テーブルに書き込むには、ターゲット カタログとスキーマに対するCAN MANAGE権限が必要です。または、すべての ユーザーがターゲット テーブルに対するUSE CATALOGUSE SCHEMASELECT 、およびMODIFYを持っている必要があります。

  • ターゲット テーブルは、ワークスペースと同じリージョン内の管理された Delta テーブルである必要があります。

  • Databricks 、クエリのパフォーマンスを向上させるために、テレメトリ ターゲット テーブルで予測的最適化を有効にすることをお勧めします。

アプリテレメトリを有効にする

注記

アプリ テレメトリ ベータ版より前にアプリを作成した場合は、次の構成手順に進む前に、アプリを停止して再起動する必要があります。

アプリのテレメトリをオンにするには、アプリ設定でテレメトリ テーブルのカタログとスキーマを構成します。

  1. Databricks ワークスペースでアプリの詳細ページを開きます。
  2. 概要タブで、 アプリテレメトリ 構成セクションを見つけて、 追加 をクリックします。
  3. カタログとスキーマを入力するか参照して選択します。Databricks は、選択した場所の 3 つのテーブル ( otel_metricsotel_spansotel_logs ) にテレメトリ データを書き込みます。
  4. (オプション) テーブルに<prefix>_otel_metrics<prefix>_otel_spans<prefix>_otel_logsという名前が付けられるように、テーブル プレフィックスを指定します。Databricks は既存のテーブルに追加するか、存在しない場合はテーブルを作成します。
  5. 保存 をクリックします。
  6. テレメトリが Unity Catalog に流れ始めるようにアプリを再デプロイします。

テレメトリデータを検証する

再デプロイメント後、 otel_logsテーブルにデータが自動的に入力されます。otel_spansテーブルとotel_metricsテーブルは、アプリにカスタム インストルメンテーションを追加した後にのみ入力されます。

アプリを再デプロイした後:

  1. アクティビティを生成するには、アプリの URL にアクセスしてください。

  2. 最初のデータ バッチが表示されるまで数秒お待ちください。

  3. データが流れていることを確認するには、Databricks SQL で次のクエリを実行します。

    SQL
    SELECT * FROM <catalog>.<schema>.otel_logs
    LIMIT 10;

テレメトリデータのクエリ

テレメトリ データをフィルタリングおよび相関付けるのに役立つ列には、 timeservice_nametrace_idspan_idattributesなどがあります。attributes列は、 event.nameなどのイベント固有のメタデータを含むマップです。

テレメトリ テーブルの完全なスキーマを表示するには、次のコマンドを実行します。

SQL
DESCRIBE TABLE <catalog>.<schema>.otel_logs;

次の例では、 otel_logsテーブルで過去 1 時間以内のシステムまたはカスタム OpenTelemetry ERROR ログを照会します。

SQL
SELECT time, body
FROM <catalog>.<schema>.otel_logs
WHERE service_name = '<app-name>'
AND severity_text = "ERROR"
AND time >= current_timestamp() - INTERVAL 1 HOUR
ORDER BY time DESC
LIMIT 100;

カスタムインストルメンテーションを追加する

OpenTelemetry 自動計測を追加して、カスタム トレース、メトリクス、ログを生成します。 フレームワークに応じて、 app.yamlと依存関係ファイルを更新します。

app.yamlを更新:

YAML
command: ['opentelemetry-instrument', 'streamlit', 'run', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'

requirements.txtを更新:

streamlit==1.38.0

# Auto-instrumentation
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc

# Required for Streamlit
opentelemetry-instrumentation-tornado

# Host metrics (CPU, memory)
opentelemetry-instrumentation-system-metrics

環境変数

アプリ テレメトリを有効にすると、Databricks は、OTLP コレクター エンドポイント、エクスポート プロトコル、リソース属性、およびバッチ処理のために、アプリ ランタイムの環境変数を自動的に構成します。OTel 環境変数の完全なリストについては、 「アプリ テレメトリ環境変数」を参照してください。

制限

アプリテレメトリには次の制限が適用されます。

上限

Value

レコードサイズ

レコードあたり10 MB

リクエストサイズ

リクエストごとに30 MB

ログラインサイズ

ログ行あたり1 MB

レート制限

ワークスペースごとに 1 秒あたり 100 件のエクスポート リクエスト

耐久性

単一のアベイラビリティゾーンのみ。ゾーンが利用できない場合、エクスポート パイプラインでダウンタイムが発生する可能性があります。

配達

少なくとも 1 回。サーバーからの確認応答は、レコードが Delta テーブルに永続的に書き込まれたことを意味します。

制限事項

アプリテレメトリには次の制限があります。

  • テーブル名では、ASCII 文字、数字、アンダースコアのみがサポートされます。
  • ターゲット テーブルでは、Arclight のデフォルト ストレージを使用できません。
  • ターゲット テーブルを再作成することはできません。
  • アプリ テレメトリは、ターゲット テーブルでのスキーマ進化をサポートしていません。