Telemetria bazy jeziora w tabelach systemowych

Ważna

Ta funkcja jest dostępna w wersji beta. Aby z niego korzystać, administrator przestrzeni roboczej musi włączyć Lakebase Observability w tabelach systemowych na stronie Zapowiedzi . Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks.

Lakebase rejestruje swoją telemetrię obserwowalności do schematu system.lakebase , zaczynając od zaawansowanych sygnałów Postgres. Schwytanie jest automatyczne. Po włączeniu tego podglądu telemetria trafia do tych tabel, podczas gdy obliczenia projektu są uruchamiane. Nie ma konfiguracji do tworzenia, wyboru celu ani danych do podawania. Insights i Genie odczytują te same tabele i możesz je zapytać dowolnym narzędziem Azure Databricks.

Note

Nazwy tabel i kolumn mogą ulec zmianie przed ogólną dostępnością.

Requirements

  • Podgląd Lakebase Observability w tabelach systemowych włączony jest dla twojej przestrzeni roboczej.
  • Projekt Lakebase na AWS lub Azure. Zobacz Pobieranie bazy danych Postgres.

Co jest przechwytywane

Lakebase rejestruje sygnały potrzebne do wyjaśnienia wolnej lub nieudolnej bazy danych, w następujących tabelach:

Co jest przechwytywane Nazwa tabeli
Aktywne sesje i zdarzenia oczekiwania system.lakebase.active_session_history, system.lakebase.wait_event_counters
Plany zapytań i statystyki wykonywania poszczególnych zapytań system.lakebase.plan_history, system.lakebase.pg_stat_statements_counters
Zmiany schematu: co się zmieniło, kiedy i przez kogo system.lakebase.ddl_history
Statystyki bazy danych: rozmiar, odczyt i modyfikacja wierszy oraz liczby sesji system.lakebase.database_counters, system.lakebase.database_gauges
Użycie zasobów obliczeniowych: procesor CPU, pamięć, pamięć podręczna, połączenia system.lakebase.compute_counters, system.lakebase.compute_gauges
Surowe komunikaty dziennika Postgresa, w tym błąd będący przyczyną niepowodzenia system.lakebase.postgres_logs

Dokumenty są przechowywane przez 7 dni. Reszta tej strony dokumentuje każdą kolumnę w każdej tabeli. Aby zobaczyć, gdzie te tabele znajdują się na tle innych tabel systemowych, zobacz odniesienie do tabeli systemowej Lakebase.

Access

Tabele system.lakebase są zarządzane przez Unity Catalog. Użytkownicy pełniący funkcje zarówno administratora konta, jak i administratora metastore mogą odczytywać telemetrię i zarządzać do niej dostępem. Zobacz Zarządzanie uprawnieniami w Unity Catalog.

Access dotyczy poziomu schematu, więc użytkownik, który potrafi czytać system.lakebase , widzi telemetrię dla każdego projektu na koncie.

Tekst zamaskowanego oświadczenia

Kolumny zawierające tekst wyciągu zwracają <REDACTED> , chyba że jesteś administratorem konta lub członkiem databricks_pii_access grupy na poziomie konta. Administrator konta tworzy i zarządza tą grupą. Zobacz Utwórz i zarządzaj grupą databricks_pii_access oraz Udostępnij tekst zamaskowanego wypowiedzenia.

Kolumny wspólne dla każdej tabeli

Każda poniższa tabela zawiera te kolumny, które identyfikują, skąd pochodzi wiersz:

Column Typ Description
project_id STRING Projekt Lakebase pochodzi z wiersza.
branch_id STRING Gałąź, z których pochodzi wiersz.
endpoint_id STRING Punkt końcowy obliczeniowy, z których pochodzi wiersz.
compute_id STRING Określone wystąpienie obliczeniowe. Zmienia się to, gdy obliczenia są skalowane do zera i wznawiane.
ts TIMESTAMP Kiedy wiersz został zarejestrowany.
compute_mode STRING Tryb obliczeń w tym czasie, na przykład odczyt-zapis lub tylko do odczytu.

Tabele z nazwami kończącymi _counters się również kolumną previous_ts , oznaczając początek interwału wartości wiersza skumulowane. Są to wartości skumulowane dla tego interwału, a nie odczyty do punktu w czasie. Tabele kończące się w tabeli _gauges to zamiast tego odczyty do punktu w czasie i nie previous_tsmają wartości .

W poniższych tabelach wymieniono tylko kolumny wykraczające poza te typowe.

Działanie sesji

