Usar painéis para visualizar métricas do Azure Databricks
Observação
Este artigo se baseia em uma biblioteca de código aberto hospedada no GitHub em: https://github.com/mspnp/spark-monitoring.
A biblioteca original dá suporte ao Azure Databricks Runtimes 10.x (Spark 3.2.x) e versões anteriores.
O Databricks contribuiu com uma versão atualizada para dar suporte ao Azure Databricks Runtimes 11.0 (Spark 3.3.x) e superior na l4jv2
ramificação em: https://github.com/mspnp/spark-monitoring/tree/l4jv2.
Observe que a versão 11.0 não é compatível com versões anteriores devido aos diferentes sistemas de log usados nos Databricks Runtimes. Certifique-se de usar a compilação correta para o Databricks Runtime. A biblioteca e o repositório do GitHub estão em modo de manutenção. Não há planos para lançamentos futuros, e o suporte a problemas será apenas de melhor esforço. Para quaisquer perguntas adicionais sobre a biblioteca ou o roteiro para monitoramento e registro em log de seus ambientes do Azure Databricks, entre em contato com azure-spark-monitoring-help@databricks.com.
Este artigo mostra como configurar um painel do Grafana para monitorar trabalhos do Azure Databricks em busca de problemas de desempenho.
O Azure Databricks é um serviço de análise rápido, eficiente e colaborativo baseado no Apache Spark que facilita o desenvolvimento e a implantação rápidas de soluções de IA (inteligência artificial) e análise de Big Data. O monitoramento é um componente crítico da operação de cargas de trabalho do Azure Databricks em produção. A primeira etapa é coletar métricas em um workspace para análise. No Azure, a melhor solução para gerenciar dados de log é o Azure Monitor. O Azure Databricks não dá suporte nativo ao envio de dados de log para o Azure Monitor, mas uma biblioteca para essa funcionalidade está disponível no GitHub.
Essa biblioteca permite o log de métricas de serviço do Azure Databricks, bem como métricas de eventos de consulta de streaming de estrutura do Apache Spark. Depois de implantar com êxito essa biblioteca em um cluster do Azure Databricks, você pode implantar ainda mais um conjunto de painéis do Grafana que você pode implantar como parte do seu ambiente de produção.
Pré-requisitos
Configure seu cluster do Azure Databricks para usar a biblioteca de monitoramento, conforme descrito no Leiame do GitHub.
Implantar o workspace do Azure Log Analytics
Para implantar o workspace do Azure Log Analytics, siga estas etapas:
Navegue até o diretório
/perftools/deployment/loganalytics
.Implante o modelo logAnalyticsDeploy.json do Azure Resource Manager. Para obter mais informações sobre como implantar os modelos do Resource Manager, confira Implantar recursos com modelos do Resource Manager e a CLI do Azure. O modelo tem os seguintes parâmetros:
- location: a região em que os painéis e o workspace do Log Analytics estão implantados.
- serviceTier: o tipo de preço do workspace. Acesse aqui para ver uma lista de valores válidos.
- dataRetention (opcional): o número de dias em que os dados de log são retidos no workspace do Log Analytics. O valor padrão é 30 dias. Se o tipo de preço for
Free
, a retenção de dados precisará ser de sete dias. - workspaceName (opcional): um nome para o workspace. Se ele não for especificado, o modelo vai gerar um nome.
az deployment group create --resource-group <resource-group-name> --template-file logAnalyticsDeploy.json --parameters location='East US' serviceTier='Standalone'
Esse modelo cria o workspace e um conjunto de consultas predefinidas que são usadas pelo painel.
Implantar o Grafana em uma máquina virtual
O Grafana é um projeto de código aberto que você pode implantar para visualizar as métricas de série temporal armazenadas no workspace do Azure Log Analytics usando o plug-in do Grafana para o Azure Monitor. Ele é executado em uma VM (máquina virtual) e exige uma conta de armazenamento, uma rede virtual e outros recursos. Para implantar uma máquina virtual com a imagem do Grafana certificada para Bitnami e os recursos associados, siga estas etapas:
Use a CLI do Azure para aceitar os termos de imagem do Azure Marketplace para o Grafana.
az vm image terms accept --publisher bitnami --offer grafana --plan default
Procure o diretório
/spark-monitoring/perftools/deployment/grafana
na cópia local do repositório do GitHub.Implante o modelo grafanaDeploy.json do Resource Manager da seguinte forma:
export DATA_SOURCE="https://raw.githubusercontent.com/mspnp/spark-monitoring/master/perftools/deployment/grafana/AzureDataSource.sh" az deployment group create \ --resource-group <resource-group-name> \ --template-file grafanaDeploy.json \ --parameters adminPass='<vm password>' dataSource=$DATA_SOURCE
Depois que a implantação for concluída, a imagem Bitnami do Grafana será instalada na máquina virtual.
Atualizar a senha do Grafana
Como parte do processo de instalação, o script de instalação do Grafana emite uma senha temporária para o usuário administrador. Você precisará dessa senha temporária para se conectar. Para obter a senha temporária, siga estas etapas:
- Entre no portal do Azure.
- Selecione o grupo de recursos em que os recursos foram implantados.
- Escolha a VM em que o Grafana foi instalado. Se você tiver usado o nome do parâmetro padrão no modelo de implantação, o nome da VM será substituído por sparkmonitoring-vm-grafana.
- Na seção Suporte + solução de problemas, clique em Diagnóstico de inicialização para abrir a página do diagnóstico de inicialização.
- Clique em Log serial na página do diagnóstico de inicialização.
- Procure a seguinte cadeia de caracteres: "Definindo a senha do aplicativo Bitnami como".
- Copie a senha para um local seguro.
Em seguida, altere a senha de administrador do Grafana seguindo estas etapas:
- No portal do Azure, selecione a VM e clique em Visão geral.
- Copie o endereço IP público.
- Abra um navegador da Web e acesse a seguinte URL:
http://<IP address>:3000
. - Na tela de logon do Grafana, insira administrador como o nome de usuário e use a senha do Grafana das etapas anteriores.
- Depois de conectado, selecione Configuração (o ícone de engrenagem).
- Escolha Administrador do Servidor.
- Na guia Usuários, selecione o logon administrador.
- Atualizar a senha.
Criar uma fonte de dados do Azure Monitor
Crie uma entidade de serviço que permita que o Grafana gerencie o acesso ao seu workspace do Log Analytics. Para obter mais informações, confira Criar uma entidade de serviço do Azure com a CLI do Azure
az ad sp create-for-rbac --name http://<service principal name> \ --role "Log Analytics Reader" \ --scopes /subscriptions/mySubscriptionID
Observe os valores de appId, senha e locatário na saída deste comando:
{ "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "displayName": "azure-cli-2019-03-27-00-33-39", "name": "http://<service principal name>", "password": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }
Faça logon no Grafana, conforme descrito anteriormente. Selecione Configuração (o ícone de engrenagem) e Fontes de Dados.
Na guia Fontes de Dados, clique em Adicionar fonte de dados.
Selecione Azure Monitor como o tipo de fonte de dados.
Na seção Configurações, insira um nome para a fonte de dados na caixa de texto Nome.
Na seção Detalhes da API do Azure Monitor, insira as seguintes informações:
- ID da assinatura: a ID da sua assinatura do Azure.
- ID do locatário: a ID do locatário anterior.
- ID do cliente: o valor da "appId" anterior.
- Segredo do cliente: o valor de "senha" anterior.
Na seção Detalhes da API do Azure Log Analytics, marque a caixa de seleção Os mesmos detalhes da API do Azure Monitor.
Clique em Salvar e Testar. Se a fonte de dados do Log Analytics estiver configurada corretamente, uma mensagem de êxito será exibida.
Criar o painel
Crie os painéis no Grafana seguindo estas etapas:
Procure o diretório
/perftools/dashboards/grafana
na cópia local do repositório do GitHub.Execute o seguinte script:
export WORKSPACE=<your Azure Log Analytics workspace ID> export LOGTYPE=SparkListenerEvent_CL sh DashGen.sh
A saída do script é um arquivo chamado SparkMonitoringDash.json.
Volte ao painel do Grafana e selecione Criar (o ícone de adição).
Selecione Importar.
Clique em Carregar Arquivo .json.
Selecione o arquivo SparkMonitoringDash.json criado na etapa 2.
Na seção Opções, em ALA, selecione a fonte de dados do Azure Monitor criada anteriormente.
Clique em Importar.
Visualizações nos painéis
Os painéis do Azure Log Analytics e do Grafana incluem um conjunto de visualizações de série temporal. Cada grafo é um gráfico de série temporal de dados de métrica relacionados a um trabalho do Apache Spark, às fases do trabalho e às tarefas que compõem cada fase.
As visualizações são:
Latência do trabalho
Essa visualização mostra a latência de execução de um trabalho, que é uma exibição grosseira do desempenho geral de um trabalho. Exibe a duração da execução do trabalho do início à conclusão. Observe que a hora de início do trabalho não é igual à hora de envio do trabalho. A latência é representada como percentis (10%, 30%, 50%, 90%) da execução do trabalho indexada por ID do cluster e ID do aplicativo.
Latência de preparo
A visualização mostra a latência de cada fase por cluster, por aplicativo e por fase individual. Essa visualização é útil para identificar uma fase específica com execução lenta.
Latência da tarefa
Essa visualização mostra a latência de execução da tarefa. A latência é representada como um percentil de execução da tarefa por cluster, nome da fase e aplicativo.
Soma de Execução da Tarefa por Host
Essa visualização mostra a soma da latência de execução de tarefa por host em execução em um cluster. A exibição da latência de execução da tarefa por host identifica os hosts que têm uma latência de tarefa geral muito maior do que outros hosts. Isso pode significar que as tarefas foram distribuídas de maneira ineficiente ou desigual entre os hosts.
Métricas da tarefa
Essa visualização mostra um conjunto de métricas de execução para a execução de determinada tarefa. Essas métricas incluem o tamanho e a duração de dados em ordem aleatória, a duração das operações de serialização e desserialização e outros. Para obter o conjunto completo de métricas, veja a consulta do Log Analytics no painel. Essa visualização é útil para entender as operações que compõem uma tarefa e identificar o consumo de recursos de cada operação. Os picos no grafo representam operações de alto custo que devem ser investigadas.
Produtividade do cluster
Essa visualização é uma exibição de alto nível dos itens de trabalho indexados por cluster e aplicativo para representar a quantidade de trabalho realizada por cluster e aplicativo. Ela mostra o número de trabalhos, tarefas e fases concluídos por cluster, aplicativo e fase em incrementos de um minuto.
Taxa de transferência/latência de streaming
Essa visualização está relacionada às métricas associadas a uma consulta de streaming estruturado. O grafo mostra o número de linhas de entrada por segundo e o número de linhas processadas por segundo. As métricas de streaming também são representadas por aplicativo. Essas métricas são enviadas quando o evento OnQueryProgress é gerado à medida que a consulta de streaming estruturado é processada, e a visualização representa a latência de streaming como o tempo, em milissegundos, necessário para executar um lote de consulta.
Consumo de recursos por executor
Em seguida, há um conjunto de visualizações no painel que mostra o tipo específico de recurso e como ele é consumido por executor em cada cluster. Essas visualizações ajudam a identificar exceções no consumo de recursos por executor. Por exemplo, se a alocação de trabalho de um executor específico for distorcida, o consumo de recursos será elevado em relação a outros executores em execução no cluster. Isso pode ser identificado por picos no consumo de recursos de um executor.
Métricas de tempo de computação do executor
Em seguida, há um conjunto de visualizações no painel que mostra a taxa de tempo de serialização do executor, tempo de desserialização, tempo de CPU e tempo de máquina virtual Java para o tempo de computação geral do executor. Isso demonstra visualmente o quanto cada uma dessas quatro métricas contribui para o processamento geral do executor.
Métricas de ordem aleatória
O conjunto final de visualizações mostra as métricas de ordem aleatória de dados associadas a uma consulta de streaming estruturado em todos os executores. Isso inclui bytes em ordem aleatória lidos, bytes em ordem aleatória gravados, memória em ordem aleatória e uso de disco em consultas em que o sistema de arquivos é usado.