>> Apresentação

Monitoramento sempre foi um aspecto crucial em qualquer empresa com serviços rodando para a internet. Graças ao monitoramento, podemos diminuir o downtime dos serviços e entender onde estão os gargalos da nossa infra. Porém, com a vinda da cloud e de culturas como a de DevOps, novas tecnologias tiveram que ser desenvolvidas para aceitar a alta escalabilidade e aguentar a elasticidade dos serviços de hoje.

Este artigo é destinado para aqueles que estão começando a estudar Prometheus.

>> O que é o Prometheus?

Prometheus é um conjunto de ferramentas de monitoramento e de alerta 100% open-source. Criado originalmente pela SoundCloud em 2012, o Prometheus vem ganhando grande popularidade das comunidades e de empresas pelo mundo todo. Em 2016 , entrou para o Cloud Native Computing Foundation tornando-se o segundo projeto hosteado, depois do Kubernetes.

A imagem abaixo mostra todos os componentes que um Prometheus pode ter.

image00

Como outras ferramentas de monitoramento, o Prometheus utiliza-se de um TSDB (Time Series Data Base) para armazenar as métricas a medida que elas são coletadas. Porém, diferente de outras tecnologias, o Prometheus entrega um tool set bem mais completo, facilitando a utilização dessas métricas. Outra ponto diferente do Prometheus é a utilização de uma Query Language própria, a PromQL (vamos aprender mais sobre ela em posts futuros).

Pretendo me aprofundar mais sobre o Prometheus e suas ferramentas no futuro.

>> Mão na massa

Iremos usar o código do Stefan Prodan para subir um docker compose com o Prometheus, Alertmanager, cAdvisor, Node Exporter e o Grafana (tudo na mesma stack!). Com essa stack up, nós iremos entrar no prometheus e realizar uma query básica.

Se eu não tiver docker instalado, posso testar o Prometheus?

Se você não tiver docker instalado em sua máquina não se preocupe!
Você ainda pode realizar testes com o Prometheus. Para isso a Robust Percption disponibilizou um ambiente com stack já instalada!

Segue os links para acessar a Stack da Robust Perception:

Rodando o projeto com Docker

Vamos clonar o repositório e subir o projeto com o docker-compose.

Caso queira saber mais sobre Docker temos uma série de artigos que poderão te ajudar.

git clone https://github.com/stefanprodan/dockprom
cd dockprom
docker-compose up -d
  • Prometheus (metrics database) http://localhost:9090
  • AlertManager (alerts management) http://localhost:9093
  • Grafana (visualize metrics) http://localhost:3000

Após todos os containers subirem, vamos entrar na interface do Prometheus e dar uma olhada.

Acessando via browser:

http://localhost:9090
Usuário: Admin
Senha: Admin

Captura de tela de 2018-04-23 16-53-32

Pronto, agora com o Prometheus rodando certinho eu gostaria de adicionar só mais um ponto na teoria sobre ele. O Prometheus funciona por Pull method, ou seja, ele pega as informações via GET e armazena-as localmente. Iremos falar mais dessas informações em futuros posts, mas é sempre legal entender o que está acontecendo por baixo dos panos.

Um exemplo de métrica que o Prometheus coleta pode ser visto na imagem abaixo.

29c20f7a-e9a2-4fd7-b22b-55cf9ba93580

Para olhar o arquivo completo, podemos visualizar as métricas que o próprio Prometheus gera.

Até agora o Prometheus coletou e armazenou as métricas de múltiplos nodes. A real utilidade do Prometheus vem com o que ele faz com esses dados. Podemos filtrar e trazer valor a esses dados coletados pelo Prometheus usando a PromQL.

irate(node_cpu{job="node"}[5m])

8f9d59e4-0796-4216-bcea-a6127525f852

Para finalizar, podemos apresentar várias dessas métricas criadas pelo Prometheus em um Dashboard único utilizando o Grafana.

f4d26b09-1a0b-4553-a151-fd7a960a0646

Para olhar o Dashboard completo.

Acessando via browser:

http://localhost:3000
Usuário: Admin
Senha: Admin

Ou

http://demo.robustperception.io:3000

>> Agradecimentos

Gostaria de agradecer ao Rodrigo Floriano por me dar essa oportunidade de passar um pouco do que aprendi nos últimos meses, ao Rafael Barbosa por me incentivar a aprender sobre Prometheus e a escrever esse artigo e a todos da comunidade ChurrOps!

>> Referências

https://github.com/stefanprodan/dockprom

https://github.com/stefanprodan/swarmprom

https://www.youtube.com/user/linuxtipscanal/playlists

https://www.robustperception.io/understanding-machine-cpu-usage/

https://therobotacademy.com/feed/monitoring-linux-stats-prometheusio

http://tutoriaisgnulinux.com/2018/04/23/monitorando-ambiente-com-o-prometheus/

https://www.linkedin.com/pulse/monitoring-docker-swarm-prometheus-graphana-elk-etc-pradeep-macharla/

>> Contato

https://www.linkedin.com/in/ldsouza1220/

https://github.com/souzaxx