Observability: otimizar cargas de trabalho com o Universal Profiling

Visão geral

Introdução ao Elastic Observability

Conheça o Elastic Observability e tenha uma visão geral de como ingerir, visualizar e analisar logs de clientes das suas aplicações usando o Elastic Cloud. Saiba como modernizar as aplicações e adote a nuvem com confiança.


Vamos começar

Crie uma conta do Elastic Cloud

Depois de acessar cloud.elastic.co e criar uma conta, siga este vídeo para saber como executar sua primeira solução da Elastic em qualquer uma das mais de 50 regiões compatíveis globalmente.

Create_Deployment_8.13.png

Após a conclusão da implantação, na guia Observability, selecione Optimize my workloads with Universal Profiling (Otimizar minhas cargas de trabalho com o Universal Profiling).

olly_tiles.png

Agora você deverá adicionar seus dados para começar. Selecione Set up Universal Profiling (Configurar o Universal Profiling).

universal-profiling-set-up.png

Se esta for a primeira vez que você usa o Universal Profiling Agent, deverá configurá-lo. Basta seguir as instruções abaixo.

kubernetes-universal-profiling-agent-install-start.png

Abaixo está um exemplo de execução dos comandos acima no cluster do AKS do Microsoft Azure.

kubernetes-universal-profiling-agent-install-in-azure-cloud-shell.png

Quando os dados começarem a aparecer, navegue até Stacktraces em Universal Profiling no menu à esquerda. Ao visualizar os traces da stack, é possível ver o que está consumindo mais tempo. Passe o cursor do mouse sobre o gráfico para ver o padrão de onda dos threads individualmente.

A visualização stacktraces mostra gráficos de stacktrace agrupados por threads, hosts, implantações do Kubernetes e containers. Ela pode ser usada para detectar picos inesperados de CPU em threads e detalhar um intervalo de tempo menor para investigar mais detalhadamente com um flamegraph.

Você começará a ver os dados em cerca de três minutos ou menos. Confira este blog para obter mais informações sobre como ler traces de stack.

kubernetes-universal-profiling-after-agent-install.png


Como trabalhar com o Elastic Observability

Analise os flamegraphs

Em seguida, navegue até Flamegraphs em Universal Profiling no menu à esquerda. Essencialmente, a criação de perfil e os flamegraphs são sinônimos. Ela representa, conforme você lê da esquerda para a direita, qual é o código mais caro ou a função mais cara.

A página de flamegraphs é onde você provavelmente passará mais tempo, especialmente ao depurar e otimizar. Recomendamos que você use este blog para identificar gargalos de desempenho e oportunidades de otimização com flamegraphs. Os três elementos-condições principais a serem procurados são largura, hierarquia e altura.

  • Faça a varredura horizontalmente da esquerda para a direita, concentrando-se na largura para funções com uso intensivo de CPU.
  • Examine verticalmente para verificar a stack e identificar gargalos.
  • Procure stacks muito grandes para identificar possíveis complexidades no código.

kubernetes-universal-profiling-flame-graph-after-agent-install.png

Para começar a explorar, recomenda-se limitar a um thread, host, implantação ou container específico. Basta inserir na barra de busca.

OBSERVAÇÃO: o Elastic Universal Profiling é a única solução de criação de perfil contínua do setor que fornece visibilidade de linguagem mista, do kernel ao código nativo e às linguagens de programação de alto nível, sem exigir símbolos de depuração no host.

universal_differential_flamegraph.png

Ao analisar o gráfico, observe que, quanto mais longa a linha, mais tempo ela leva em termos de tempo de CPU. Se você selecionar uma das linhas, verá um submenu com ainda mais detalhes. Função é a linha de código que foi executada no momento. Você também verá outros detalhes importantes, como Total CPU (CPU total), Annualized CO2 (CO2 anualizado) e Annualized dollar cost (Custo em dólar anualizado).

universal_differential_details.png

Compare o código antes e depois das alterações

Os flamegraphs diferenciais permitem comparar o código antes e depois das alterações, antes de enviá-lo para produção. O turquesa representa melhoria e o vermelho representa regressão.

Na imagem abaixo, você vê que o container otimizado é melhor com base na cor.

universal_differential_good.png

Se você selecionar a seta suspensa em Gained overall performance (Desempenho geral obtido), poderá ver os valores gerais de melhorias.

universal_differential_good_value.png

Em seguida, se você selecionar o ícone Swap sides (Trocar de lado) (o ícone entre os containers sendo comparados com setas apontando para direções opostas), verá que reverter para o código do container anterior à otimização resultará em uma regressão.

universal_differential_bad.png

Se você selecionar a seta suspensa em Lost overall performance (Desempenho geral perdido), poderá ver os valores gerais de regressão.

universal_differential_bad_value.png

Em seguida, se você selecionar Go to monitor (Ir para o monitor), obterá imediatamente alguns insights gerais. Esses gráficos começarão a ser criados à medida que mais testes forem realizados, mas você poderá ver rapidamente a disponibilidade, a duração da execução dos testes e o cronograma, e também poderá detalhar o gráfico em cascata. Para detalhar, clique no ícone em View test run (Ver execução do teste).


Próximas etapas

Agradecemos o tempo dedicado à coleta e análise de logs com o Elastic Cloud. Se você está conhecendo a Elastic, não deixe de fazer uma avaliação gratuita de 14 dias.

Além disso, ao iniciar sua jornada com a Elastic, entenda alguns componentes operacionais, de segurança e de dados que você deve gerenciar como usuário ao fazer a implantação no seu ambiente.


Recursos sobre Observability