Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Данные телеметрии приложений в бета-версии.
Данные телеметрии Databricks Apps собираются, сохраняются и отправляются в таблицы Unity Catalog с использованием протокола OpenTelemetry (OTel), включая трассировки, журналы и метрики. После включения телеметрии приложения Databricks автоматически записывает системные журналы и события использования, такие как вход пользователя и прямые запросы API. Вы также можете добавить настраиваемое инструментирование с помощью пакета SDK OpenTelemetry для платформы.
Требования
- Рабочая область должна находиться в поддерживаемом регионе:
australiaeast,brazilsouthcanadacentralcentralindiacentraluseastuseastus2germanywestcentralnorthcentralusnortheuropesouthcentralussoutheastasiaswedencentralswitzerlandnorthuksouthwesteuropewestuswestus2.westus3
- Чтобы создать новые целевые таблицы телеметрии в каталоге Unity, вам нужны
CAN MANAGEразрешения на целевой каталог и схему, а такжеCREATE TABLEна схему. - Чтобы записывать в существующие целевые таблицы телеметрии в каталоге Unity, вам потребуется либо
CAN MANAGEразрешение на целевой каталог и схему, либо все пользователи учетной записи должны иметьUSE CATALOG,USE SCHEMA,SELECTиMODIFYв целевых таблицах. - Целевые таблицы должны быть управляемыми таблицами Delta в том же регионе, что и рабочая область.
- Databricks рекомендует включить прогнозную оптимизацию целевых таблиц телеметрии для повышения производительности запросов.
Включение телеметрии приложения
Замечание
Если вы создали приложение перед бета-версией телеметрии приложения, перед выполнением следующих действий по настройке необходимо остановить и перезапустить его.
Чтобы включить телеметрию для приложения, настройте каталог и схему для таблиц телеметрии в параметрах приложения.
- Откройте страницу сведений о приложении в рабочей области Azure Databricks.
- На вкладке обзора найдите раздел конфигурации телеметрии приложения и нажмите кнопку "Добавить".
- Введите или перейдите к выбору каталога и схемы. Azure Databricks записывает данные телеметрии в три таблицы в выбранном расположении:
otel_metrics,otel_spans, иotel_logs. - (Необязательно) Укажите префикс таблицы, чтобы таблицы были именованы
<prefix>_otel_metrics,<prefix>_otel_spansи<prefix>_otel_logs. Azure Databricks добавляет данные в существующие таблицы или создает их, если они ещё не созданы. - Нажмите кнопку Сохранить.
- Повторно разверните приложение, чтобы данные телеметрии начали поступать в каталог Unity.
Проверка данных телеметрии
Таблица otel_logs заполняется автоматически после повторного развертывания. Таблицы otel_spans и otel_metrics заполняются лишь после того как вы добавите пользовательское инструментирование в ваше приложение.
После повторного развертывания приложения:
Посетите URL-адрес приложения, чтобы создать действие.
Подождите несколько секунд, пока появится начальный пакет данных.
Выполните следующий запрос в Databricks SQL, чтобы подтвердить поток данных:
SELECT * FROM <catalog>.<schema>.otel_logs LIMIT 10;
Запрос данных телеметрии
Полезные столбцы для фильтрации и сопоставления данных телеметрии: time, , service_name, trace_idspan_idи attributes. Столбец attributes — это карта, содержащая метаданные, относящиеся к событиям, event.nameнапример.
Чтобы просмотреть полную схему любой таблицы телеметрии, выполните следующую команду:
DESCRIBE TABLE <catalog>.<schema>.otel_logs;
В следующем примере запрашивается журналы на уровне ошибок за последний час, что полезно для отладки проблем с приложением:
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;
Запрос системных событий
Azure Databricks автоматически записывает системные события в otel_logs таблице, например события использования для входа пользователей и прямые запросы API. Запрашивайте эти события, фильтруя их по атрибуту event.name.
В следующем примере извлекаются 100 последних событий использования для приложения:
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;
Добавьте настраиваемое инструментирование
Добавьте автоматическое инструментирование OpenTelemetry для создания пользовательских трассировок, метрик и журналов. Обновите ваши файлы app.yaml и файлы зависимостей, как показано для вашего фреймворка.
Streamlit
Обновление app.yaml:
command: ['opentelemetry-instrument', 'streamlit', 'run', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Обновление 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
Панель
Обновление app.yaml:
command: ['opentelemetry-instrument', 'python', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Обновление 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
Обновление app.yaml:
command: ['opentelemetry-instrument', 'flask', '--app', 'app.py', 'run', '--no-reload']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Обновление requirements.txt:
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-flask
FastAPI
Обновление app.yaml:
command: ['opentelemetry-instrument', 'uvicorn', 'app:app', '--host', '0.0.0.0', '--port', '8000']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Обновление requirements.txt:
fastapi
uvicorn
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-fastapi
Node.js
Создайте файл 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);
Обновление 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"
}
}
Переменные среды
При включении телеметрии приложения Databricks автоматически настраивает переменные среды в среде выполнения приложения для конечной точки сборщика OTLP, протокола экспорта, атрибутов ресурсов и пакетной обработки. Полный список переменных среды OTel см. в разделе переменные среды телеметрии приложений.
Пределы и ограничения
Телеметрия приложения использует соединитель Ingest Zerobus для записи данных в таблицы каталога Unity. Все ограничения соединителя Zerobus Ingest применяются к телеметрии приложений, включая ограничения на размер записи, пропускную способность, гарантии доставки и требования к целевой таблице.
Помимо ограничений Zerobus, телеметрия приложения ограничивает максимальный размер строки журнала до 1 МБ.