Grafana como outra ferramenta para monitoramento técnico de nossos produtos de software

Outro artigo da série Logicify Monitoring Tools fala sobre Grafana. Utilizamos esta ferramenta de software para visualização e análise de dados de projetos internos e externos. Este artigo pode ser útil para diretores técnicos, desenvolvedores, DevOps, administradores de sistema, gerentes de projeto e todas as partes interessadas.


imagem


O que é Grafana?


Grafana é uma plataforma de código aberto para visualização, monitoramento e análise de dados. Essa ferramenta, combinada ao Graylog, faz parte do nosso sistema bidirecional para monitorar o comportamento do usuário e o desempenho do sistema . O Grafana permite que os usuários criem painéis com painéis, cada um dos quais exibe determinados indicadores por um período definido. Cada painel é universal, portanto pode ser personalizado para um projeto específico ou levando em consideração qualquer necessidade de desenvolvimento e / ou negócios.


Nossa equipe do Logicify utiliza principalmente o Grafana em conjunto com o Elasticsearch e o InfluxDB, mas esta ferramenta de software suporta muitas outras fontes de dados (Prometheus, MySQL, Postgres, etc.). Para cada fonte de dados, o Grafana fornece um editor de consultas personalizado e sintaxe especial.


Termos Grafana


  • O painel é o elemento de visualização básico dos indicadores selecionados. O Grafana suporta painéis com gráficos, status único, tabelas, mapas de calor de clique e texto livre, além de integração com plugins oficiais e criados pela comunidade (como um mapa do mundo ou relógio) e aplicativos que também podem ser visualizados. Você pode personalizar o estilo e o formato de cada painel; Todos os painéis podem ser arrastados para um novo local, reorganizados e redimensionados.
  • Painel - um conjunto de painéis separados colocados em uma grade com um conjunto de variáveis ​​(por exemplo, nome do servidor, aplicativo e sensor). Alterando as variáveis, é possível alternar os dados exibidos no painel (por exemplo, dados de dois servidores separados). Todos os painéis podem ser personalizados, além de seccionar e fragmentar os dados apresentados, de acordo com as necessidades do usuário. O projeto Grafana envolve uma grande comunidade de desenvolvedores e usuários de código; portanto, há uma grande variedade de painéis prontos para diferentes tipos de dados e fontes.
  • Nos painéis, você pode usar anotações para exibir eventos específicos em diferentes painéis. As anotações são adicionadas por consultas personalizadas no Elasticsearch; no gráfico, a anotação é exibida com uma linha vermelha vertical. Ao passar o mouse sobre a anotação, é possível obter uma descrição do evento e tags, por exemplo, para rastrear a resposta do servidor com o código de erro 5xx ou reiniciar o sistema. Graças a isso, você pode comparar facilmente o tempo, um evento específico e suas conseqüências no aplicativo, e examinar o comportamento do sistema.

Práticas recomendadas para o uso da ferramenta Grafana com a equipe Logicify


Usando Grafana em projetos internos


Em nosso projeto interno, Internet of Things (solução de monitoramento climático do escritório), conectamos o Grafana ao InfluxDB , um banco de dados de séries temporais, para visualizar as mudanças no clima do escritório e responder de acordo. Um conjunto de sensores mede temperatura, umidade, pressão atmosférica e nível de CO2 em cada zona do nosso escritório em Kherson; esses parâmetros são coletados e visualizados na forma de gráficos Grafana em um monitor de cozinha grande e on-line.


imagem
Painel Grafana com áreas de escritório do Logicify


Por isso, monitoramos constantemente os parâmetros de qualidade do ar e nosso gerente de escritório reage às mudanças: abre janelas, se o nível de CO2 estiver muito alto, liga e desliga o ar condicionado e os umidificadores.


imagem
Painel Grafana com clima de escritório