Migawka każdego aktywnego zaplecza, próbkowana w sposób ciągły. Jest to ten sam wzorzec co usługa AWS Performance Insights lub Aktywna historia sesji (ASH) firmy Oracle: jeśli sesja wykonuje cokolwiek, w tym oczekiwanie, zostanie wyświetlona tutaj.

active_session_history

Column Typ Description
sample_seq LONG Położenie porządkowe tej próbki w jej partii.
pid LONG Identyfikator procesu zaplecza.
datid LONG Identyfikator obiektu bazy danych.
userid LONG Identyfikator obiektu roli łączenia.
queryid LONG Identyfikuje uruchamiane zapytanie. Dopasowywuje queryid wartość w elem.pg_stat_statements_counters
wait_event_info LONG Wewnętrzne kodowanie zdarzenia oczekiwania.
wait_event_type STRING Kategoria zdarzenia oczekiwania, na przykład Timeout lub Lock.
wait_event STRING Konkretne zdarzenie oczekiwania, na przykład PgSleep.
backend_state LONG Stan zaplecza, na przykład aktywny lub bezczynny.
backend_type LONG Typ procesu zaplecza.
xact_age_ms LONG Jak długo bieżąca transakcja została otwarta.
query_age_ms LONG Jak długo uruchomiono bieżące zapytanie.
blocking_pid LONG Identyfikator PID sesji blokującej ten, jeśli istnieje.
leader_pid LONG Identyfikator PID równoległego lidera zapytania, jeśli to zaplecze jest procesem roboczym równoległym.
flags LONG Wewnętrzne flagi stanu.
plan_fingerprint LONG Linki do określonego kształtu planu w programie plan_history.
appname_hash LONG Skrót nazwy aplikacji łączącej.

Oczekiwanie zdarzeń

Zagregowane liczniki zdarzeń oczekiwania i czas, uzupełniając widok na próbkę w pliku active_session_history.

wait_event_counters

Column Typ Description
wait_event_id LONG Wewnętrzne kodowanie zdarzenia oczekiwania.
wait_class_name STRING Kategoria zdarzenia oczekiwania.
wait_event_name STRING Określone zdarzenie oczekiwania.
wait_event_count LONG Ile razy to zdarzenie oczekiwania wystąpiło w interwale.
wait_event_time Podwójny Łączny czas spędzony w tym zdarzeniu oczekiwania w interwale.

Plany zapytań

Rekord na wykonanie planów zapytań, w tym pełny plan i statystyki magazynu specyficzne dla neonów. Jest to najbardziej szczegółowa tabela, w której kończy się badanie wolnych zapytań.

plan_history

Column Typ Description
row_position LONG Położenie porządkowe tego wiersza w jego partii.
analyze_enabled BOOLEAN Czy plan zawiera rzeczywiste statystyki wykonania (EXPLAIN ANALYZE), a nie tylko oszacowania.
buffers_enabled BOOLEAN Czy plan zawiera statystyki użycia buforu.
query_hash STRING Skrót identyfikujący tekst zapytania.
queryid LONG Identyfikuje zapytanie. Dopasuj do queryid i pg_stat_statements_countersactive_session_history.
duration_ms Podwójny Jak długo trwało uruchamianie zapytania.
total_cost Podwójny Szacowany koszt planisty dla zapytania.
plan_rows LONG Szacowana liczba wierszy planisty.
actual_rows LONG Zwrócona rzeczywista liczba wierszy.
plan_fingerprint LONG Identyfikuje ten konkretny kształt planu. Dopasowywuje plan_fingerprint wartość w elem.active_session_history
lock_wait_time_ms Podwójny Czas spędzony na czekaniu na blokady.
planning_time_ms Podwójny Czas spędzony na planowaniu zapytania, niezależnie od wykonania.
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written LONG Działanie pamięci podręcznej buforu współużytkowanego dla tego wykonania.
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written LONG Działanie buforu lokalnego dla tabel tymczasowych.
temp_blks_read / temp_blks_written LONG Tymczasowe działanie pliku, na przykład z dużego sortowania lub skrótu.
neon_getpage_count LONG Liczba żądań strony wysyłanych do serwera stronicowania.
neon_file_cache_hits LONG Liczba stron obsługiwanych z lokalnej pamięci podręcznej plików zamiast stronicowania.
neon_getpage_wait_us LONG Czas spędzony na oczekiwaniu na żądania strony pageserver w mikrosekundach.
backend_pid LONG Identyfikator procesu zaplecza, który uruchomił to zapytanie.
lock_wait_count LONG Ile razy to wykonanie czekało na blokadę.
userid / dbid LONG Identyfikatory obiektów roli łączenia i bazy danych.
query_text STRING Tekst zapytania. Zamaskowany. Zobacz tekst oświadczenia w maskach.
plan_json STRING Pełny plan zapytania w formacie JSON. Zamaskowany. Zobacz tekst oświadczenia w maskach.
usename / datname STRING Nazwy roli łączącej i bazy danych.
application_name / client_addr STRING Nazwa i adres klienta aplikacji łączącej.
wait_events STRING Zdarzenia oczekiwania obserwowane podczas wykonywania.
parameters STRING Powiązywanie parametrów używanych w zapytaniu, jeśli istnieje. Zamaskowany. Zobacz tekst oświadczenia w maskach.
blocking_pids STRING Identyfikatory PID sesji, które zablokowały to wykonanie, jeśli istnieje.
neon_branch_id / neon_endpoint_id / neon_timeline_id STRING Wewnętrzne identyfikatory neonów dla gałęzi, punktu końcowego i osi czasu.
cpu_user_time_ms / cpu_sys_time_ms Podwójny Czas procesora CPU zużywany przez to wykonanie z podziałem na czas użytkownika i system.
voluntary_csw / involuntary_csw LONG Przełączniki kontekstowe podczas wykonywania.
trace_id / span_id / trace_flags / service_name CIĄG/ CIĄG / DŁUGI / CIĄG Identyfikatory śledzenia typu OpenTelemetry, jeśli zapytanie było częścią żądania śledzenia.
timeline_id LONG Wewnętrzny identyfikator osi czasu.
truncated BOOLEAN Czy dane tego wiersza (na przykład duży plan) zostały obcięte przed zapisaniem.

