Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważna
Telemetria aplikacji jest dostępna w publicznej wersji zapoznawczej.
Telemetria aplikacji Databricks gromadzi ślady, dzienniki i metryki, a następnie zapisuje je w tabelach katalogu Unity z wykorzystaniem protokołu OpenTelemetry (OTel). Po włączeniu telemetrii aplikacji usługa Databricks automatycznie przechwytuje dzienniki systemowe i zdarzenia użycia, takie jak logowanie użytkownika i żądania bezpośredniego interfejsu API. Możesz również dodać instrumentację niestandardową przy użyciu zestawu OpenTelemetry SDK dla platformy.
Wymagania
- Obszar roboczy musi znajdować się w obsługiwanym regionie:
australiaeast,brazilsouth,canadacentral,centralindia,centralus,eastus,eastus2,germanywestcentral,northcentralus,northeurope,southcentralus,southeastasia,swedencentral,switzerlandnorth,uksouth,westeurope,westus,westus2,westus3.
- Aby utworzyć nowe tabele docelowe telemetrii w Unity Catalog, musisz mieć
CAN MANAGEuprawnienia do katalogu docelowego i schematu orazCREATE TABLEuprawnienia do schematu. - Aby zapisywać dane do istniejących tabel docelowych telemetrii w Katalogu Unity, potrzebujesz albo uprawnień
CAN MANAGEdo katalogu docelowego i schematu, albo wszyscy użytkownicy konta muszą miećUSE CATALOG,USE SCHEMA,SELECTiMODIFYna tabelach docelowych. - Tabele docelowe muszą być zarządzanymi tabelami Delta w tym samym regionie co obszar roboczy.
- Usługa Databricks zaleca włączenie optymalizacji predykcyjnej w tabelach docelowych telemetrii w celu uzyskania lepszej wydajności zapytań.
Włącz telemetrię aplikacji
Aby włączyć telemetrię dla aplikacji, skonfiguruj katalog i schemat dla tabel telemetrii w ustawieniach aplikacji.
interfejs użytkownika
- Otwórz stronę szczegółów aplikacji w obszarze roboczym Azure Databricks.
- Na karcie Ustawienia znajdź sekcję Konfiguracja telemetrii aplikacji i kliknij przycisk Dodaj.
- Wprowadź lub przeglądaj, aby wybrać katalog i schemat. Azure Databricks zapisuje dane telemetryczne do trzech tabel w wybranej lokalizacji:
otel_metrics,otel_spansiotel_logs. - (Opcjonalnie) Określ prefiks tabeli, tak aby tabele nosiły nazwy
<prefix>_otel_metrics,<prefix>_otel_spansi<prefix>_otel_logs. Azure Databricks dołącza do istniejących tabel lub tworzy je, jeśli nie istnieją. - Kliknij przycisk Zapisz.
- Ponownie wdróż aplikację, aby telemetria zaczęła napływać do Unity Catalog.
CLI
Skonfiguruj dane telemetryczne przy użyciu
databricks apps updatepolecenia , określając pełny wykaz, schemat i nazwy tabel:databricks apps update <app-name> --json '{ "telemetry_export_destinations": [ { "unity_catalog": { "logs_table": "<catalog>.<schema>.<your-prefix>-otel_logs", "metrics_table": "<catalog>.<schema>.otel_metrics", "traces_table": "<catalog>.<schema>.otel_spans" } } ] }'Wdróż aplikację ponownie, aby dane telemetryczne zaczęły napływać do Unity Catalog:
databricks apps deploy <app-name>
Weryfikowanie danych telemetrycznych
Tabela otel_logs jest wypełniana automatycznie po ponownym wprowadzeniu. Tabele otel_spans i otel_metrics są wypełniane tylko po dodaniu instrumentacji niestandardowej do aplikacji.
Po ponownym uruchomieniu aplikacji:
Odwiedź adres URL aplikacji, aby wygenerować działanie.
Poczekaj kilka sekund na wyświetlenie początkowej partii danych.
Uruchom następujące zapytanie w usłudze Databricks SQL, aby potwierdzić, że dane przepływają:
SELECT * FROM <catalog>.<schema>.otel_logs LIMIT 10;
Wykonywanie zapytań dotyczących danych telemetrycznych
Przydatne kolumny do filtrowania i korelowania danych telemetrycznych obejmują time, , service_nametrace_id, , span_idi attributes. Kolumna attributes to mapa zawierająca metadane specyficzne dla zdarzenia, takie jak event.name.
Aby wyświetlić pełny schemat dowolnej tabeli telemetrii, uruchom polecenie:
DESCRIBE TABLE <catalog>.<schema>.otel_logs;
Poniższy przykład wykonuje zapytania dotyczące dzienników o poziomie błędów z ostatniej godziny, co jest przydatne podczas debugowania problemów z aplikacją.
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;
Wykonywanie zapytań dotyczących zdarzeń systemowych
Azure Databricks automatycznie przechwytuje zdarzenia systemowe w tabeli otel_logs, takie jak zdarzenia użycia dla logowania użytkowników i bezpośrednie żądania API. Wyszukaj te zdarzenia, filtrując według atrybutu event.name.
Poniższy przykład pobiera 100 najnowszych zdarzeń użycia dla aplikacji:
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;
Dodawanie instrumentacji niestandardowej
Dodaj automatyczną instrumentację OpenTelemetry, aby wygenerować niestandardowe ślady, metryki i dzienniki.
app.yaml Zaktualizuj swoje pliki i pliki zależności zgodnie z instrukcjami dla twojego frameworka.
Streamlit
Aktualizacja app.yaml:
command: ['opentelemetry-instrument', 'streamlit', 'run', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Aktualizacja 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
Panel
Aktualizacja app.yaml:
command: ['opentelemetry-instrument', 'python', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Aktualizacja requirements.txt:
dash
dash-bootstrap-components
pandas
plotly
databricks-sql-connector
databricks-sdk
python-dotenv
dash-ag-grid
opentelemetry-distro[otlp]
opentelemetry-instrumentation-flask
opentelemetry-exporter-otlp-proto-grpc
Flask
Aktualizacja app.yaml:
command: ['opentelemetry-instrument', 'flask', '--app', 'app.py', 'run', '--no-reload']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Aktualizacja requirements.txt:
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-flask
FastAPI
Aktualizacja app.yaml:
command: ['opentelemetry-instrument', 'uvicorn', 'app:app', '--host', '0.0.0.0', '--port', '8000']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Aktualizacja requirements.txt:
fastapi
uvicorn
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-fastapi
Node.js
Utwórz plik otel.js:
'use strict';
import { NodeSDK } from '@opentelemetry/sdk-node';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-proto';
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-proto';
const sdk = new NodeSDK({
traceExporter: new OTLPTraceExporter(),
metricReader: new PeriodicExportingMetricReader({
exporter: new OTLPMetricExporter(),
exportIntervalMillis: 10000,
}),
instrumentations: [
getNodeAutoInstrumentations({
'@opentelemetry/instrumentation-fs': { enabled: false },
}),
],
});
try {
sdk.start();
} catch (e) {
console.error('OTel SDK failed to start', e);
}
async function shutdown() {
try {
await sdk.shutdown();
} catch (e) {
console.error('OTel SDK shutdown failed', e);
} finally {
process.exit(0);
}
}
process.on('SIGTERM', shutdown);
process.on('SIGINT', shutdown);
Aktualizacja package.json:
{
"name": "nodejs-otel",
"version": "0.1.0",
"private": true,
"main": "app.js",
"scripts": {
"start": "node -r ./otel.js app.js"
},
"dependencies": {
"express": "^4.21.2",
"morgan": "^1.10.0",
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/sdk-node": "0.203.0",
"@opentelemetry/auto-instrumentations-node": "0.67.3",
"@opentelemetry/exporter-trace-otlp-proto": "0.203.0",
"@opentelemetry/exporter-metrics-otlp-proto": "0.203.0",
"@opentelemetry/exporter-logs-otlp-proto": "0.203.0",
"@opentelemetry/sdk-metrics": "2.0.1"
}
}
Zmienne środowiskowe
Po włączeniu telemetrii aplikacji, Databricks automatycznie konfiguruje zmienne środowiskowe w czasie wykonywania aplikacji dla punktu końcowego kolektora OTLP, protokołu eksportu, atrybutów zasobów oraz przetwarzania wsadowego. Aby uzyskać pełną listę zmiennych środowiskowych OTel, zobacz Zmienne środowiskowe telemetrii aplikacji.
Pricing
Pozyskiwanie telemetrii jest rozliczane jako użycie Lakeflow Connect, ponieważ dane telemetryczne aplikacji są zapisywane do tabel Unity Catalog za pośrednictwem konektora Zerobus Ingest. To jest oddzielne od opłat obliczeniowych związanych z uruchomieniem samej aplikacji.
Opłaty są naliczane w ramach jednostki SKU „Automated Serverless”. Stawki można znaleźć na stronie z cenami Lakeflow Connect.
Aby monitorować koszty pozyskiwania danych telemetrycznych, wyślij zapytanie do systemowej tabeli użycia podlegającego rozliczeniu. Aby poznać filtry izolujące zużycie Zerobus Ingest, zobacz Monitorowanie zużycia. Aby monitorować koszt obliczeniowy samej aplikacji, zobacz Monitorowanie kosztów aplikacji.
Limity i ograniczenia
Telemetria aplikacji używa łącznika Zerobus Ingest do zapisywania danych w tabelach Unity Catalog. Wszystkie ograniczenia złącza Zerobus Ingest dotyczą telemetrii aplikacji, w tym limity rozmiaru rekordu, przepustowości, gwarancji dostawy oraz wymagań dotyczących tabel docelowych. Zobacz limity pozyskiwania danych usługi Zerobus.
Oprócz limitów Zerobus telemetria aplikacji wymusza maksymalny rozmiar wiersza dziennika wynoszący 1 MB na wiersz dziennika.