시스템 테이블에서의 레이크베이스 텔레메트리

Important

이 기능은 베타 버전으로 제공됩니다. 사용하려면 작업 공간 관리자가 Previews 페이지에서 시스템 테이블의 Lakebase Observability를 켜야 합니다. Azure Databricks 미리 보기 관리를 참조하세요.

Lakebase는 첨단 Postgres 신호부터 시작해 관측 가능성 텔레메트리를 스키마에 system.lakebase 캡처합니다. 포획은 자동으로 이루어집니다. 이 미리보기가 활성화되면, 프로젝트의 컴퓨트가 실행되는 동안 텔레메트리가 이 테이블에 표시됩니다. 설정할 설정도 없고, 목적지도 선택하지 않으며, 증명서를 제공할 필요도 없습니다. Insights와 Genie는 같은 테이블을 읽고, Azure Databricks 도구로 쿼리할 수 있습니다.

메모

일반 공급 전에 테이블 및 열 이름이 변경될 수 있습니다.

Requirements

  • 작업 공간에서 Lakebase Observability in System Tables 미리보기가 활성화되어 있습니다.
  • 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 카탈로그에서 권한 관리을 참조하세요.

접근은 스키마 수준에서 적용되므로, 읽 system.lakebase 을 수 있는 사용자는 계정 내 모든 프로젝트의 텔레메트리를 볼 수 있습니다.

가면 진술서 텍스트

진술 텍스트를 담는 열은 계정 관리자나 계정 수준 그룹 회원 databricks_pii_access 이 아닌 이상 반환 <REDACTED> 됩니다. 계정 관리자가 그 그룹을 만들고 관리합니다. 그룹 생성 및 관리 databricks_pii_access 및 마스크드 문장 텍스트 접근을 참조하세요.

모든 테이블에 공통된 열

아래의 모든 표에는 행의 원본을 식별하는 다음 열이 포함되어 있습니다.

Column 유형 Description
project_id STRING 행이 온 Lakebase 프로젝트입니다.
branch_id STRING 행이 온 분기입니다.
endpoint_id STRING 행이 온 컴퓨팅 엔드포인트입니다.
compute_id STRING 특정 컴퓨팅 인스턴스입니다. 컴퓨팅 크기가 0으로 조정되고 다시 시작될 때 변경됩니다.
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 pageserver로 전송된 페이지 요청 수입니다.
neon_file_cache_hits LONG pageserver 대신 로컬 파일 캐시에서 제공되는 페이지 수입니다.
neon_getpage_wait_us LONG pageerver 페이지 요청에서 대기하는 데 소요된 시간(마이크로초)입니다.
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 분기, 엔드포인트 및 타임라인에 대한 내부 네온 식별자입니다.
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 혼합 JIT가 이 쿼리에 사용된 경우 JIT(Just-In-Time) 컴파일 통계입니다.

스키마 변경

스키마 변경: 변경된 내용, 시기 및 대상 이는 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 문의 구조화된 구문 분석 표현입니다. 가면을 쓴 채. 마스크드 진술서 텍스트를 참조하세요.

메모

DDL 캡처에는 실제 간격이 있습니다. 크기 조정에서 0으로 다시 시작하는 컴퓨팅을 중심으로 변경한 내용을 놓칠 수 있습니다. 스키마 변경이 발생했음을 알고 있더라도 여기에 표시되지 않는 것이 가장 가능성이 큰 이유입니다. 제한 사항을 참조하세요.

Postgres 로그

오류 뒤에 있는 특정 오류를 포함하여 원시 Postgres 로그 메시지입니다.

postgres_logs

Column 유형 Description
sample_seq LONG 일괄 처리 내에서 이 행의 서수 위치입니다.
elevel LONG 내부 로그 수준 인코딩.
severity STRING 로그 심각도(예 ERRORLOG:
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 쓰기 전에 잘린 필드(있는 경우)를 나타냅니다.

메모

구조적 schema_name및 table_namecolumn_name 필드는 모든 오류 유형에 대해 채워지지 않습니다. 예를 들어 일반 "열이 존재하지 않음" 구문 분석 오류(SQLSTATE 42703예: 열 이름을 직접 지정하더라도 message 비워 둡니다.) 이러한 필드가 채워지는 것을 사용하지 마세요. 먼저 확인합니다 message .

컴퓨팅 메트릭

컴퓨팅 수준 리소스 사용: CPU, 메모리, 디스크 및 네트워크 I/O, 그리고 페이지 서버 앞에 있는 Lakebase의 컴퓨팅 쪽 캐시인 LFC(로컬 파일 캐시)입니다.

compute_counters

Column 유형 Description
backpressure_throttling_seconds DOUBLE 스토리지 계층이 이 간격으로 쓰기를 제한하는 데 소요된 시간입니다. 0이 아닌 값은 쓰기 볼륨이 스토리지가 흡수할 수 있는 용량을 초과했음을 의미합니다.
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 LONG/DOUBLE 이 컴퓨팅이 읽기 복제본인 경우 복제 지연입니다.
host_logical_cpus / host_memory_total_bytes DOUBLE 컴퓨팅의 프로비전된 CPU 및 메모리입니다.

데이터베이스 메트릭

데이터베이스별 작업: 행 변경, 트랜잭션, 세션 및 진공 상태. 테이블 bloat 및 자동 진공 신호가 있는 위치입니다.

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 가장 오래된 고정되지 않은 행의 트랜잭션 ID 및 multixact ID 기간입니다. 값 상승은 테이블 크기에서 bloat이 표시되기 전에 진공이 뒤처지는 초기 신호입니다.

Limitations

메모

비밀번호는 문장이 캡처 CREATE ROLE 될 때 가라앉아 캡처된 값은 로 읽힙니다 PASSWORD '***'. 편집은 문장 내 비밀번호를 감지하는 데 달려 있으며, 잘못 작성된 문장은 탐지를 피할 수 있습니다.

Azure Databricks는 Azure Databricks 신원을 토큰으로 인증하고 입력할 비밀번호를 남기지 않는 OAuth roles를 권장합니다.

다음과 같은 제한 사항이 적용됩니다.

  • 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되면 컴퓨팅 엔드포인트를 다시 시작합니다.

레거시 관측성 구성

텔레메트리가 시스템 테이블로 이동하기 전에는 텔레메트리를 자신의 Unity 카탈로그와 스키마로 캡처하고 미리 구축된 대시보드를 제공하는 관측 가능성 구성을 만들 수 있었습니다. 기존 구성은 계속 작동하며, 대시보드도 계속 이용 가능합니다. 더 이상 새로운 관측 가능성 설정을 만들 수 없고, 시스템 테이블로 캡처하면 대시보드가 생성되지 않습니다.

다음 단계