Important
この機能は ベータ版です。 これを使うには、ワークスペース管理者がPreviewsページからLakebase Observability in System Tablesを有効にする必要があります。 Manage Azure Databricks プレビューを参照してください。
Lakebaseは、高度なPostgres信号から始まって、観測性テレメトリーを system.lakebase スキーマに取り込みます。 捕獲は自動的に行われます。 そのプレビューを有効にすると、プロジェクトの計算が実行されている間、テレメトリがこれらのテーブルに表示されます。 設定を作成する必要も、目的地を選ぶ必要も、認証情報を提供する必要もありません。
InsightsとGenieは同じテーブルを読み取り、Azure Databricksのツールでクエリ可能です。
Note
テーブル名と列名は、一般提供前に変更される可能性があります。
Requirements
- ワークスペースで LakebaseのシステムテーブルでのObservability プレビューを有効にしました。
- AWSまたはAzure上のLakebaseプロジェクトです。 Postgres データベースの取得を参照してください。
キャプチャされる内容
Lakebaseは、遅いまたは故障しているデータベースを説明するために必要な信号を以下の表に記録します:
| キャプチャされる内容 | テーブル名 |
|---|---|
| アクティブなセッションと待機イベント |
system.lakebase.active_session_history、system.lakebase.wait_event_counters |
| クエリ プランとクエリごとの実行統計 |
system.lakebase.plan_history、system.lakebase.pg_stat_statements_counters |
| スキーマの変更: 変更された内容、いつ、誰が変更したか | system.lakebase.ddl_history |
| データベース統計: サイズ、読み取りと変更された行、およびセッション数 |
system.lakebase.database_counters、system.lakebase.database_gauges |
| コンピューティング リソースの使用量: CPU、メモリ、キャッシュ、接続 |
system.lakebase.compute_counters、system.lakebase.compute_gauges |
| 未加工の Postgres ログ メッセージ (エラーの背後にあるエラーを含む) | system.lakebase.postgres_logs |
記録は7日間保存されます。 このページの残りの部分は、各表のすべての列を記録しています。 これらのテーブルが他のシステムテーブルの中でどこに位置するかについては、 Lakebaseシステムテーブルリファレンスを参照してください。
Access
system.lakebaseテーブルはUnityカタログによって管理されています。 アカウント管理者とメタストア管理者の両方のユーザーはテレメトリを読み取り、アクセスを管理できます。 「Unity Catalog の特権の管理」を参照してください。
アクセスはスキーマレベルで適用されるため、読書 system.lakebase テレメトリがアカウント内のすべてのプロジェクトのテレメトリーを閲覧できるユーザーです。
マスクされた声明文
ステートメントのテキストを保持する列は、アカウント管理者やdatabricks_pii_accessアカウントレベルグループのメンバーでない限り、<REDACTED>返されます。 アカウント管理者がそのグループを作成し管理します。
databricks_pii_accessグループの作成と管理およびマスクされたステートメントテキストへのアクセスをご覧ください。
すべてのテーブルに共通の列
次の各表には、行の由来を識別する次の列が含まれています。
| Column | タイプ | Description |
|---|---|---|
project_id |
STRING | 行の元の Lakebase プロジェクト。 |
branch_id |
STRING | 行の元の分岐。 |
endpoint_id |
STRING | 行の元のコンピューティング エンドポイント。 |
compute_id |
STRING | 特定のコンピューティング インスタンス。 これは、コンピューティングがゼロにスケーリングされて再開されると変わります。 |
ts |
TIMESTAMP | 行が記録されたとき。 |
compute_mode |
STRING | 読み取り/書き込みまたは読み取り専用など、当時のコンピューティング のモード。 |
_countersで終わる名前を持つテーブルには、行の値が累積された間隔の開始位置を示すprevious_ts列も含まれます。 これらは、ポイントインタイム読み取り値ではなく、その間隔の累積値です。
_gaugesで終わるテーブルは、代わりにポイントインタイム読み取り値であり、previous_tsはありません。
次の表に、これらの一般的な列以外の列のみを示します。
セッション アクティビティ
アクティブなすべてのバックエンドのスナップショット。継続的にサンプリングされます。 これは、AWS Performance Insights または Oracle のアクティブ セッション履歴 (ASH) と同じパターンです。セッションが待機を含めて何かを行っている場合は、ここに表示されます。
active_session_history
| Column | タイプ | Description |
|---|---|---|
sample_seq |
LONG | バッチ内でのこのサンプルの序数位置。 |
pid |
LONG | バックエンドのプロセス ID。 |
datid |
LONG | データベースのオブジェクト ID。 |
userid |
LONG | 接続ロールのオブジェクト ID。 |
queryid |
LONG | 実行されているクエリを識別します。
queryid内のpg_stat_statements_countersと一致します。 |
wait_event_info |
LONG | 待機イベントの内部エンコード。 |
wait_event_type |
STRING | 待機イベントのカテゴリ ( Timeout や Lockなど)。 |
wait_event |
STRING | 特定の待機イベント (たとえば、 PgSleep)。 |
backend_state |
LONG | バックエンドの状態 (アクティブやアイドルなど)。 |
backend_type |
LONG | バックエンド プロセスの種類。 |
xact_age_ms |
LONG | 現在のトランザクションが開かれている期間。 |
query_age_ms |
LONG | 現在のクエリの実行時間。 |
blocking_pid |
LONG | これをブロックしているセッションの PID (存在する場合)。 |
leader_pid |
LONG | このバックエンドが並列ワーカーの場合は、並列クエリ リーダーの PID。 |
flags |
LONG | 内部状態フラグ。 |
plan_fingerprint |
LONG |
plan_historyの特定のプラン図形へのリンク。 |
appname_hash |
LONG | 接続しているアプリケーションの名前のハッシュ。 |
待機イベント
集計された待機イベントの数と時間。 active_session_historyのサンプルごとのビューを補完します。
wait_event_counters
| Column | タイプ | Description |
|---|---|---|
wait_event_id |
LONG | 待機イベントの内部エンコード。 |
wait_class_name |
STRING | 待機イベントのカテゴリ。 |
wait_event_name |
STRING | 特定の待機イベント。 |
wait_event_count |
LONG | この待機イベントが間隔内で発生した回数。 |
wait_event_time |
DOUBLE | 間隔中にこの待機イベントに費やされた合計時間。 |
クエリ プラン
完全なプランと Neon 固有のストレージ統計を含む、クエリ プランの実行ごとのレコード。これは最も詳細なテーブルであり、通常はクエリの調査が遅くなります。
plan_history
| Column | タイプ | Description |
|---|---|---|
row_position |
LONG | バッチ内でのこの行の序数位置。 |
analyze_enabled |
BOOLEAN | 見積もりだけでなく、プランに実際の実行統計 (EXPLAIN ANALYZE) が含まれているかどうか。 |
buffers_enabled |
BOOLEAN | プランにバッファー使用量の統計情報が含まれているかどうか。 |
query_hash |
STRING | クエリ テキストを識別するハッシュ。 |
queryid |
LONG | クエリを識別します。
queryidとpg_stat_statements_countersのactive_session_historyと一致します。 |
duration_ms |
DOUBLE | クエリの実行にかかった時間。 |
total_cost |
DOUBLE | クエリのプランナーの推定コスト。 |
plan_rows |
LONG | プランナーの推定行数。 |
actual_rows |
LONG | 返された実際の行数。 |
plan_fingerprint |
LONG | この特定のプラン図形を識別します。
plan_fingerprint内のactive_session_historyと一致します。 |
lock_wait_time_ms |
DOUBLE | ロックの待機に費やされた時間。 |
planning_time_ms |
DOUBLE | 実行とは別に、クエリの計画に費やされた時間。 |
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written |
LONG | この実行の共有バッファー キャッシュ アクティビティ。 |
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written |
LONG | 一時テーブルのローカル バッファー アクティビティ。 |
temp_blks_read / temp_blks_written |
LONG | 大規模な並べ替えやハッシュなどの一時ファイル アクティビティ。 |
neon_getpage_count |
LONG | ページ サーバーに送信されたページ要求の数。 |
neon_file_cache_hits |
LONG | ページ サーバーの代わりにローカル ファイル キャッシュから提供されるページの数。 |
neon_getpage_wait_us |
LONG | ページ サーバー ページ要求の待機に費やされた時間 (マイクロ秒単位)。 |
backend_pid |
LONG | このクエリを実行したバックエンド プロセス ID。 |
lock_wait_count |
LONG | この実行がロックで待機した回数。 |
userid / dbid |
LONG | 接続ロールとデータベースのオブジェクト ID。 |
query_text |
STRING | クエリ テキスト。 仮面をかぶって。 マスク ド声明の本文を参照してください。 |
plan_json |
STRING | 完全なクエリ プラン (JSON)。 仮面をかぶって。 マスク ド声明の本文を参照してください。 |
usename / datname |
STRING | 接続ロールとデータベースの名前。 |
application_name / client_addr |
STRING | 接続しているアプリケーションの名前とクライアント アドレス。 |
wait_events |
STRING | この実行中に観察された待機イベント。 |
parameters |
STRING | クエリで使用されるバインド パラメーター (存在する場合)。 仮面をかぶって。 マスク ド声明の本文を参照してください。 |
blocking_pids |
STRING | この実行をブロックしたセッションの PID (存在する場合)。 |
neon_branch_id / neon_endpoint_id / neon_timeline_id |
STRING | ブランチ、エンドポイント、タイムラインの内部 Neon 識別子。 |
cpu_user_time_ms / cpu_sys_time_ms |
DOUBLE | この実行によって消費される CPU 時間。ユーザー時間とシステム時間に分割されます。 |
voluntary_csw / involuntary_csw |
LONG | この実行中にコンテキストが切り替わります。 |
trace_id / span_id / trace_flags / service_name |
弦 / 弦 / 長い / 弦 | クエリがトレースされた要求の一部であった場合は、OpenTelemetry スタイルのトレース識別子。 |
timeline_id |
LONG | 内部タイムライン識別子。 |
truncated |
BOOLEAN | この行のデータ (大きなプランなど) が書き込まれる前に切り捨てられたかどうか。 |
クエリ統計情報
標準の pg_stat_statements 拡張機能から取得されたクエリごとの集計統計。
pg_stat_statements_counters
| Column | タイプ | Description |
|---|---|---|
userid / dbid |
LONG | 接続ロールとデータベースのオブジェクト ID。 |
queryid |
LONG | クエリを識別します。
queryidとplan_historyのactive_session_historyと一致します。 |
toplevel |
BOOLEAN | PL/pgSQL 関数またはプロシージャ内に入れ子になった行ではなく、この行が最上位レベルのステートメント用かどうか。 PL/pgSQL の制限事項を参照してください。 |
query |
STRING | クエリ テキスト。 仮面をかぶって。 マスク ド声明の本文を参照してください。 |
calls |
LONG | このクエリが間隔内で実行された回数。 |
plans |
LONG | このクエリが間隔内で計画された回数。 |
rows |
LONG | 返された行または影響を受ける行の合計数。 |
total_exec_time / total_plan_time |
DOUBLE | 間隔でこのクエリの実行と計画に費やされた合計時間。 |
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written |
LONG | 共有バッファー キャッシュ アクティビティ。 |
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written |
LONG | 一時テーブルのローカル バッファー アクティビティ。 |
temp_blks_read / temp_blks_written |
LONG | 一時ファイル アクティビティ。 |
wal_bytes / wal_fpi / wal_records |
LONG | このクエリによって生成された先書きログ ボリューム。 |
jit_emission_count / jit_emission_time / jit_functions / jit_generation_time / jit_inlining_count / jit_inlining_time / jit_optimization_count / jit_optimization_time |
Mixed | JIT (Just-In-Time) コンパイル統計 (このクエリに JIT が使用された場合)。 |
スキーマの変更
スキーマの変更: 変更された内容、いつ、だれが変更したか。 これは、Genie が読み取り、デプロイまたは手動編集のどちらからでも、スキーマの変更にインシデントをトレースするために読み取ります。
ddl_history
| Column | タイプ | Description |
|---|---|---|
row_position |
LONG | バッチ内でのこの行の序数位置。 |
command_tag |
STRING | DDL コマンドの種類 ( ALTER TABLEなど)。 |
object_type / object_name |
STRING | 変更されたオブジェクトの種類と名前。 |
schema_name |
STRING | オブジェクトが属する Postgres スキーマ。 |
query_text |
STRING | 完全な DDL ステートメント。 仮面をかぶって。 マスク ド声明の本文を参照してください。 |
duration_ms |
DOUBLE | DDL ステートメントの実行にかかった時間。 |
userid / usename |
LONG/STRING | 接続ロールのオブジェクト ID と名前。 |
application_name |
STRING | 接続しているアプリケーションの名前。 |
backend_pid |
LONG | ステートメントを実行したバックエンド プロセス ID。 |
dbid |
LONG | データベースのオブジェクト ID。 |
search_path |
STRING | その時点でのセッションの検索パス。 |
ddl_json |
STRING | DDL ステートメントの構造化された解析された表現。 仮面をかぶって。 マスク ド声明の本文を参照してください。 |
Note
DDL キャプチャには実際のギャップがあります。スケールからゼロへのコンピューティング再開の前後で行われた変更を見逃す可能性があります。 スキーマの変更が発生したことがわかっているにもかかわらず、ここに表示されない場合は、それが最も可能性の高い理由です。 制限事項を参照してください。
Postgres ログ
未加工の Postgres ログ メッセージ (エラーの背後にある特定のエラーを含む)。
postgres_logs
| Column | タイプ | Description |
|---|---|---|
sample_seq |
LONG | バッチ内でのこの行の序数位置。 |
elevel |
LONG | 内部ログ レベルのエンコード。 |
severity |
STRING | ログの重大度 ( ERROR や LOGなど)。 |
sqlstate |
STRING | Postgres SQLSTATE エラー コード 。たとえば、未定義の列の 42703 。 |
backend_pid / leader_backend_pid |
LONG | バックエンド プロセス ID と、その並列クエリ リーダーの PID (該当する場合)。 |
userid / usename |
LONG/STRING | 接続ロールのオブジェクト ID と名前。 |
datid / datname |
LONG/STRING | データベースのオブジェクト ID と名前。 |
application_name / client_addr |
STRING | 接続しているアプリケーションの名前とクライアント アドレス。 |
schema_name / table_name / column_name / constraint_name / datatype_name |
STRING | Postgres にエラーがある場合に、エラーによって参照されるスキーマ、テーブル、列、制約、またはデータ型。 |
funcname |
STRING | エラーが発生した関数 (該当する場合)。 |
filename / lineno |
弦 / ロング | エラーの発生元の Postgres ソース ファイルと行。 |
message |
STRING | ログ メッセージ テキスト。 |
detail / hint / context |
STRING | Postgres にエラーがある場合の追加の詳細、推奨される修正プログラム、およびエラーのコンテキスト。 |
internalquery |
STRING | エラーに関連する内部で生成されたクエリ (該当する場合)。 |
statement |
STRING | このログ エントリをトリガーしたステートメント。 仮面をかぶって。 マスク ド声明の本文を参照してください。 |
truncated_mask |
LONG | 書き込まれる前に切り捨てられたフィールド (ある場合) を示します。 |
Note
構造化 schema_name、 table_name、および column_name フィールドは、エラーの種類ごとに設定されるわけではありません。 たとえば、プレーンな "列が存在しません" 解析エラー (SQLSTATE 42703) は、列に直接名前を付 message 場合でも空のままにします。 これらのフィールドが設定されることに依存しないでください。 最初 message 確認します。
コンピューティング メトリック
コンピューティング レベルのリソース使用量: CPU、メモリ、ディスク、ネットワーク I/O、ローカル ファイル キャッシュ (LFC)、ページ サーバーの前にある Lakebase のコンピューティング側キャッシュ。
compute_counters
| Column | タイプ | Description |
|---|---|---|
backpressure_throttling_seconds |
DOUBLE | ストレージ レイヤーがこの間隔で書き込みの調整に費やされた時間。 ゼロ以外の値は、書き込みボリュームがストレージが吸収できる量を超えたことを意味します。 |
host_busiest_cpu_seconds / host_cpu_seconds |
DOUBLE | 最も負荷の高いコアと合計で CPU 時間が消費されました。 |
host_disk_read_bytes / host_disk_written_bytes |
DOUBLE | ディスク I/O ボリューム。 |
host_network_receive_bytes / host_network_transmit_bytes |
DOUBLE | ネットワーク I/O ボリューム。 |
lfc_evictions / lfc_hits / lfc_misses / lfc_writes |
LONG | この間隔のローカル ファイル キャッシュ アクティビティ。 |
replica_lfc_redo_evictions |
LONG | このコンピューティングが読み取りレプリカの場合、レプリカ再実行によって発生するローカル ファイル キャッシュの削除。 |
compute_gauges
| Column | タイプ | Description |
|---|---|---|
current_lsn |
LONG | 現在の先行書き込みログ位置。 |
replica_wal_replay_lsn / replica_wal_receive_lsn |
LONG | WAL 再生と受信位置 (このコンピューティングが読み取りレプリカの場合)。 |
max_connections |
LONG | 構成された接続制限。 |
lfc_working_set_size_5m / lfc_working_set_size_15m / lfc_working_set_size_60m |
LONG | 過去 5 分、15 分、60 分間のワーキング セットの推定サイズ。 |
lfc_size_limit / lfc_allocated / lfc_used |
LONG | ローカル ファイル キャッシュの容量と現在の使用状況。 |
total_size_limit / total_size |
LONG | 全体的なストレージ容量と現在の使用状況。 |
replication_lag_bytes / replication_lag_time_ms |
ロング / ダブル | レプリケーションのラグ (このコンピューティングが読み取りレプリカの場合)。 |
host_logical_cpus / host_memory_total_bytes |
DOUBLE | コンピューティングのプロビジョニングされた CPU とメモリ。 |
データベース メトリック
データベースごとのアクティビティ: 行の変更、トランザクション、セッション、バキュームの正常性。 これは、テーブルの肥大化と自動バキューム信号が生きている場所です。
database_counters
| Column | タイプ | Description |
|---|---|---|
datid / datname |
LONG/STRING | データベースのオブジェクト ID と名前。 |
active_time_ms / idle_in_transaction_time_ms / session_time_ms |
DOUBLE | アクティブで、開いているトランザクションでアイドル状態になり、全体的に接続された時間。 |
deadlocks |
LONG | 検出されたデッドロックの数。 |
rows_deleted / rows_fetched / rows_inserted / rows_returned / rows_updated |
LONG | 間隔の行レベルのアクティビティ。 |
sessions_abandoned / sessions_established / sessions_fatal / sessions_killed |
LONG | セッション のライフサイクル数。 |
shared_blks_hit / shared_blks_read |
LONG | 共有バッファー キャッシュ アクティビティ。 |
xact_commit / xact_rollback |
LONG | コミットされたトランザクションとロールバックされたトランザクション。 |
database_gauges
| Column | タイプ | Description |
|---|---|---|
datid / datname |
LONG/STRING | データベースのオブジェクト ID と名前。 |
numbackends |
LONG | このデータベースへの現在の接続数。 |
size |
LONG | データベースのディスク上のサイズ。 |
oldest_frozen_xid_age / oldest_mxid_age |
LONG | 最も古い非frozen 行のトランザクション ID とマルチアクト ID の有効期間。 立ち上がり値は、テーブルサイズで肥大化が見える前に、真空が遅れる最も早い信号です。 |
制限事項
Note
パスワードは文がキャプチャされる際に黒塗りされ、キャプチャされた CREATE ROLE は PASSWORD '***'を読み上げます。 編集は文の中のパスワードの検出に依存しており、誤った文は検出を逃れることができます。
Azure Databricksは、Azure DatabricksのIDをトークンで認証し、入力するパスワードを残さないOAuthロールを推奨しています。
次の制限事項が適用されます。
COPY操作はクエリプラン履歴には記録されません。PL/pgSQL 関数またはプロシージャ内で実行されたクエリは、最上位レベルのステートメントとしても実行されない限り、クエリ レベルのテレメトリにはキャプチャされません。 Postgres 独自のステートメント追跡では、既定では最上位レベルのステートメントのみがカウントされます。
ブランチやエンドポイントは、テレメトリやインサイトで内部ID(例:
br-odd-mud-y2icrn1h)で表示され、「production」のような表示名で現れません。インサイトやテーブルの行がどのブランチやエンドポイントを指しているか確認する必要がある場合は、Lakebase UIでIDを照合してください。テレメトリ キャプチャを有効にする GUC は、既存のコンピューティングに自動的に伝達されない場合があります。 プレビューを有効にした後にテレメトリが表示されない場合は、プロジェクトに接続して以下を確認してください:
SHOW neon_monitor.log_capture_enabled; SHOW databricks.o11y_exporter_enabled;両方とも
onを返す必要があります。 いずれかのoffが返された場合は、コンピューティング エンドポイントを再起動します。
レガシーの観測可能性構成
テレメトリーがシステムテーブルに移行する前は、観測可能性設定を作成し、テレメトリをカタログやスキーマに記録し、あらかじめ作成されたダッシュボードを提供することができました。 既存の構成は引き続き動作し、ダッシュボードも引き続き利用可能です。 新しい観測可能性設定はもう作成できず、システムテーブルへのキャプチャはダッシュボードを作成しません。
次のステップ
- Insightsの問題を検出:このテレメトリーをスケジュールでレビューするエージェントです。
- Genieの問題を調査・修正しましょう:このテレメトリーについてご自身の言葉で質問してください。
- Lakebaseシステムテーブル参照:これらのテーブルが他のシステムテーブルの中に位置する場所。