Udostępnij przez


Rejestrowanie i monitorowanie aplikacji usługi Databricks

Efektywne rejestrowanie i monitorowanie pomaga wykrywać zdarzenia zabezpieczeń i reagować na nie w usłudze Databricks Apps. Aplikacje generują dzienniki na poziomie aplikacji i dzienniki inspekcji platformy, których można użyć do diagnostyki, śledzenia wydajności i analizy zabezpieczeń.

Dzienniki aplikacji

Aby udostępnić dzienniki w interfejsie użytkownika aplikacji usługi Databricks lub za pośrednictwem adresu URL aplikacji, aplikacja musi zapisywać dane wyjściowe w usługach stdout i stderr.

Uzyskaj dostęp do dzienników aplikacji na następujące sposoby:

  • Interfejs użytkownika aplikacji: Na stronie szczegółów aplikacji kliknij kartę Dzienniki , aby wyświetlić standardowe dane wyjściowe i błędy. Aby uzyskać szczegółowe informacje, zobacz Wyświetl szczegóły dotyczące aplikacji Databricks.
  • Bezpośredni adres URL: Dołącz /logz do adresu URL aplikacji. Jeśli na przykład adres URL aplikacji to https://my-app-1234567890.my-instance.databricksapps.com, dzienniki są dostępne pod adresem https://my-app-1234567890.my-instance.databricksapps.com/logz.

Uwaga / Notatka

Usługa Azure Databricks nie utrwala dzienników po zamknięciu obliczeń aplikacji. W przypadku długoterminowego rejestrowania należy zintegrować się z zewnętrznymi usługami rejestrowania lub zapisywać dzienniki w sekcjach lub tabelach katalogowych Unity Catalog.

Integracja z zewnętrznymi usługami logowania

W przypadku trwałych funkcji rejestrowania i zaawansowanego monitorowania należy użyć następujących elementów:

  • Narzędzia do monitorowania wydajności aplikacji (APM): Użyj nowych narzędzi do monitorowania wydajności aplikacji Relic, Datadog lub podobnych, aby zbierać i analizować dzienniki, metryki i ślady.
  • Niestandardowa trwałość logów: Okresowo zapisuj logi w woluminach lub tabelach Unity Catalogu w celu długoterminowego przechowywania i analizy.

Zobacz Zalecane praktyki rejestrowania , aby uzyskać wskazówki dotyczące formatowania dzienników i zawartości.

Aby zintegrować z zewnętrznymi systemami monitorowania i alertów w czasie rzeczywistym:

  • Formatuj dzienniki w formacie JSON lub w innych formatach możliwych do analizowania maszyn.
  • Rejestruj zdarzenia związane z zabezpieczeniami z kontekstem:
    • Zdarzenia uwierzytelniania i autoryzacji, w tym tożsamość użytkownika i wynik
    • Szczegóły dostępu do danych, takie jak wykaz, schemat i nazwy tabel
    • Błędy związane z zabezpieczeniami, takie jak nieprawidłowe tokeny, odmowa uprawnień i podejrzane działania
  • Przekazywanie dzienników do systemów zewnętrznych. Integracja z narzędziami APM lub agregacji logów w celu obsługi alertów w czasie rzeczywistym, reagowania na zdarzenia zabezpieczeń, analizy użycia i wydajności oraz korelacji z dziennikami systemu usługi Azure Databricks.

Zagadnienia dotyczące zabezpieczeń dotyczące rejestrowania

Aplikacje usługi Databricks zostały zaprojektowane z następującymi wbudowanymi kontrolkami, aby zapobiec eksfiltracji danych:

  • Dostęp tylko do interfejsu API: aplikacje mogą uzyskiwać dostęp tylko do zasobów usługi Azure Databricks za pośrednictwem publicznych interfejsów API usługi Azure Databricks. Te interfejsy API można przeprowadzać inspekcję za pomocą dzienników tabeli systemu.
  • Zaszyfrowana komunikacja: cały ruch interfejsu API jest szyfrowany przy użyciu protokołu TLS 1.2 lub nowszego w celu zapewnienia bezpiecznego transferu danych.

Monitorowanie zabezpieczeń przy użyciu tabel systemowych

Usługa Azure Databricks przechwytuje dzienniki inspekcji dla działań związanych z aplikacjami w system.access.audit tabeli. Możesz wykonywać zapytania dotyczące tych dzienników w celu śledzenia akcji użytkownika, zmian konfiguracji aplikacji i zdarzeń zabezpieczeń.

Użyj następujących zapytań, aby monitorować działania związane z zabezpieczeniami i wykrywać potencjalne problemy z aplikacjami.

Monitorowanie zmian uprawnień aplikacji

Użyj tego zapytania, aby wykryć modyfikacje uprawnień aplikacji:

-- Monitor all app permission modifications in the last 30 days
WITH permission_changes AS (
  SELECT
    event_date,
    workspace_id,
    request_params.request_object_id AS app_name,
    user_identity.email AS modified_by,
    explode(from_json(
      request_params.access_control_list,
      'array<struct<user_name:string,group_name:string,permission_level:string>>'
    )) AS permission
  FROM system.access.audit
  WHERE action_name = 'changeAppsAcl'
    AND event_date >= current_date() - 30
)
SELECT
  event_date,
  app_name,
  modified_by,
  permission.user_name,
  permission.group_name,
  permission.permission_level