Graças às anotações de gráficos e séries temporais exibidas na Grafana, analisamos as tendências do microclima nos escritórios por vários meses e temporadas. Também usamos essa ferramenta para visualizar alguns widgets e informações úteis (previsão do tempo, taxas de câmbio, calendários internos) em um monitor de cozinha grande.


Como usar o Grafana em aplicativos Web personalizados


Grafana + Graylog


Utilizamos a ferramenta Graylog para armazenar logs de aplicativos da Web, gerenciá-los e monitorar seu desempenho, tanto no estágio de desenvolvimento quanto no estágio de sua operação. O Grafana é uma ferramenta que converte as revistas armazenadas no Graylog em formas visuais para monitoramento analítico e do sistema. Para um de nossos projetos atuais, a ferramenta Grafana pode ser chamada de interface do usuário para carregar e monitorar o desempenho de aplicativos da web e o fluxo do cliente. As ferramentas Graylog e Grafana existem independentemente uma da outra, não criamos nenhuma ferramenta de integração complexa especial para conectá-las umas às outras. Como o Graylog armazena todos os dados de log no Elasticsearch, uma das fontes de dados da Grafana, simplesmente usamos o índice Elasticsearch específico no qual os logs são armazenados para conectar o Grafana ao Graylog.


Quais métricas podem ser visualizadas no Grafana para um aplicativo da web?


Logs de texto simples ou notificações de erro não são "interessantes" para o Grafana porque seu principal objetivo é visualizar dados na forma de gráficos, tabelas e tabelas. Escrevemos um módulo personalizado para o Django para coletar dados que gostaríamos de rastrear para cada solicitação processada e resposta da rede / funcionário. Os dados incluíram não apenas o status de sucesso / falha, mas também um conjunto de campos estruturados (gerais e relacionados ao projeto), como:


  • versão do aplicativo
  • identificador exclusivo de cada solicitação
  • tempo e status de resposta
  • código de erro (se houver)
  • Endereço IP a partir do qual a solicitação foi enviada
  • informações do usuário (email, nome de usuário para usuários registrados, função, permissões)
  • dispositivo etc.

O Django coloca registros analíticos estruturados pelo usuário no Graylog, que os salva em um fluxo separado. Embora esses dados possam ser visualizados usando os painéis internos do Graylog, eles não parecem tão bons quanto os painéis da Grafana. Portanto, forçamos o Grafana a ler e visualizar esses dados analíticos. Assim, monitoramos o desempenho do aplicativo e baixamos os dados em tempo real e em retrospecto.


imagem


Grafana como uma ferramenta de depuração


Os painéis da Grafana nos ajudam principalmente nos aplicativos de depuração. Se o cliente final relatar um problema, o Grafana nos dará a oportunidade de distinguir erros no lado do cliente / servidor de erros reais ou lacunas na lógica do aplicativo. Nós rastreamos todas as solicitações da Web iniciadas pelo cliente (usando o endereço de e-mail), administradores de aplicativos e o próprio aplicativo por um período especificado e, pelo método de exclusão, encontramos o motivo.


Também depuramos e corrigimos erros se notarmos uma anomalia no painel nos gráficos de carregamento e desempenho do aplicativo. O exemplo de gráfico a seguir mostra o tempo de resposta para solicitações da Web durante um período de tempo. Para cada solicitação da Web, rastreamos os tempos de resposta máximo, mínimo e médio. Se virmos uma solicitação que levou muito tempo para processar, redimensionamos uma certa parte do gráfico e investigamos o problema.


imagem
Exemplo de gráfico Grafana mostrando o tempo de resposta da Web


Outro gráfico mostra a carga do sistema por um período definido e é útil para rastrear o tráfego. Se observarmos uma explosão incomum de atividade, por exemplo, depois de horas ou nos finais de semana, a examinaremos. Esse aumento pode ser causado, por exemplo, pelos rastreadores do Google que indexam o conteúdo do site ou por robôs maliciosos que analisam o sistema em busca de vulnerabilidades. Novamente, cada caso é investigado e considerado em conformidade.


