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 w wersji beta.
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
Uwaga / Notatka
Jeśli utworzyłeś aplikację przed wersją beta telemetrii aplikacji, musisz ją zatrzymać i ponownie uruchomić, zanim przejdziesz do poniższych kroków konfiguracji.
Aby włączyć telemetrię dla aplikacji, skonfiguruj katalog i schemat dla tabel telemetrii w ustawieniach aplikacji.
- Otwórz stronę szczegółów aplikacji w obszarze roboczym usługi Azure Databricks.
- Na karcie Przegląd znajdź sekcję Konfiguracja telemetrii aplikacji i kliknij przycisk Dodaj.
- Wprowadź lub przeglądaj, aby wybrać katalog i schemat. Usługa 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. Usługa 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.
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 wysyła zapytanie do tabeli otel_logs o systemowe lub niestandardowe dzienniki błędów OpenTelemetry z ostatniej godziny.
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;
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.
Limity i ograniczenia
Telemetria aplikacji używa łącznika Zerobus Ingest do zapisywania danych w tabelach Unity Catalog. Wszystkie ograniczenia łącznika Zerobus Ingest mają zastosowanie do danych telemetrycznych aplikacji, w tym limitów dotyczących rozmiaru rekordu, przepływności, gwarancji dostarczania i wymagań tabeli docelowej.
Oprócz limitów Zerobus telemetria aplikacji wymusza maksymalny rozmiar wiersza dziennika wynoszący 1 MB na wiersz dziennika.