Sistema de monitoramento Prometheus
À medida que os sistemas e aplicativos aumentam em complexidade, o monitoramento se torna essencial para garantir o desempenho, a confiabilidade e a escalabilidade ideais. O Prometheus, um kit de ferramentas de monitoramento e alerta de código aberto, tornou-se uma das soluções mais populares para gerenciar e visualizar métricas de vários sistemas. Originalmente desenvolvido pela SoundCloud, o Prometheus agora é um projeto da Cloud Native Computing Foundation (CNCF) e tem ampla adoção em todos os setores.
Neste artigo, exploraremos os principais recursos do Prometheus, como ele funciona e as etapas necessárias para configurá-lo para monitorar sua infraestrutura e seus aplicativos.
O que é o Prometheus?
O Prometheus é um sistema de monitoramento avançado, projetado para coletar, armazenar e consultar dados de séries temporais, que são medições ou eventos rastreados ao longo do tempo. Os dados coletados pelo Prometheus podem ser visualizados, analisados e usados para acionar alertas, ajudando as equipes a se manterem informadas sobre a integridade e o desempenho da infraestrutura.
O Prometheus é conhecido por vários recursos importantes:
- Modelo de dados de série temporal: O Prometheus armazena dados como séries temporais, o que significa que as métricas são registradas em intervalos de tempo.
- Monitoramento baseado em pull: Em vez de os sistemas monitorados enviarem as métricas para o servidor, o Prometheus usa um modelo baseado em pull para extrair métricas dos pontos de extremidade.
- Linguagem de consulta avançada (PromQL): O Prometheus fornece uma poderosa linguagem de consulta, PromQL, que permite aos usuários filtrar e agregar métricas em tempo real.
- Alertas: O Prometheus integra-se ao Alertmanager para definir regras e enviar notificações quando condições específicas são atendidas.
- Descoberta de serviços: O Prometheus pode descobrir e extrair automaticamente métricas de ambientes que mudam dinamicamente, como o Kubernetes.
Como o Prometheus funciona
O Prometheus segue uma arquitetura simples, porém robusta, projetada para monitorar dados de séries temporais. Veja como ele funciona:
- Coleta de métricas (Scraping): O Prometheus coleta periodicamente métricas de pontos de extremidade HTTP (chamados de exportadores) expostos por aplicativos ou sistemas.
- Armazenamento de dados de séries temporais: Depois de coletadas, o Prometheus armazena as métricas em um banco de dados de séries temporais, em que cada ponto de dados é associado a um carimbo de data/hora e a um conjunto de rótulos.
- Consulta com o PromQL: Os usuários podem consultar as métricas armazenadas usando a linguagem de consulta do Prometheus, PromQL, para gerar gráficos, painéis de controle ou alertas.
- Alertas: Com base em condições predefinidas, o Prometheus pode disparar alertas usando o Alertmanager, que pode enviar notificações por e-mail, Slack, PagerDuty ou outros serviços.
O Prometheus oferece suporte a um modelo baseado em pull, no qual ele periodicamente extrai métricas de pontos de extremidade que expõem métricas em um formato que o Prometheus pode entender. Isso o torna ideal para monitorar sistemas distribuídos e microsserviços em que o dimensionamento e os ambientes dinâmicos são comuns.
Componentes do Prometheus
O Prometheus é formado por vários componentes principais, cada um com uma finalidade diferente:
- Servidor Prometheus: O componente central responsável pela coleta, armazenamento e consulta de métricas. Ele coleta os endpoints de destino e armazena as métricas em um banco de dados de série temporal.
- Exportadores: São aplicativos ou serviços que expõem as métricas em um formato compatível com o Prometheus. Os exportadores comuns incluem:
- Node Exporter: coleta métricas de hardware e de nível de sistema operacional.
- Exportador Blackbox: para sondagem de endpoints por HTTP, DNS, TCP etc.
- Exportadores específicos de aplicativos: Muitos bancos de dados (como PostgreSQL, MySQL) e serviços têm seus próprios exportadores.
- Alertmanager: O Prometheus usa o Alertmanager para lidar com alertas. Ele pode encaminhar alertas para diferentes receptores, como Slack, e-mail ou SMS, e gerenciar regras de silenciamento e inibição.
- PromQL (Prometheus Query Language): Uma linguagem de consulta avançada usada para recuperar e manipular dados de séries temporais.
- Pushgateway: Um componente usado para trabalhos efêmeros ou de curta duração que não podem expor métricas por meio de um scrape direto (por exemplo, trabalhos em lote). O Pushgateway permite que esses trabalhos enviem suas métricas para o Prometheus.
- Grafana: Embora não faça parte do próprio Prometheus, o Grafana é uma ferramenta popular de código aberto usada para visualizar dados do Prometheus e criar painéis interativos.
Configuração passo a passo do Prometheus
Veja como você pode configurar o Prometheus em um servidor Linux e começar a monitorar as métricas do sistema:
Etapa 1: instalar o Prometheus
- Faça o download do Prometheus: Visite a página de downloads do Prometheus para obter a versão mais recente do Prometheus e execute os seguintes comandos para baixar e extrair o Prometheus:wget https://github.com/prometheus/prometheus/releases/download/v2.32.1/prometheus-2.32.1.linux-amd64.tar.gz tar -xvf prometheus-2.32.1.linux-amd64.tar.gz cd prometheus-2.32.1.linux-amd64
- Inicie o Prometheus: Execute o seguinte comando para iniciar o Prometheus:./prometheus –config.file=prometheus.yml
Por padrão, o Prometheus é executado na porta 9090 e você pode acessar sua interface da Web navegando para http://localhost:9090 no seu navegador.
Etapa 2: configurar o Prometheus
A configuração principal do Prometheus é feita por meio do arquivo prometheus.yml. Esse arquivo informa ao Prometheus quais alvos (exportadores) devem ser coletados e com que frequência.
Aqui está uma configuração básica do prometheus.yml:
Você pode adicionar mais alvos ou exportadores conforme necessário, e o Prometheus começará a fazer o scraping deles automaticamente.
Etapa 3: instalar o exportador de nós (para métricas do sistema)
Para monitorar as métricas do sistema, como CPU, memória, disco e uso da rede, você pode instalar o Node Exporter.
- Faça download do Node Exporter:wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz cd node_exporter-1.3.1.linux-amd64
- Iniciar o Node Exporter: execute o seguinte comando para iniciar o Node Exporter:./node_exporter
Por padrão, o Node Exporter é executado na porta 9100 e expõe métricas como uso da CPU, estatísticas de memória, E/S de disco e métricas de rede.
- Configure o Prometheus para fazer scraping do Node Exporter: adicione o seguinte trabalho ao arquivo de configuração prometheus.yml:scrape_configs: – nome_do_trabalho: ‘node_exporter’ static_configs: – targets: [‘localhost:9100’]
- Reinicie o Prometheus: Depois de fazer alterações no arquivo de configuração, reinicie o Prometheus para começar a extrair métricas do Node Exporter.
Etapa 4: visualizar métricas com o Grafana
Para visualizar as métricas do Prometheus, o Grafana é uma excelente ferramenta. Ela se integra perfeitamente ao Prometheus e permite que você crie painéis interativos.
- Instale o Grafana: No Linux, você pode instalar o Grafana seguindo as instruções no site do Grafana.
- Configure o Prometheus como uma fonte de dados: Depois de instalar o Grafana:
- Faça login no Grafana (http://localhost:3000).
- Vá para Configuração > Fontes de dados e adicione o Prometheus como uma fonte de dados (http://localhost:9090).
- Criar painéis: Agora você pode criar seus próprios painéis personalizados ou importar painéis pré-criados do marketplace do Grafana para visualizar métricas como uso da CPU, utilização da memória, desempenho do disco e muito mais.
Etapa 5: configurar alertas
O Prometheus permite que você configure alertas com base em condições específicas, como alto uso da CPU, pouco espaço em disco ou falhas de aplicativos.
- Definir regras de alerta: Os alertas são definidos em um arquivo rules.yml separado. Aqui está um exemplo de regra de alerta que é acionada quando o uso da CPU é superior a 80%:groups: – name: example_alerts rules: – alert: HighCPUUsage expr: 100 – (avg by(instance) (rate(node_cpu_seconds_total{mode=”idle”}[5m])) * 100) > 80 for: 5m labels: severity: warning annotations: summary: “High CPU usage detected on {{ $labels.instance }}” description: “O uso da CPU está acima de 80% por mais de 5 minutos.”
- Configurar o Alertmanager: Instale e configure o Alertmanager para enviar notificações por e-mail, Slack ou outros canais quando um alerta for acionado.
Casos de uso do Prometheus
O Prometheus é usado em uma ampla gama de cenários para monitorar vários tipos de sistemas, incluindo:
- Monitoramento de infraestrutura: Colete métricas de servidores, bancos de dados e dispositivos de rede para garantir que sua infraestrutura esteja funcionando sem problemas.
- Monitoramento de aplicativos: Rastreie métricas de desempenho, como latência, taxa de solicitação, taxas de erro e consumo de recursos para aplicativos, especialmente em arquiteturas de microsserviços.
- Monitoramento de Kubernetes: O Prometheus se integra nativamente ao Kubernetes e pode descobrir e extrair automaticamente métricas de pods e serviços em um cluster do Kubernetes.
- Métricas personalizadas: O Prometheus permite instrumentar seus próprios aplicativos para expor métricas personalizadas, fornecendo insights profundos sobre comportamentos específicos de aplicativos.
Conclusão
O Prometheus é uma solução de monitoramento avançada e flexível que permite a coleta, a consulta e o alerta em tempo real com base em dados de séries temporais. Quer você esteja monitorando métricas no nível do sistema ou o desempenho de aplicativos em uma arquitetura de microsserviços, o Prometheus é uma ferramenta valiosa para garantir a integridade e a estabilidade da sua infraestrutura.
Seguindo as etapas descritas neste artigo, você pode começar a usar o Prometheus, coletar métricas de seus sistemas e visualizá-las usando o Grafana. Com o tempo, o Prometheus pode ajudá-lo a obter insights sobre tendências de desempenho, detectar anomalias e responder a incidentes rapidamente, melhorando o tempo de atividade e a confiabilidade do sistema.