Statystyki zapytań

Zagregowane statystyki poszczególnych zapytań pochodzące z rozszerzenia standardowego pg_stat_statements .

pg_stat_statements_counters

Column Typ Description
userid / dbid LONG Identyfikatory obiektów roli łączenia i bazy danych.
queryid LONG Identyfikuje zapytanie. Dopasuj do queryid i plan_historyactive_session_history.
toplevel BOOLEAN Czy ten wiersz jest przeznaczony dla instrukcji najwyższego poziomu, w przeciwieństwie do jednego zagnieżdżonego wewnątrz funkcji PL/pgSQL lub procedury. Zobacz ograniczenie PL/pgSQL.
query STRING Tekst zapytania. Zamaskowany. Zobacz tekst oświadczenia w maskach.
calls LONG Liczba wykonań tego zapytania w interwale.
plans LONG Ile razy to zapytanie było planowane w interwale.
rows LONG Łączna liczba zwróconych lub zmodyfikowanych wierszy.
total_exec_time / total_plan_time Podwójny Łączny czas spędzony na wykonywaniu i planowaniu tego zapytania w interwale.
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written LONG Działanie pamięci podręcznej buforu współużytkowanego.
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written LONG Działanie buforu lokalnego dla tabel tymczasowych.
temp_blks_read / temp_blks_written LONG Tymczasowe działanie pliku.
wal_bytes / wal_fpi / wal_records LONG Wolumin dziennika z wyprzedzeniem generowany przez to zapytanie.
jit_emission_count / jit_emission_time / jit_functions / jit_generation_time / jit_inlining_count / jit_inlining_time / jit_optimization_count / jit_optimization_time Mixed Statystyki kompilacji JIT (just in time), jeśli dla tego zapytania użyto trybu JIT.

Zmiany schematu

Zmiany schematu: co się zmieniło, kiedy i przez kogo. To właśnie usługa Genie odczytuje, aby prześledzić zdarzenie z powrotem do zmiany schematu, niezależnie od wdrożenia lub ręcznej edycji.

ddl_history

Column Typ Description
row_position LONG Położenie porządkowe tego wiersza w jego partii.
command_tag STRING Typ polecenia DDL, na przykład ALTER TABLE.
object_type / object_name STRING Rodzaj i nazwa obiektu, który uległ zmianie.
schema_name STRING Schemat Bazy danych Postgres, do którego należy obiekt.
query_text STRING Pełna instrukcja DDL. Zamaskowany. Zobacz tekst oświadczenia w maskach.
duration_ms Podwójny Jak długo trwało uruchamianie instrukcji DDL.
userid / usename DŁUGI/CIĄG Identyfikator obiektu i nazwa roli łączenia.
application_name STRING Nazwa aplikacji łączącej.
backend_pid LONG Identyfikator procesu zaplecza, który uruchomił instrukcję .
dbid LONG Identyfikator obiektu bazy danych.
search_path STRING Ścieżka wyszukiwania sesji w tym czasie.
ddl_json STRING Ustrukturyzowana, przeanalizowana reprezentacja instrukcji DDL. Zamaskowany. Zobacz tekst oświadczenia w maskach.

