Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Telemetri aplikasi ada di Beta.
Telemetri Databricks Apps mengumpulkan jejak data, log, dan metrik dan menyimpannya ke tabel Unity Catalog menggunakan protokol OpenTelemetry (OTel). Setelah Anda mengaktifkan telemetri aplikasi, Databricks secara otomatis mengambil log sistem dan peristiwa penggunaan seperti login pengguna dan permintaan API langsung. Anda juga dapat menambahkan instrumentasi kustom menggunakan OpenTelemetry SDK untuk kerangka kerja Anda.
Persyaratan
- Ruang kerja Anda harus berada di wilayah yang didukung:
australiaeast,brazilsouth,canadacentral,centralindia,centralus,eastus,eastus2,germanywestcentral,northcentralus,northeurope,southcentralus,southeastasia,swedencentral,switzerlandnorth,uksouth,westeurope,westus,westus2,westus3.
- Untuk membuat tabel target telemetri baru di Unity Catalog, Anda memerlukan
CAN MANAGEizin pada katalog dan skema target, danCREATE TABLEpada skema. - Untuk menulis ke tabel target telemetri yang ada di Unity Catalog, Anda memerlukan izin
CAN MANAGEpada katalog dan skema target, atau semua pengguna akun harus memilikiUSE CATALOG,USE SCHEMA,SELECT, danMODIFYpada tabel target tersebut. - Tabel target harus merupakan tabel Delta yang dikelola di wilayah yang sama dengan ruang kerja Anda.
- Databricks merekomendasikan untuk mengaktifkan pengoptimalan prediktif pada tabel target telemetri untuk performa kueri yang lebih baik.
Mengaktifkan telemetri aplikasi
Nota
Jika Anda membuat aplikasi sebelum beta telemetri aplikasi, Anda harus menghentikan dan memulai ulang sebelum melanjutkan dengan langkah-langkah konfigurasi berikut.
Untuk mengaktifkan telemetri untuk aplikasi, konfigurasikan katalog dan skema untuk tabel telemetri di pengaturan aplikasi.
- Buka halaman detail aplikasi di ruang kerja Azure Databricks Anda.
- Pada tab gambaran umum, temukan bagian Konfigurasi telemetri aplikasi dan klik Tambahkan.
- Masukkan atau telusuri untuk memilih katalog dan skema. Azure Databricks menulis data telemetri ke tiga tabel di lokasi yang dipilih:
otel_metrics, ,otel_spansdanotel_logs. - (Opsional) Tentukan awalan tabel sehingga tabel diberi nama
<prefix>_otel_metrics, ,<prefix>_otel_spansdan<prefix>_otel_logs. Azure Databricks menambahkan ke tabel yang sudah ada atau membuatnya jika tidak ada. - Kliklah Simpan.
- Sebarkan ulang aplikasi sehingga telemetri mulai mengalir ke Unity Catalog.
Memverifikasi data telemetri
Tabel otel_logs diisi secara otomatis setelah penyebaran ulang. Tabel otel_spans dan otel_metrics hanya diisi setelah Anda menambahkan instrumentasi kustom ke aplikasi Anda.
Setelah Anda menyebarkan ulang aplikasi:
Kunjungi URL aplikasi untuk menghasilkan aktivitas.
Tunggu beberapa detik agar batch awal data muncul.
Jalankan kueri berikut di Databricks SQL untuk mengonfirmasi bahwa data mengalir:
SELECT * FROM <catalog>.<schema>.otel_logs LIMIT 10;
Mengkueri data telemetri
Kolom yang berguna untuk memfilter dan menghubungkan data telemetri meliputi time, , service_name, trace_idspan_id, dan attributes. Kolom attributes adalah peta yang berisi metadata khusus peristiwa seperti event.name.
Untuk melihat skema lengkap tabel telemetri apa pun, jalankan:
DESCRIBE TABLE <catalog>.<schema>.otel_logs;
Contoh kueri berikut untuk log tingkat kesalahan dari jam terakhir, yang berguna untuk men-debug masalah aplikasi:
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;
Peristiwa sistem kueri
Azure Databricks secara otomatis mengambil peristiwa sistem dalam otel_logs tabel, seperti peristiwa penggunaan untuk login pengguna dan permintaan API langsung. Kueri peristiwa ini dengan memfilter atribut event.name.
Contoh berikut mengambil 100 peristiwa penggunaan terbaru untuk aplikasi:
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;
Menambahkan instrumentasi kustom
Tambahkan instrumentasi otomatis OpenTelemetry untuk menghasilkan jejak, metrik, dan log kustom. Perbarui app.yaml dan file dependensi Anda seperti yang ditunjukkan untuk kerangka kerja Anda.
Streamlit
Perbarui app.yaml:
command: ['opentelemetry-instrument', 'streamlit', 'run', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Perbarui 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
Dash
Perbarui app.yaml:
command: ['opentelemetry-instrument', 'python', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Perbarui 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
Perbarui app.yaml:
command: ['opentelemetry-instrument', 'flask', '--app', 'app.py', 'run', '--no-reload']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Perbarui requirements.txt:
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-flask
FastAPI
Perbarui app.yaml:
command: ['opentelemetry-instrument', 'uvicorn', 'app:app', '--host', '0.0.0.0', '--port', '8000']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Perbarui requirements.txt:
fastapi
uvicorn
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-fastapi
Node.js
Buat berkas 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);
Perbarui 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"
}
}
Variabel lingkungan
Saat Anda mengaktifkan telemetri aplikasi, Databricks secara otomatis mengonfigurasi variabel lingkungan di runtime aplikasi Anda untuk titik akhir pengumpul OTLP, protokol ekspor, atribut sumber daya, dan pemrosesan batch. Untuk daftar lengkap variabel lingkungan OTel, lihat Variabel lingkungan telemetri aplikasi.
Batas dan batasan
Telemetri aplikasi menggunakan konektor Zerobus Ingest untuk menulis data ke tabel Unity Catalog. Semua batasan konektor Zerobus Ingest berlaku untuk telemetri aplikasi, termasuk batas ukuran rekaman, throughput, jaminan pengiriman, dan persyaratan tabel target.
Selain batas Zerobus, telemetri aplikasi memberlakukan ukuran baris log maksimum 1 MB per baris log.