Uma introdução ao Prometheus e ao Grafana

O Prometheus é um sistema de monitoramento baseado em métricas de código aberto. Ele coleta dados de serviços e hosts enviando solicitações HTTP em endpoints de métricas. Em seguida, ele armazena os resultados em um banco de dados de séries temporais e os disponibiliza para análise e alerta.

Por que monitorar?

  • Ativa alertas quando as coisas dão errado, de preferência antes que dêem errado. Para que alguém possa dar uma olhada.
  • Ele fornece informações para permitir a análise, depuração e resolução do problema.
  • Ele permite que você veja tendências/mudanças ao longo do tempo. Por exemplo, quantas sessões ativas em um determinado momento. Isso ajuda nas decisões de design e planejamento de capacidade.

O monitoramento geralmente está relacionado a eventos. Um evento pode incluir o recebimento de uma solicitação HTTP, o envio de uma resposta, a leitura do disco, o login de um usuário. O monitoramento de um sistema pode incluir criação de perfil, registro, rastreamento, métricas, alertas e visualização.

Monitoramento de caixa preta x caixa branca

O monitoramento se enquadra em duas categorias principais:

monitoramento de caixa preta

No monitoramento Blackbox, o monitoramento está no nível do aplicativo ou do host, pois eles são observados de fora. Isso pode ser bastante limitante.

Monitoramento de caixa branca

O monitoramento de caixa branca significa monitorar os componentes internos de um serviço. Isso exporia dados sobre o estado e o desempenho dos componentes internos.

Os quatro sinais dourados

De acordo com o Googlese você puder medir apenas quatro métricas de seu sistema voltado para o usuário, concentre-se nas quatro seguintes, chamadas de quatro sinais de ouro:

#1. Latência

O tempo que leva para atender a uma solicitação – bem-sucedida ou com falha. É importante rastrear não apenas as solicitações bem-sucedidas, mas também as que falharam.

  Monitore quais alimentos você queimou com seu nível de atividade diária

#2. Tráfego

Uma medida de quanta demanda está sendo colocada em seu sistema. Para um serviço da Web, geralmente são solicitações HTTP por segundo.

#3. Erros

A taxa de solicitações que falham.

#4. Saturação

Quão completo é o seu serviço. O aumento da latência costuma ser um indicador importante de saturação. Muitos sistemas degradam em desempenho muito antes de atingirem 100% de utilização.

Tipos de métricas do Prometheus

As métricas do Prometheus são de quatro tipos principais:

#1. Contador

O valor de um contador sempre aumentará. Ele nunca pode diminuir, mas pode ser redefinido para zero. Portanto, se uma raspagem falhar, isso significa apenas um ponto de dados perdido. O aumento cumulativo estaria disponível na próxima leitura. Exemplos:

  • Número total de solicitações HTTP recebidas
  • O número de exceções.

#2. Medidor

Um medidor é um instantâneo em qualquer ponto no tempo. Pode aumentar ou diminuir. Se uma busca de dados falhar, você perde uma amostra; a próxima busca pode mostrar um valor diferente: exemplos de espaço em disco, uso de memória.

#3. Histograma

Um histograma mostra observações e as conta em baldes configuráveis. Eles são usados ​​para coisas como duração da solicitação ou tamanhos de resposta. Por exemplo, você pode medir a duração de uma solicitação HTTP específica. O histograma terá um conjunto de baldes, digamos 1 ms, 10 ms e 25 ms. Em vez de armazenar todas as durações de cada solicitação, o Prometheus armazenará a frequência das solicitações que caem em um intervalo específico.

#4. Resumo

Semelhante às observações de amostras de histograma, normalmente solicita durações ou tamanhos de resposta. Ele fornecerá uma contagem total de observações e uma soma de todos os valores observados, permitindo que você calcule a média dos valores observados. Por exemplo, em um minuto, você teve três solicitações que levaram 2,3,4 segundos. A soma seria 9 e a contagem seria 3. A latência seria 3 segundos.

  Como filmar com sua própria tela verde usando seu iPhone

Componentes do ecossistema Prometheus

O servidor Prometheus

Coleta métricas, armazena-as e disponibiliza-as para consulta, envia alertas com base nas métricas coletadas.

Raspagem