Note

Przechwytywanie DDL ma rzeczywistą lukę: może zostać pominięta zmiana wprowadzona bezpośrednio wokół wznawiania obliczeń ze skali do zera. Jeśli w tym miejscu nie pojawi się zmiana schematu, mimo że wiadomo, że tak się stało, jest to najbardziej prawdopodobny powód. Zobacz Ograniczenia.

Dzienniki bazy danych Postgres

Nieprzetworzone komunikaty dziennika Postgres, w tym określony błąd związany z awarią.

postgres_logs

Column Typ Description
sample_seq LONG Położenie porządkowe tego wiersza w jego partii.
elevel LONG Wewnętrzne kodowanie na poziomie dziennika.
severity STRING Ważność dziennika, na przykład ERROR lub LOG.
sqlstate STRING Kod błędu Postgres SQLSTATE, na przykład 42703 dla niezdefiniowanej kolumny.
backend_pid / leader_backend_pid LONG Identyfikator procesu zaplecza i identyfikator PID lidera zapytania równoległego, jeśli ma to zastosowanie.
userid / usename DŁUGI/CIĄG Identyfikator obiektu i nazwa roli łączenia.
datid / datname DŁUGI/CIĄG Identyfikator obiektu i nazwa bazy danych.
application_name / client_addr STRING Nazwa i adres klienta aplikacji łączącej.
schema_name / table_name / column_name / constraint_name / datatype_name STRING Schemat, tabela, kolumna, ograniczenie lub typ danych, do którego odwołuje się błąd, gdy element Postgres ma jeden.
funcname STRING Funkcja, w przypadku gdy ma to zastosowanie, wystąpił błąd.
filename / lineno CIĄG/DŁUGI Plik źródłowy postgres i wiersz błędu pochodzi.
message STRING Tekst komunikatu dziennika.
detail / hint / context STRING Dodatkowe szczegóły, sugerowana poprawka i kontekst błędu, gdy usługa Postgres je zawiera.
internalquery STRING Zapytanie wygenerowane wewnętrznie związane z błędem, jeśli ma to zastosowanie.
statement STRING Instrukcja, która wyzwoliła ten wpis dziennika. Zamaskowany. Zobacz tekst oświadczenia w maskach.
truncated_mask LONG Wskazuje, które pola, jeśli istnieją, zostały obcięte przed zapisaniem.

Note

Pola ustrukturyzowane schema_name, table_namei column_name nie są wypełniane dla każdego typu błędu. Zwykły błąd analizy "kolumna nie istnieje" (SQLSTATE 42703), na przykład pozostawia je puste, mimo że message bezpośrednio nadaj kolumnie nazwy. Nie należy polegać na wypełnianiu tych pól. Najpierw sprawdź message .

Metryki obliczeniowe

Użycie zasobów na poziomie obliczeniowym: procesor CPU, pamięć, dysk i operacje we/wy sieci oraz lokalna pamięć podręczna plików (LFC), pamięć obliczeniowa usługi Lakebase przed serwerem stronicowania.

compute_counters

Column Typ Description
backpressure_throttling_seconds Podwójny Czas, w jaki warstwa magazynu spędziła na ograniczaniu liczby operacji zapisu w tym interwale. Wartość niezerowa oznacza, że wolumin zapisu przekroczył ilość miejsca do wchłonięcia.
host_busiest_cpu_seconds / host_cpu_seconds Podwójny Wykorzystany czas procesora CPU dla najbardziej ruchliwego rdzenia i łącznie.
host_disk_read_bytes / host_disk_written_bytes Podwójny Wolumin we/wy dysku.
host_network_receive_bytes / host_network_transmit_bytes Podwójny Wolumin we/wy sieci.
lfc_evictions / lfc_hits / lfc_misses / lfc_writes LONG Działanie lokalnej pamięci podręcznej plików dla tego interwału.
replica_lfc_redo_evictions LONG Eksmisje lokalnej pamięci podręcznej plików spowodowane przez ponowne wykonanie repliki, jeśli to obliczenie jest repliką do odczytu.

compute_gauges

