Monitoramento auto-hospedado para aplicativos de inicialização Spring

Monitoramento auto-hospedado para aplicativos de inicialização Spring

1. Introdução

Um dos muitos recursos excelentes do Spring Boot é o conjunto deactuators integrados. Esses atuadores oferecem uma maneira fácil de monitorar e controlar praticamente todos os aspectos de um aplicativo Spring Boot.

Neste tutorial, veremos como usarmetrics actuator para criar uma solução de monitoramento auto-hospedada para aplicativos Spring Boot.

2. Banco de Dados de Métricas

The first part of monitoring Spring Boot applications is choosing a metrics database. Por padrão, o Spring Boot irá configurar um registro de métricasMicrometer em cada aplicativo.

Essa implementação padrão coleta um conjunto predefinido de métricas de aplicativo, como uso de memória e CPU, solicitações HTTP e outras. Masthese metrics are stored in memory only, o que significa que serão perdidos sempre que o aplicativo for reiniciado.

Para criar uma solução de monitoramento auto-hospedada, primeiro devemos escolher um banco de dados de métricas que mora fora do aplicativo Spring Boot. As seções a seguir discutirão apenas algumas das opções auto-hospedadas disponíveis.

Observe que sempre que o Spring Boot detecta outro banco de dados de métricas no caminho de classe, desativa automaticamente o registro na memória.

2.1. InfluxDB

InfluxDB é um banco de dados de série temporal de código aberto. A maneira mais rápida de iniciar o InfluxDB é executá-lo localmente como um contêiner do Docker:

docker run -p 8086:8086 -v /tmp:/var/lib/influxdb influxdb

Observe que isso armazenará métricas na partição local/tmp. Isso é bom para desenvolvimento e teste, mas não seria uma boa opção para ambientes de produção.

Depois que o InfluxDB estiver em execução, podemos configurar nosso aplicativo Spring Boot para publicar métricas nele, adicionando a seguinte linha aapplication.properties:

management.metrics.export.influx.uri=https://influx.example.com:8086

InfluxDB does not provide a native visualization tool. No entanto, ele fornece uma ferramenta separada chamadaChronograph que funciona bem para visualizar dados do InfluxDB.

2.2. Prometeu

Prometheus é um kit de ferramentas de monitoramento e alerta de código aberto originalmente criado no SoundCloud. Funciona de maneira um pouco diferente do InfluxDB.

Em vez de configurar nosso aplicativo para publicar métricas no Prometheus,we configure Prometheus to poll our application periodically.

Primeiro, configuramos nosso aplicativo Spring Boot para expor um novo ponto de extremidade do atuador Prometheus. Fazemos isso incluindo a dependênciamicrometer-registry-prometheus:


    io.micrometer
    micrometer-registry-prometheus

Isso criará um novo ponto de extremidade do atuador que produz dados de métricas em um formato especial que o Prometheus entende.

Em seguida, temos que configurar o Prometheus para pesquisar nosso aplicativo adicionando nossa configuração desejada em um arquivoprometheus.yml.

A configuração a seguir instrui o Prometheus a pesquisar nosso aplicativo a cada 5 segundos, usando o novo ponto de extremidade do atuador:

scrape_configs:
  - job_name: 'spring-actuator'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    static_configs:
    - targets: ['127.0.0.1:8080']

Finalmente, podemos iniciar um servidor local do Prometheus usando o Docker. Isso pressupõe que nosso arquivo de configuração personalizado está localizado no arquivo local/etc/prometheus/prometheus.yml:

docker run -d \
--name=prometheus \
-p 9090:9090 \
-v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus \
--config.file=/etc/prometheus/prometheus.yml

O Prometheus fornece sua própria ferramenta de visualização para visualizar as métricas coletadas. Pode ser acessado no URLhttp://localhost:9090/.

image

2.3. Grafite

Graphite é outro banco de dados de série temporal de código aberto. Sua arquitetura é um pouco mais complicada do que os outros bancos de dados que vimos, mas com o Docker, é simples executar uma instância localmente:

docker run -d \
 --name graphite \
 --restart=always \
 -p 80:80 \
 -p 2003-2004:2003-2004 \
 -p 2023-2024:2023-2024 \
 -p 8125:8125/udp \
 -p 8126:8126 \
 graphiteapp/graphite-statsd

Em seguida, podemos configurar o Spring Boot para publicar métricas em nossa instância, adicionando a dependênciamicrometer-registry-graphite:


    io.micrometer
    micrometer-registry-graphite

Além de adicionar as propriedades de configuração aapplication.properties:

management.metrics.export.graphite.host=127.0.0.1
management.metrics.export.graphite.port=2004

Como o Prometheus, o Graphite inclui seu próprio painel de visualização. Ele está disponível na URLhttp://localhost/.

image

3. Ferramentas de visualização

Assim que tivermos uma solução para armazenar métricas fora de nosso aplicativo Spring Boot,the next decision is how we want to visualize the data.

Alguns dos bancos de dados de métricas mencionados anteriormente incluem suas próprias ferramentas de visualização. Existe uma ferramenta de visualização independente que vale a pena procurar por nossa solução de monitoramento auto-hospedada.

3.1. Grafana

Grafana é uma ferramenta de análise e monitoramento de código aberto. It can connect to all of the previously mentioned databases, as well as many others.

O Grafana geralmente fornece melhor configuração e alerta superior do que a maioria das ferramentas de visualização integradas. Ele pode ser estendido facilmente usando plug-ins, e há muitos painéis pré-criados que podem ser importados para criar rapidamente nossas próprias visualizações.

Para executar o Grafana localmente, podemos iniciá-lo usando o Docker:

docker run -d -p 3000:3000 grafana/grafana

Agora podemos acessar a página inicial do Grafana na URLhttp://localhost:3000/.

At this point, we would need to configure one or more data sources. Pode ser qualquer um dos bancos de dados de métricas discutidos anteriormente ou uma variedade de outras ferramentas suportadas.

Depois que uma fonte de dados é configurada, podemos criar um novo painel ou importar um que faça o que queremos.

image

4. Conclusão

Neste artigo, analisamos a criação de uma solução de monitoramento auto-hospedada para aplicativos Spring Boot.

Analisamos três bancos de dados de métricas compatíveis com o Spring Boot e vimos como executá-los localmente.

Também analisamos brevemente o Grafana, uma poderosa ferramenta de visualização que pode exibir dados de métricas de várias fontes.