image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Diego Silva
Diego Silva12/07/2023 10:42
Compartilhe

Monitoramento das apis em Java

  • #Spring Framework
  • #Java

À medida que empresas e organizações buscam oferecer serviços cada vez mais robustos, escaláveis e confiáveis, o monitoramento de aplicativos desempenha um papel crucial na garantia de que tudo esteja funcionando conforme o esperado. Nesse contexto, surgem diversas ferramentas que auxiliam nessa tarefa. Hoje, iremos focar nossa análise em duas ferramentas amplamente utilizadas: Prometheus e Grafana. Embora ambos tenham como objetivo fornecer informações valiosas sobre o estado e o desempenho dos aplicativos, cada um possui abordagens e recursos diferentes.

O Prometheus é um sistema de monitoramento e alerta de código aberto, desenvolvido originalmente pelo SoundCloud, que se tornou parte da Cloud Native Computing Foundation (CNCF). Ele é projetado para monitorar métricas de aplicativos e sistemas, coletando dados de vários alvos usando um modelo de coleta de dados baseado em pull (busca ativa). O Prometheus possui uma arquitetura centralizada, onde os agentes chamados "exporters" coletam e expõem as métricas, e o servidor Prometheus coleta, armazena e processa esses dados. Ele oferece uma linguagem de consulta flexível chamada PromQL, que permite aos usuários executar consultas complexas e criar alertas com base nas métricas coletadas. O Prometheus também possui um painel básico para visualização de métricas, mas é nas integrações com outras ferramentas, como o Grafana, que ele brilha.

Grafana, por outro lado, é uma plataforma de visualização de dados de código aberto e muito popular. Ele suporta uma ampla variedade de fontes de dados, incluindo o Prometheus, e fornece recursos avançados de visualização, criação de painéis e alertas. O Grafana permite a criação de painéis personalizados e a exibição de métricas em tempo real de várias fontes em um único local. Ele oferece uma interface amigável e intuitiva, permitindo aos usuários criar gráficos, tabelas, mapas e painéis interativos, com suporte a filtragem e drill-down. Além disso, o Grafana possui uma comunidade ativa que desenvolve e compartilha plugins e painéis personalizados, estendendo ainda mais suas capacidades.

A combinação do Prometheus e Grafana permite um monitoramento poderoso e flexível de aplicativos e sistemas. O Prometheus coleta e armazena as métricas, enquanto o Grafana oferece uma interface rica e personalizável para visualização e análise desses dados. Com o Grafana, os usuários podem criar painéis dinâmicos e informativos, extraindo insights valiosos para tomar decisões informadas e identificar problemas rapidamente. Além disso, o Prometheus fornece recursos avançados de alerta, permitindo que os usuários definam condições e notificações personalizadas com base em métricas específicas.

No entanto, é importante ressaltar que o Prometheus e o Grafana não são as únicas opções disponíveis no mercado. Existem outras ferramentas de monitoramento e visualização, como o InfluxDB e o Kibana, que também são amplamente utilizadas. A escolha da ferramenta ideal dependerá dos requisitos específicos do projeto e das preferências da equipe de operações.

Em resumo, o Prometheus e o Grafana são ferramentas poderosas que, quando combinadas, fornecem um ambiente completo de monitoramento e visualização de dados. O Prometheus coleta e armazena métricas, enquanto o Grafana oferece uma interface rica e personalizável para visualizar e analisar esses dados. Com essas ferramentas, as empresas podem obter insights valiosos sobre o desempenho de seus aplicativos e sistemas, garantindo uma melhor experiência para seus usuários.

Vamos fazer a configuração do prometheus:

Passo 1: Adicionar dependências ao arquivo pom.xml

<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.7.0</version>
 </dependency>

Passo 2: Configurar o Prometheus no arquivo application.properties

management.endpoints.web.exposure.include=prometheus
management.metrics.export.prometheus.enabled=true

Essas configurações habilitam o endpoint /prometheus para acessar as métricas do Prometheus e expõem todos os endpoints do Spring Boot Actuator.

Passo 3: Iniciar o aplicativo e acessar as métricas

Agora você pode iniciar o seu aplicativo Spring Boot e acessar as métricas expostas pelo Prometheus. Basta acessar http://localhost:8080/actuator/prometheus (considerando que o aplicativo está sendo executado localmente na porta 8080) para ver as métricas em formato Prometheus.

Passo 4: Neste artigo docker-compose, você encontrará as imagens do Prometheus e do Grafana configuradas.

version: '3.1'
services:
 prometheus:
 image: prom/prometheus:latest
 container_name: prometheus
 volumes:
 - "./src/main/resources/prometheus.yml:/etc/prometheus/prometheus.yml"
 command:
 - "--config.file=/etc/prometheus/prometheus.yml"
 ports:
 - "9090:9090"


 grafana:
 image: grafana/grafana:latest
 container_name: grafana
 ports:
 - "3000:3000"

volumes:
dev_data: 

Neste exemplo:

O serviço prometheus utiliza a imagem oficial do Prometheus (prom/prometheus) e expõe a porta 9090 do host para acessar a interface web do Prometheus.

O arquivo prometheus.yml é mapeado para o diretório /etc/prometheus/prometheus.yml dentro do container Prometheus para fornecer a configuração personalizada. Certifique-se de ter um arquivo prometheus.yml no mesmo diretório do docker-compose.yml para ser mapeado corretamente.

O comando --config.file=/etc/prometheus/prometheus.yml é usado para informar ao Prometheus o local do arquivo de configuração.

O serviço grafana utiliza a imagem oficial do Grafana (grafana/grafana) e expõe a porta 3000 do host para acessar a interface web do Grafana.

O diretório grafana_data é mapeado para o diretório /var/lib/grafana dentro do container Grafana para persistir os dados.

A dependência depends_on é usada para garantir que o serviço do Prometheus seja iniciado antes do serviço do Grafana.

Certifique-se de estar no diretório onde o arquivo docker-compose.yml está localizado e execute o comando docker-compose up para iniciar os serviços do Prometheus e Grafana.

Depois de iniciados, você poderá acessar o Prometheus em http://localhost:9090 e o Grafana em http://localhost:3000 para configurar painéis, métricas e visualizações.

Passo 5: O arquivo prometheus.yml é responsável por configurar o Prometheus para coletar métricas de diferentes alvos. Aqui está um exemplo básico de como você pode configurar o arquivo prometheus.yml

global:
scrape_interval:     15s # By default, scrape targets every 15 seconds.

# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
#external_labels:
 # monitor: 'codelab-monitor'

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
#  - job_name: 'prometheus'

  # Override the global default and scrape targets from this job every 5 seconds.
#    scrape_interval: 5s

#   static_configs:
#      - targets: ['localhost:9090']


- job_name: 'nome do seu projeto'

  # Override the global default and scrape targets from this job every 5 seconds.
  scrape_interval: 5s
  metrics_path: "/actuator/prometheus"
  static_configs:
    - targets: ['host.docker.internal:8080']
Compartilhe
Comentários (0)