imagem
Exemplo de gráfico Grafana mostrando o download do aplicativo


O Grafana possui um mecanismo de notificação embutido (por exemplo, via email ou notificações via Slack) de acordo com certas regras. Não usamos esse recurso da ferramenta Grafana, pois temos todas as notificações configuradas no Graylog . No entanto, alguns problemas com o desempenho do sistema só podem ser vistos após a execução do programa, por exemplo, um tempo de resposta incomumente longo a uma solicitação da Web. Não receberemos notificação Graylog disso, mas a anomalia será claramente visível no gráfico Grafana. Portanto, as duas ferramentas se complementam quando descobrimos algum problema: em um nível alto, verificamos o Grafana para entender o que aconteceu e por quê e, em seguida, aprofundamos o Graylog usando um identificador de solicitação específico.


Diferentemente do Graylog, usado para aplicativos desenvolvidos e usados, o Grafana é usado apenas para aplicativos usados. A única exceção ao usar o Grafana para um aplicativo que ainda está na fase de desenvolvimento é o teste de desempenho. Emulamos a inicialização do sistema usando o JMeter e depois checamos os painéis da Grafana para ver como ela reage.


Grafana como uma ferramenta de inteligência de negócios


Além dos objetivos de rastreamento e depuração de desempenho, os painéis da Grafana são uma ferramenta poderosa para tomar decisões de negócios informadas. Quando configurado corretamente (de preferência em conjunto com o serviço Google Analytics), o Grafana pode visualizar análises personalizadas do comportamento do usuário no sistema na forma de gráficos de pizza, histogramas de tempo e outros elementos gráficos. Com base nelas, as partes interessadas no produto podem tomar decisões sobre o dimensionamento adicional do aplicativo, adição ou remoção de algumas funções e melhoria do ciclo de interação com os clientes.


imagem
Um exemplo de painel da Grafana que exibe o comportamento do usuário em um aplicativo de comércio eletrônico


Como o painel acima é mais focado nos negócios, os desenvolvedores o utilizam para fins internos, como ferramenta de segurança para rastrear o fluxo de clientes em um aplicativo de comércio eletrônico: registro, autorização, pedidos feitos durante um determinado período de tempo.


Aqui estão dois projetos do mundo real nos quais a Grafana conseguiu aumentar a usabilidade de um aplicativo da web.


  • Com a ajuda da Grafana, monitoramos regularmente o status de pedidos periódicos no sistema e filtramos pedidos com falha. Esses pedidos são baseados em uma assinatura, ou seja, são gerados no sistema todos os meses e o dinheiro é debitado automaticamente das contas bancárias dos clientes. Às vezes, os pagamentos falham (dinheiro / recusa insuficiente de uma instituição financeira) e, em seguida, os administradores de sistema verificam a situação e entram em contato com os clientes para gerar novamente o pedido manualmente. Assim, nem uma única ordem desaparece de vista; clientes e fornecedores estão satisfeitos.
  • Usando relatórios criados usando o Grafana para um aplicativo de comércio eletrônico, descobrimos que uma grande porcentagem de novos clientes sai da página de checkout, embora eles já tenham itens em suas cestas. Esta conclusão foi apoiada pelos relatórios do serviço Google Analytics, portanto, o procedimento de pagamento foi analisado passo a passo e aprimorado: agora os usuários podem fazer um pedido em 2 cliques. Como resultado, a taxa de conversão de visitantes para clientes aumentou - o lucro do fornecedor também aumentou.

O Grafana é um componente importante do sistema de monitoramento da equipe Logicify para projetos internos e externos. Esta ferramenta de software é de código aberto, além de uma comunidade grande e ativa de desenvolvedores. Mas acima de tudo, gostamos de flexibilidade - ele suporta muitas fontes de dados e facilita a personalização de painéis e painéis.


Artigos relacionados:


Source: https://habr.com/ru/post/pt431122/


All Articles