Prometeu é um sistema baseado em pull. Para buscar métricas, o Prometheus envia uma solicitação HTTP chamada scrape. Ele envia raspagens para alvos com base em sua configuração.

Cada alvo (definido estaticamente ou descoberto dinamicamente) é raspado em um intervalo regular (intervalo de raspagem). Cada raspagem lê o terminal HTTP /metrics para obter o estado atual das métricas do cliente e persiste os valores no banco de dados de séries temporais do Prometheus.

Existem mais bancos de dados de séries temporais para soluções de monitoramento que você pode querer explorar.

bibliotecas cliente

Para monitorar um serviço, você precisa adicionar instrumentação ao seu código. Existem bibliotecas de cliente disponíveis para todos os idiomas e tempos de execução populares. Usando essas bibliotecas, depois de adicionar algumas linhas de código, seu código pode começar a emitir métricas. Isso é chamado de instrumentação direta. Essas bibliotecas permitem que você defina métricas internas e também as exponha por meio de um endpoint HTTP. Quando o Prometheus extrai o endpoint HTTP das métricas, a biblioteca cliente envia as métricas para o servidor.

As bibliotecas oficiais do cliente são oferecidas pelo Prometheus para Go, Java, Python e Ruby. Prometheus tem um ecossistema aberto. Também existem bibliotecas de cliente construídas pela comunidade disponíveis para C, PHP, Node.js, C#/.NET e muitos outros.

exportadores

Muitos aplicativos expõem métricas em formato não Prometheus. Para esses e para aplicativos que você não possui ou para os quais não tem acesso ao código, não é possível adicionar instrumentação diretamente. Por exemplo, servidor MySQL, Kafka, JMX, HAProxy e NGINX. Nesses cenários, você usa exportadores.

Um exportador é uma ferramenta que você implanta junto com o aplicativo do qual deseja obter métricas. Um exportador age como um proxy entre o aplicativo e o Prometheus. Ele receberá requisições do servidor Prometheus, coletará dados dos logs de acesso, logs de erros da aplicação, transformará no formato correto e por fim retornará ao servidor Prometheus.

  Como criar Emoji Mini no Teclado do Google

Alguns dos exportadores populares são:

  • janelas – para métricas do servidor Windows
  • – para métricas de servidor Linux
  • Caixa preta – para DNS e métricas de desempenho do site
  • JMXName – para métricas de aplicativos baseados em Java

Depois que os aplicativos forem instrumentados ou os exportadores estiverem instalados, você precisará informar ao Prometheus onde eles estão. Isso pode ser feito usando a configuração estática. No caso de ambientes dinâmicos, isso não pode ser feito; portanto, a descoberta de serviço é usada.

Alerta

O alerta com o Prometheus consiste em duas partes –

As regras de alerta enviam alertas para o Alertmanager.

O Alertmanager então gerencia esses alertas. Ele envia notificações usando muitas integrações prontas para uso, como e-mail, Slack, Hipchat e PagerDuty. O Alertmanager também pode realizar silenciamento ou agregação para reduzir o número de notificações.

Aqui está o guia para monitorar o servidor Linux usando Prometheus e Dashboard.

Visualizando com Dashboards

O Prometheus tem várias APIs que usam as consultas do PromQL para produzir dados brutos para visualizações.

Embora o Prometheus inclua um navegador de expressão que pode ser usado para consultas ad hoc, a melhor ferramenta disponível é Grafana. O Grafana se integra totalmente ao Prometheus e pode produzir uma ampla variedade de painéis.

Você precisará configurar o Prometheus como fonte de dados para o Grafana.

Você pode adicionar painéis por:

  • Importando painéis criados pela comunidade
  • Construindo o seu próprio
  • Usando um painel predefinido.

É assim que um painel de exportador de nó predefinido se parece:

O Grafana possui um módulo worldPing que permite monitorar métricas de desempenho de sites e DNS em todo o mundo.

Resumo

Prometheus tem muito poucos requisitos. Pode ser bastante simples de executar, pois é um único binário com um arquivo de configuração. Ele pode lidar com milhares de alvos e ingerir milhões de amostras por segundo. O Prometheus foi projetado para rastrear o sistema geral, integridade e comportamento do sistema.

O Grafana é a melhor ferramenta disponível para visualização de métricas e integra-se perfeitamente com Prometeu.