FROM permission_changes
ORDER BY event_date DESC

Identyfikowanie aplikacji z zakresami interfejsu API użytkownika

Użyj tego zapytania, aby znaleźć aplikacje ze skonfigurowanymi zakresami interfejsu API użytkownika:

-- Find apps created or updated in the last 30 days with user API scopes configured
SELECT
  event_date,
  get_json_object(request_params.app, '$.name') AS app_name,
  user_identity.email AS creator_email,
  get_json_object(request_params.app, '$.user_api_scopes') AS user_api_scopes
FROM system.access.audit
WHERE
  action_name IN ('createApp', 'updateApp')
  AND get_json_object(request_params.app, '$.user_api_scopes') IS NOT NULL
  AND event_date >= current_date() - INTERVAL 30 DAYS

Śledzenie akcji autoryzacji użytkownika

Użyj tego zapytania, aby wyświetlić listę akcji aplikacji wykonywanych z autoryzacją użytkownika:

-- List app actions performed on behalf of users in the last 30 days
WITH obo_events AS (
  SELECT
    event_date,
    workspace_id,
    audit_level,
    identity_metadata.acting_resource AS app_id,   -- OAuth App ID or name
    user_identity.email AS user_email,             -- Logged-in user
    service_name,
    action_name
  FROM system.access.audit
  WHERE event_date >= current_date() - 30
    AND identity_metadata.acting_resource IS NOT NULL
)
SELECT
  event_date,
  app_id,
  user_email,
  service_name,
  action_name,
  audit_level,
  COUNT(*) AS event_count
FROM obo_events
GROUP BY
  event_date, app_id, user_email, service_name, action_name, audit_level
ORDER BY event_date DESC;

Monitorowanie operacyjne

Tabele systemowe umożliwiają monitorowanie aspektów operacyjnych aplikacji, takich jak koszty i użycie zasobów.

Monitorowanie kosztów aplikacji

Monitorowanie kosztów usługi Databricks Apps przy użyciu system.billing.usage tabeli . Użyj następującego zapytania, aby uzyskać dokładne informacje o kosztach aplikacji dziennie lub miesiąca:

-- Get Databricks Apps cost by app per day for the last 30 days
SELECT
  us.usage_date,
  us.usage_metadata.app_id,
  us.usage_metadata.app_name,
  SUM(us.usage_quantity) AS dbus,
  SUM(us.usage_quantity * lp.pricing.effective_list.default) AS dollars
FROM
  system.billing.usage us
LEFT JOIN system.billing.list_prices lp
  ON lp.sku_name = us.sku_name
  AND us.usage_start_time BETWEEN lp.price_start_time AND COALESCE(lp.price_end_time, NOW())
WHERE
  billing_origin_product = 'APPS'
  AND us.usage_unit = 'DBU'
  AND us.usage_date >= DATE_SUB(NOW(), 30)
GROUP BY ALL

Usługa Databricks Apps obsługuje zasady budżetowe ułatwiające śledzenie kosztów. Aby uzyskać informacje na temat konfigurowania zasad budżetu, zobacz Wykorzystanie atrybutu w kontekście bezserwerowych zasad budżetu.

Monitorowanie szczegółowych informacji o aplikacji

Ważne

Karta Wglądy jest w wersji beta.

Karta Szczegółowe informacje na stronie szczegółów aplikacji pokazuje zaangażowanie użytkowników i dostępność aplikacji.

Śledzenie widzów

Tabela Odbiorcy śledzi, którzy użytkownicy uzyskują dostęp do Twojej aplikacji.

Usługa Azure Databricks rejestruje zdarzenie widoku, gdy użytkownik uzyskuje dostęp do aplikacji za pośrednictwem adresu URL aplikacji lub dostępu do interfejsu API. Przechowuje dane jako unikatowe dla użytkownika i dla aplikacji. Kolejne wizyty tego samego użytkownika zastępują poprzedni rekord, zamiast tworzyć nowy wiersz.

Ostatnio wyświetlany znacznik czasu jest zgodny z 30-minutowym cyklem odświeżania sesji OAuth. Wiele wizyt w okresie sesji zachowuje początkowy czas wizyty, ale pierwszy dostęp po wygaśnięciu sesji ponownie zastępuje znacznik czasu nową godziną wizyty.

Uwaga / Notatka

W wersji beta czas ostatniego wyświetlania pokazuje tylko uniwersalny czas koordynowany (UTC).

Czas pracy i stan kondycji

Monitoruj następujące sygnały kondycji, aby rozwiązać problemy z dostępnością aplikacji.

  • Kondycja usługi App Service: czy dostępna jest infrastruktura usługi Azure Databricks obsługująca aplikację. Jeśli jest niedostępny, występuje problem z platformą na poziomie usługi. Skontaktuj się z pomocą techniczną usługi Databricks.
  • Dostępność aplikacji: czy określona aplikacja obsługuje żądania. Jeśli jest niedostępna, sprawdź błędy wdrożenia lub awarie w kodzie.