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

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;

以下の例は、過去1時間のエラーレベルのログをクエリするもので、アプリの問題をデバッグする際に役立ちます。

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;

クエリシステムイベント

Databricksは、ユーザーログインや直接APIリクエストなどの使用イベントといったシステムイベントをotel_logsテーブルに自動的に記録します。event.name属性でフィルタリングして、これらのイベントをクエリします。

次の例は、アプリケーションの最新の使用状況イベントを100件取得します。

SQL
SELECT time, attributes
FROM <catalog>.<schema>.otel_logs
WHERE service_name = '<app-name>'
AND attributes:["event.name"]::string = 'app.auth'
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 環境変数の完全なリストについては、 「アプリ テレメトリ環境変数」を参照してください。

制限事項

アプリのテレメトリは、Zerobus Ingestコネクタを使用してデータをUnity Catalogテーブルに書き込みます。 Zerobus Ingestコネクタのすべての制限事項は、レコードサイズ、スループット、配信保証、ターゲットテーブル要件などの制限を含め、アプリのテレメトリにも適用されます。

Zerobusの制限に加えて、アプリのテレメトリ機能では、ログ行あたりの最大サイズが1MBに制限されます。