Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Uygulama telemetrisi Beta sürümündedir.
Databricks Apps telemetri izlemeleri, günlükleri ve ölçümleri toplar ve OpenTelemetry (OTel) protokolünü kullanarak Unity Kataloğu tablolarında kalıcı olarak depolar. Uygulama telemetrisini etkinleştirdikten sonra Databricks, sistem günlüklerini ve kullanıcı oturum açma ve doğrudan API istekleri gibi kullanım olaylarını otomatik olarak yakalar. Çerçeveniz için OpenTelemetry SDK'sını kullanarak da özel izleme ekleyebilirsiniz.
Gereksinimler
- Çalışma alanınız desteklenen bir bölgede olmalıdır: , , , ,
australiaeast,brazilsouth, , ,canadacentral,centralindiacentraluseastuseastus2germanywestcentralnorthcentralusnortheuropesouthcentralussoutheastasia, ,swedencentral, ,switzerlandnorth,uksouth, .westeuropewestuswestus2westus3
- Unity Kataloğu'nda yeni telemetri hedef tabloları oluşturmak için, hedef katalog ve şemada
CAN MANAGEizinlerine ve şemadaCREATE TABLEizinlerine sahip olmanız gerekir. - Unity Kataloğu'nda var olan telemetri hedef tablolarına yazmak için,
CAN MANAGEhedef katalog ve şema üzerinde izinlere sahip olmanız veya tüm hesap kullanıcılarının hedef tablolardaUSE CATALOG,USE SCHEMA,SELECTveMODIFYizinlerine sahip olması gerekir. - Hedef tablolar, çalışma alanınızla aynı bölgede yönetilen Delta tabloları olmalıdır.
- Databricks, daha iyi sorgu performansı için telemetri hedef tablolarında tahmine dayalı iyileştirmenin etkinleştirilmesini önerir.
Uygulama telemetrisini etkinleştirme
Uyarı
Uygulama telemetri beta sürümünden önce bir uygulama oluşturduysanız, aşağıdaki yapılandırma adımlarına devam etmeden önce uygulamayı durdurmanız ve yeniden başlatmanız gerekir.
Bir uygulama için telemetriyi açmak için uygulama ayarlarında telemetri tabloları için bir katalog ve şema yapılandırın.
- Azure Databricks çalışma alanınızda uygulama ayrıntıları sayfasını açın.
- Genel bakış sekmesinde Uygulama telemetri yapılandırması bölümünü bulun ve Ekle'ye tıklayın.
- Katalog ve şema seçmek için girin veya göz atın. Azure Databricks, telemetri verilerini seçili konumdaki üç tabloya yazar:
otel_metrics,otel_spansveotel_logs. - (İsteğe bağlı) Tabloların
<prefix>_otel_metrics,<prefix>_otel_spansve<prefix>_otel_logsolarak adlandırılması için bir tablo ön eki belirtin. Azure Databricks, mevcut tabloların sonuna ekler veya yoksa bunları oluşturur. - Kaydet'e tıklayın.
- Telemetrinin Unity Kataloğu'na akmaya başlaması için uygulamayı yeniden dağıtın.
Telemetri verilerini doğrulama
Tablo otel_logs yeniden dağıtıldıktan sonra otomatik olarak doldurulur.
otel_spans ve otel_metrics tabloları yalnızca uygulamanıza özel enstrümantasyon ekledikten sonra doldurulur.
Uygulamayı yeniden dağıtdıktan sonra:
Etkinlik oluşturmak için uygulama URL'sini ziyaret edin.
İlk veri toplu işleminin görünmesi için birkaç saniye bekleyin.
Verilerin aktığını onaylamak için Databricks SQL'de aşağıdaki sorguyu çalıştırın:
SELECT * FROM <catalog>.<schema>.otel_logs LIMIT 10;
Telemetri verilerini sorgulama
Telemetri verilerini filtrelemek ve ilişkilendirmek için yararlı sütunlar arasında time, service_name, trace_id, span_idve attributesbulunur.
attributes sütunu gibi event.nameolaya özgü meta verileri içeren bir haritadır.
Herhangi bir telemetri tablosunun tam şemasını görüntülemek için şunu çalıştırın:
DESCRIBE TABLE <catalog>.<schema>.otel_logs;
Son bir saat içindeki sistem veya özel OpenTelemetry hata günlükleri için tabloyu otel_logs sorgulayan aşağıdaki örneği inceleyin:
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;
Özel enstrümantasyon ekleme
Özel izler, ölçümler ve günlükler oluşturmak için OpenTelemetry otomatik enstrümantasyonunu ekleyin. Çerçeveniz için gösterildiği gibi app.yaml ve bağımlılık dosyalarınızı güncelleştirin.
Streamlit
Güncelleme app.yaml:
command: ['opentelemetry-instrument', 'streamlit', 'run', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Güncelleme 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
Gösterge Tablosu
Güncelleme app.yaml:
command: ['opentelemetry-instrument', 'python', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Güncelleme 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
Güncelleme app.yaml:
command: ['opentelemetry-instrument', 'flask', '--app', 'app.py', 'run', '--no-reload']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Güncelleme requirements.txt:
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-flask
FastAPI
Güncelleme app.yaml:
command: ['opentelemetry-instrument', 'uvicorn', 'app:app', '--host', '0.0.0.0', '--port', '8000']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Güncelleme requirements.txt:
fastapi
uvicorn
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-fastapi
Node.js
Bir otel.js dosyası oluşturun:
'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);
Güncelleme 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"
}
}
Ortam değişkenleri
Uygulama telemetrisini etkinleştirdiğinizde Databricks, OTLP toplayıcı uç noktası, dışarı aktarma protokolü, kaynak öznitelikleri ve toplu işlem için uygulama çalışma zamanınızda ortam değişkenlerini otomatik olarak yapılandırıyor. OTel ortam değişkenlerinin tam listesi için bkz. Uygulama telemetrisi ortam değişkenleri.
Sınırlar ve sınırlamalar
Uygulama telemetrisi, Unity Catalog tablolarına veri yazmak için Zerobus Ingest bağlayıcısını kullanır. Uygulama telemetrisi için, kayıt boyutu, aktarım hızı, teslimat garantileri ve hedef tablo gereksinimleri dahil olmak üzere tüm Zerobus Ingest bağlayıcı sınırlamaları geçerlidir.
Zerobus sınırlarına ek olarak, uygulama telemetrisi, her bir günlük satırı için maksimum 1 MB satır boyutu uygular.