Taverna /dev/All

APM - Alternativas open source para monitoramento de desempenho

Iniciei a pesquisa por uma solução de APM open source. Para quem não conhece, APM é uma sigla que significa Application Performance Management, ou seja, essencialmente ferramentas que nos permitem monitorar a qualidade de serviço (performance, consumo de memória) das nossas aplicações.

A melhor que conheço e já usei é o NewRelic (https://www.newrelic.com), mas infelizmente é uma solução que pode ficar muito cara com o tempo conforme a aplicação escala.

Com isto iniciei uma pesquisa na qual identifiquei algumas soluções que compartilho aqui com vocês e que também servirá para que possamos trocar experiências a respeito de sua adoção. Ainda não tenho experiência com estas ferramentas, sendo assim o objetivo deste post é justamente obter as experiências de vocês.

Vamos à lista.

Apache Skywalking

Como o próprio nome diz, é mantido pela fundação Apache e, ao que tudo indica, ainda está na incubadora. Mas só pelo fato de estar na Apache já me deixa um pouco mais tranquilo em relação à sua longevidade.

Stage Monitor

image

https://www.stagemonitor.org

Pinpoint

image

Com este tive alguma experiência, no caso, uma dificuldade enorme em instalar o servidor, que é uma atividade bastante complexa, o que acabou me afastando da alternativa por um tempo, mas estou pensando em retomar contato agora com esta pesquisa.

JavaMelody

Com este já tive bastante experiência, no caso, em aplicações baseadas em Grails. É muito bom: me permite detectar consultas mais lentas, gargalos de memória e de desempenho.

O uso também é bastante simples: o problema é que preciso embarcá-lo na aplicação, e meu monitoramento é nó a nó. O ideal é que eu tenha um ponto central a partir do qual consiga acessar todos os meus servidores ao mesmo tempo.

Ele fornece um dashboard bem interessante, cujo print vocês podem ver a seguir:

image

E vocês, já experimentaram alguma destas soluções ou possui alguma sugestão? O que indicam?

1 Curtida

Opa, eu recomendo fortemente o Prometheus (https://prometheus.io/)!

Instalando com Docker-Compose, fica um chuchuzinho!

2 Curtidas

bem interessante este Prometheus viu, fácil de instalar com o Docker, bem interessante mesmo, gostei dele!

Mas fiquei com umas dúvidas:

  • Ele não tem um agente que possa ser externo á aplicação, tal como no caso dos outros, que usam o JMX pra obter, por exemplo, as transações de banco de dados, consulta, etc?
  • Sempre tenho de incluir a biblioteca dele nos meus projetos?
  • No caso, as métricas que ele pega são só as que nós mesmos fornecemos ou ele consegue pegar estas outras que mencionei acima, tais como memória, por exemplo?

não é a mesma coisa mas já ajudar a não ficar cego na operação:

1 Curtida

Não sei se vou conseguir responder as perguntas, mas vou tentar:

  1. Se for uma aplicação tradicional, sim, tem agentes externos, os Exporters (https://prometheus.io/docs/instrumenting/exporters/) para coletar os dados da aplicação, e deixá-los disponíveis para o Prometheus fazer a coleta, como por exemplo o caso do exporter para Apache, que é externo:

https://machineperson.github.io/monitoring/2016/01/04/exporting-apache-metrics-to-prometheus.html

E o do Postgres:

E tem também um exporter do JMX:

  1. Não, se você usa por exemplo o Melody nos projetos, é possível deixá-los disponíveis para a coleta do Prometheus sem ter que incluir algo específico do Prometheus:
  1. Acredito que você sempre deva usar um exporter, ou uma aplicação que já exporte no formato que ele consegue ler. Então para pegar métricas referentes ao servidor onde está a aplicação, você poderia por exemplo usar:

Ou se quiser algo mais específico da aplicação, poderia usar:

2 Curtidas

poxa, fenomenal este negócio!
o que mais me impressionou nele foi a facilidade de instalação.
Se não puder tocar no meu código então, como você tá mostrando, é um forte candidato a ser adotado!

Este Zabbix não conhecia, BEM interessante. Tem experiência com ele?

tinha ele na Intelie p/ monitorar a infra a nível de VM apenas, só p/ ver se nada tinha ficado offline

atendia bem e não foi complicado

Tô parecendo vendedor, mas quem quiser usar Zabbix, dá pra integrá-lo com o Prometheus :stuck_out_tongue:

https://www.zabbix.com/integrations/prometheus

E tá um belo vendedor, porque na minha análise aqui o Prometheus tá com vantagem!

Não haveria muita razão pra ter o zabbix junto com ele.

itexto