Registro e monitoramento de aplicativos Databricks

O registo e monitorização eficazes ajudam-no a detetar e responder a eventos de segurança nas Aplicações Databricks. Os aplicativos geram logs no nível do aplicativo e logs de auditoria da plataforma, que você pode usar para diagnóstico, rastreamento de desempenho e análise de segurança.

Logs de aplicativos

Para aceder aos logs na interface do Databricks Apps ou através da URL da sua aplicação, a sua aplicação deve escrever a saída em stdout e stderr.

Acesse os logs do aplicativo das seguintes maneiras:

  • Interface das Apps: Clique na aba Logs da aplicação para visualizar a saída padrão e erros. Para obter detalhes, consulte Visualizar os detalhes de uma aplicação Databricks.
  • URL direta: Anexe /logz ao URL do seu aplicativo. Por exemplo, se o URL da sua aplicação for https://my-app-1234567890.my-instance.databricksapps.com, os logs estarão disponíveis em https://my-app-1234567890.my-instance.databricksapps.com/logz.

Observação

O Azure Databricks não mantém registos persistentes quando a computação da aplicação desliga. Para registro persistente, integre-se a serviços de logging externos ou escreva logs em volumes ou tabelas do Unity Catalog.

Integração com serviços de registo externos

Para logs persistentes e recursos avançados de monitoramento, use o seguinte:

  • Telemetria de aplicações (Beta): Recolha traços, registos e métricas diretamente para as tabelas do Catálogo Unity. Consulte Configurar telemetria para aplicações Databricks.

  • Ferramentas de monitoramento de desempenho de aplicativos (APM): Use New Relic, Datadog ou ferramentas de monitoramento de desempenho de aplicativos semelhantes para coletar e analisar logs, métricas e rastreamentos.

  • Persistência de log personalizado: Escreva logs periodicamente em volumes ou tabelas do Unity Catalog para armazenamento e análise de longo prazo.

Consulte Práticas de log recomendadas para obter orientações sobre formatação e conteúdo de log.

Para integrar com sistemas externos de monitorização e alerta em tempo real:

  • Formate logs em JSON ou outros formatos analisáveis por máquina.
  • Registre eventos relevantes para a segurança com o contexto:
    • Eventos de autenticação e autorização, incluindo identidade do usuário e resultado
    • Detalhes sobre o acesso aos dados, como nomes de catálogo, esquema e tabela
    • Erros relacionados à segurança, como tokens inválidos, recusas de permissão e atividades suspeitas
  • Transferir logs para sistemas externos. Integre com ferramentas de APM ou agregação de logs para suportar alertas em tempo real, resposta a incidentes de segurança, análises de utilização e desempenho, e correlação com os logs do sistema Azure Databricks.

Considerações de segurança para registro em log

Os aplicativos Databricks são projetados com os seguintes controles internos para evitar a exfiltração de dados:

  • Acesso apenas via API: As aplicações só podem aceder aos recursos do Azure Databricks através das APIs públicas do Azure Databricks. Essas APIs podem ser auditadas através dos logs das tabelas do sistema.
  • Comunicação criptografada: Todo o tráfego da API é criptografado usando TLS 1.2 ou superior para garantir a transferência segura de dados.

Monitoramento de segurança com tabelas do sistema

Azure Databricks captura registos de auditoria para atividades relacionadas com aplicativos na tabela system.access.audit. Você pode consultar esses logs para rastrear ações do usuário, alterações na configuração do aplicativo e eventos de segurança.

Use as consultas a seguir para monitorar atividades relacionadas à segurança e detetar possíveis problemas com seus aplicativos.

Monitorar alterações de permissão do aplicativo

Use esta consulta para detetar modificações de permissão do aplicativo:

-- 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

Identificar apps com permissões de API do usuário

Use esta consulta para localizar aplicativos com escopos de API do usuário configurados:

-- 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

Rastrear ações de autorização do usuário

Use esta consulta para listar as ações do aplicativo executadas com autorização do usuário:

-- 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;

Acompanhamento operacional

Use tabelas do sistema para monitorar aspetos operacionais de seus aplicativos, como custo e uso de recursos.

Monitore os custos do app

Monitore os custos do Databricks Apps usando a system.billing.usage tabela. Use a seguinte consulta para obter informações precisas de custo para aplicativos por dia ou mês:

-- 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

O Databricks Apps suporta políticas de orçamento para ajudar a controlar os custos. Para obter informações sobre a configuração de políticas orçamentais, consulte Utilização de atributos com políticas de uso sem servidor.

Monitorizar insights da aplicação

Importante

O separador Insights está em Beta.

O separador Insights na página de detalhes da aplicação mostra o envolvimento do utilizador e a disponibilidade da aplicação.

Monitorização do espectador

A tabela de Visualizadores acompanha quais os utilizadores que acedem à sua aplicação.

O Azure Databricks regista um evento de visualização quando um utilizador acede à aplicação através da URL da aplicação ou através do acesso à API. Armazena os dados como únicos por utilizador, por aplicação. Visitas subsequentes do mesmo utilizador sobrescrevem o seu registo anterior em vez de criar uma nova linha.

O último carimbo temporal visualizado segue um ciclo de atualização da sessão OAuth de 30 minutos. Múltiplas visitas dentro da janela da sessão mantêm o tempo inicial da visita, mas o primeiro acesso após o término da sessão substitui o carimbo de data/hora com o novo horário da visita.

Observação

Em Beta, o último tempo visualizado mostra apenas o Tempo Universal Coordenado (UTC).

Disponibilidade e estado de saúde

Monitorize os seguintes sinais de saúde para diagnosticar a disponibilidade da aplicação.

  • Saúde do serviço da aplicação: Se a infraestrutura Azure Databricks que suporta a aplicação está disponível. Se não estiver disponível, há um problema de nível de serviço com a plataforma. Contacte o suporte da Databricks.
  • Disponibilidade da aplicação: Se a aplicação específica responde a pedidos. Se não estiver disponível, verifique se há erros de implementação ou falhas no seu código.