Column Typ Description
current_lsn LONG Bieżąca pozycja dziennika z wyprzedzeniem zapisu.
replica_wal_replay_lsn / replica_wal_receive_lsn LONG Odtwarzanie wal i odbieranie pozycji, jeśli to obliczenia są repliką do odczytu.
max_connections LONG Skonfigurowany limit połączeń.
lfc_working_set_size_5m / lfc_working_set_size_15m / lfc_working_set_size_60m LONG Szacowany rozmiar zestawu roboczego w ciągu ostatnich 5, 15 i 60 minut.
lfc_size_limit / lfc_allocated / lfc_used LONG Pojemność lokalnej pamięci podręcznej plików i bieżące użycie.
total_size_limit / total_size LONG Ogólna pojemność magazynu i bieżące użycie.
replication_lag_bytes / replication_lag_time_ms DŁUGI /PODWÓJNY Opóźnienie replikacji, jeśli to środowisko obliczeniowe jest repliką do odczytu.
host_logical_cpus / host_memory_total_bytes Podwójny Zaaprowizowana pamięć i procesor obliczeniowy.

Metryki bazy danych

Aktywność dla bazy danych: wiersze zmienione, transakcje, sesje i kondycja próżni. Jest to miejsce, w którym na żywo sygnały wylożenia tabeli i automatycznego czyszczenia.

database_counters

Column Typ Description
datid / datname DŁUGI/CIĄG Identyfikator obiektu i nazwa bazy danych.
active_time_ms / idle_in_transaction_time_ms / session_time_ms Podwójny Czas spędzony na aktywnej, bezczynnej transakcji i ogólnie połączony.
deadlocks LONG Liczba wykrytych zakleszczeń.
rows_deleted / rows_fetched / rows_inserted / rows_returned / rows_updated LONG Działanie na poziomie wiersza dla interwału.
sessions_abandoned / sessions_established / sessions_fatal / sessions_killed LONG Liczba cykli życia sesji.
shared_blks_hit / shared_blks_read LONG Działanie pamięci podręcznej buforu współużytkowanego.
xact_commit / xact_rollback LONG Zatwierdzone i wycofane transakcje.

database_gauges

Column Typ Description
datid / datname DŁUGI/CIĄG Identyfikator obiektu i nazwa bazy danych.
numbackends LONG Bieżąca liczba połączeń z tą bazą danych.
size LONG Rozmiar dysku bazy danych.
oldest_frozen_xid_age / oldest_mxid_age LONG Identyfikator transakcji i wiek identyfikatora wieloaktakowego najstarszego nierozrozzonego wiersza. Rosnące wartości są najwcześniejszym sygnałem próżni spadającym w tyle, na tyle, zanim wzdęcie stanie się widoczne w rozmiarze tabeli.

Ograniczenia

Note

Hasła są redagowane w momencie przechwytywania instrukcji, więc przechwycone CREATE ROLE odczytuje PASSWORD '***'. Redakcia zależy od wykrycia hasła w instrukcji, a nieprawidłowo uformowane zdanie może uniknąć wykrycia.

Azure Databricks zaleca role OAuth, które uwierzytelniają tożsamości Azure Databricks za pomocą tokenów i nie pozostawiają hasła do wpisania.

Obowiązują następujące ograniczenia:

  • COPY operacje nie są rejestrowane w historii planu zapytań.

  • Zapytanie wykonywane wewnątrz funkcji PL/pgSQL lub procedury nie jest przechwytywane w telemetrii na poziomie zapytania, chyba że jest również uruchamiane jako instrukcja najwyższego poziomu. Własne śledzenie instrukcji w Postgresie domyślnie zlicza tylko instrukcje najwyższego poziomu.

  • Gałęzie i punkty końcowe pojawiają się w telemetrii i insightach według wewnętrznego ID (na przykład, br-odd-mud-y2icrn1h), a nie przez nazwę wyświetlaną, jak "production". Sprawdź ID w interfejsie Lakebase, jeśli musisz potwierdzić, do której gałęzi lub punktu końcowego odnosi się wiersz insight lub tabela.

  • Jednostki GUCs, które umożliwiają przechwytywanie danych telemetrycznych, mogą nie być propagowane automatycznie do istniejących zasobów obliczeniowych. Jeśli telemetria nie pojawi się po włączeniu podglądu, połącz się z projektem i sprawdź:

    SHOW neon_monitor.log_capture_enabled;
    SHOW databricks.o11y_exporter_enabled;
    

    Oba muszą zwrócić wartość on. Jeśli którykolwiek z nich zwraca off, uruchom ponownie punkt końcowy obliczeń.

Konfiguracje obserwacji dziedziczonych

Zanim telemetria przeniosła się do tabel systemowych, można było stworzyć konfigurację obserwacji, która przechwytywała telemetrię do katalogu i schematu w Twoim własnym Katalogu Unity oraz dostarczała gotowe pulpity nawigacyjne. Istniejące konfiguracje działają dalej, a ich pulpity pozostają dostępne. Nie można już tworzyć nowych konfiguracji obserwacji, a przechwytywanie do tabel systemowych nie tworzy dashboardów.

Następne kroki