Olá, meu nome é Eugene, sou líder de equipe B2B na Citymobil. Uma das tarefas da nossa equipe é apoiar integrações para pedidos de táxi de parceiros, e para garantir um serviço estável devemos sempre entender o que está acontecendo em nossos microsserviços. E para isso você precisa monitorar constantemente os logs.
No Citymobil, usamos a pilha ELK (ElasticSearch, Logstash, Kibana) para trabalhar com logs, e a quantidade de dados que chega lá é enorme. Encontrar problemas nessa massa de solicitações que podem surgir após a implantação de um novo código é bastante difícil. E para sua identificação visual, o Kibana possui uma seção Dashboard.
Existem alguns artigos no Habré com exemplos de como configurar uma pilha ELK para receber e armazenar dados, mas não há materiais relevantes sobre a criação de um Dashboard. Portanto, quero mostrar como criar uma representação visual de dados com base nos logs recebidos no Kibana.
Fixação
Para deixar mais claro, criei uma imagem Docker com ELK e Filebeat. E colocado em um recipiente um pequeno
Clone o repositório de configuração docker-compose
e configurações ELK e inicie-o com o comando docker-compose up
. Não adicionar intencionalmente uma chave -d
para ver o progresso da pilha ELK.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Se tudo estiver configurado corretamente, veremos uma entrada nos logs (talvez não imediatamente, o processo de lançamento de um contêiner com toda a pilha pode levar vários minutos):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
Em localhost:5061
Kibana deve abrir.
A única coisa que precisamos configurar é criar um padrão de índice para o Kibana com informações sobre quais dados exibir. Para fazer isso, executaremos uma solicitação curl ou realizaremos uma série de ações na interface gráfica.
$ curl -XPOST -D- 'http://localhost:5601/api/saved_objects/index-pattern'
-H 'Content-Type: application/json'
-H 'kbn-xsrf: true'
-d '{"attributes":{"title":"logstash-*","timeFieldName":"@timestamp"}}'
Criando um padrão de índice por meio da GUI
Para configurar, selecione a seção Descobrir no menu esquerdo e acesse a página de criação do padrão de índice.
Ao clicar no botão “Criar padrão de índice”, chegamos à página de criação de índice. No campo "Nome do padrão de índice", insira "logstash-*". Se tudo estiver configurado corretamente, abaixo o Kibana mostrará os índices que se enquadram na regra.
Na próxima página, selecione o campo-chave com carimbo de data e hora, no nosso caso é @timestamp
.
Isso abrirá a página de configurações de índice, mas nenhuma ação adicional será necessária de nossa parte neste momento.
Agora podemos ir novamente para a seção Descobrir, onde veremos as entradas do log.
Painel
No menu esquerdo, clique na seção de criação do Dashboard e acesse a página correspondente.
Clique em “Criar novo dashboard” e acesse a página de adição de objetos ao Dashboard.
Clique no botão "Criar novo" e o sistema solicitará que você selecione o tipo de exibição de dados. Kibana tem um grande número deles, mas veremos como criar uma representação gráfica da "Barra Vertical" e uma "Tabela de Dados" tabular. Outros tipos de apresentação são configurados de forma semelhante.
Alguns objetos disponíveis são rotulados como B e E, o que significa que o formato é experimental ou está em teste beta. Com o tempo, o formato pode mudar ou desaparecer completamente do Kibana.
Barra vertical
Para o exemplo da “Barra Vertical”, vamos criar um histograma da proporção de status de resposta bem e mal sucedidos do nosso serviço. Ao final das configurações, obtemos o seguinte gráfico:
Classificaremos todas as solicitações com status de resposta < 400 como bem-sucedidas e >= 400 como problemáticas.
Para criar um gráfico de “Barras Verticais”, precisamos selecionar uma fonte de dados. Selecione o padrão de índice que criamos anteriormente.
Por padrão, um único gráfico sólido aparecerá após a seleção de uma fonte de dados. Vamos configurar isso.
No bloco “Baldes”, pressione o botão “Adicionar”, selecione “X-asis” e configure o eixo X. Vamos reservar os carimbos de data e hora para o recebimento dos lançamentos no log. No campo “Agregação” selecione “Histograma de Data”, e no “Campo” selecione “@timestamp”, indicando o campo de hora. Vamos deixar o “Intervalo mínimo” no estado “Auto” e ele se ajustará automaticamente ao nosso display.
Ao clicar no botão “Atualizar”, veremos um gráfico com a quantidade de solicitações a cada 30 segundos.
Agora vamos configurar as colunas ao longo do eixo Y. Agora estamos exibindo o número total de solicitações no intervalo de tempo selecionado.
Vamos alterar o valor de "Agregação" para "Sum Bucket", o que nos permitirá combinar dados para solicitações bem-sucedidas e malsucedidas. No bloco Bucket -> Aggregation, selecione a agregação por "Filtros" e defina a filtragem por "statusCode >= 400". E no campo “Rótulo personalizado” indicamos o nome do nosso indicador para uma exibição mais compreensível na legenda do gráfico e na lista geral.
Ao clicar no botão “Atualizar” no bloco de configurações, obteremos um gráfico com solicitações de problemas.
Se você clicar no círculo ao lado da legenda, aparecerá uma janela na qual você poderá alterar a cor das colunas.
Agora vamos adicionar dados sobre solicitações bem-sucedidas ao gráfico. Na seção "Métricas", clique no botão "Adicionar" e selecione "Eixo Y".
Na métrica criada, fazemos as mesmas configurações das solicitações erradas. Somente no filtro especificamos "statusCode < 400".
Ao alterar a cor da nova coluna, obtemos uma exibição da proporção de solicitações problemáticas e bem-sucedidas.
Ao clicar no botão “Salvar” na parte superior da tela e especificar o nome, veremos o primeiro gráfico no Dashboard.
Tabela de dados
Agora considere a visualização tabular "Tabela de Dados". Vamos criar uma tabela com uma lista de todas as URLs que foram solicitadas e a quantidade dessas solicitações. Tal como acontece com o exemplo da Barra Vertical, primeiro selecionamos uma fonte de dados.
Em seguida, será exibida na tela uma tabela com uma coluna, que mostra o número total de solicitações para o intervalo de tempo selecionado.
Alteraremos apenas o bloco "Baldes". Clique no botão "Adicionar" e selecione "Dividir linhas".
No campo “Agregação”, selecione “Termos”. E no campo “Campo” que aparece selecione “url.keyword”.
Ao especificar o valor “Url” no campo “Rótulo personalizado” e clicar em “Atualizar”, obteremos a tabela desejada com a quantidade de solicitações para cada uma das URLs no período de tempo selecionado.
Na parte superior da tela, clique novamente no botão "Salvar" e especifique o nome da tabela, por exemplo URLs. Vamos voltar ao Dashboard e ver as duas visualizações criadas.
Trabalhando com Painel
Ao criar o Dashboard, definimos apenas os parâmetros de visualização principal nas configurações do objeto de exibição. Não faz sentido especificar dados para filtros em objetos, por exemplo, “intervalo de datas”, “filtragem por agente de usuário”, “filtragem por país de solicitação”, etc. É muito mais conveniente especificar o período de tempo desejado ou definir a filtragem necessária no painel de consulta, localizado acima dos objetos.
Os filtros adicionados neste painel serão aplicados a todo o Dashboard e todos os objetos de exibição serão reconstruídos de acordo com os dados filtrados reais.
Conclusão
Kibana é uma ferramenta poderosa que permite visualizar qualquer dado de maneira conveniente. Tentei mostrar a configuração dos dois principais tipos de display. Mas outros tipos são configurados de maneira semelhante. E a abundância de configurações que deixei “nos bastidores” permitirá que você personalize gráficos com muita flexibilidade para atender às suas necessidades.
Fonte: habr.com