>> 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.
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:
- Prometheus: http://demo.robustperception.io:9090
- Grafana: http://demo.robustperception.io:3000
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
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.
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])
Para finalizar, podemos apresentar várias dessas métricas criadas pelo Prometheus em um Dashboard único utilizando o Grafana.
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/
Deixe um comentário