Monitorando nosso gerador de senhas com Prometheus e Grafana
No Kubernetes o Prometheus coleta métricas do Kubernetes de várias maneiras:
Exportadores: O Prometheus utiliza exportadores para coletar métricas de diferentes componentes do Kubernetes, como:
kube-state-metrics: Coleta métricas sobre o estado dos objetos do Kubernetes, como Pods, Nós, Deployments, etc.
node-exporter: Coleta métricas sobre o hardware e sistema operacional dos nós do Kubernetes.
Endpoints de métricas: Alguns componentes do Kubernetes, como o API server, controller manager e scheduler, expõem seus próprios endpoints de métricas que o Prometheus pode scrape diretamente.
Descoberta de serviço: O Prometheus utiliza a descoberta de serviço do Kubernetes para encontrar automaticamente os alvos (targets) a serem monitorados, como Pods e Serviços.
Regras de alerta: O Prometheus permite definir regras de alerta com base nas métricas coletadas, que podem ser usadas para notificar sobre problemas no cluster Kubernetes.
Então, em resumo, o Prometheus utiliza uma combinação de exportadores, endpoints de métricas e descoberta de serviço para coletar as métricas do Kubernetes de forma abrangente e automatizada.
O Prometheus utiliza uma combinação de exportadores, endpoints de métricas e descoberta de serviço para coletar as métricas do Kubernetes de forma abrangente e automatizada.
Em nosso projeto criamos dois objetos Kubernetes, o PodMonitor
e o ServiceMonitor
para monitorar a nossa aplicação.
Definição dos objetos
Instalando o Prometheus e o Grafana
Para fazer a instalação do Prometheus use os comandos abaixo:
Acessando o Prometheus
Acessando o Grafana
Por padrão a senha e o usuário do Grafana é admin
, posteriormente será solicitada a troca de senha. Foram criados manifestos de ingress para acessar o Prometheus e o Grafana, disponíveis na pasta /monitoring
.
As aplicações estão acessíveis através dos seguintes endereços:
Prometheus: https://prom.nataliagranato.xyz/
Grafana: https://grafana.nataliagranato.xyz
Criando um service monitor e um pod monitor
Para monitorar a nossa aplicação, criamos um ServiceMonitor
e um PodMonitor
. O ServiceMonitor
monitora os serviços da aplicação e o PodMonitor
monitora os pods da aplicação. As definições dos objetos estão disponíveis na pasta /monitoring
.
O nosso ServiceMonitor monitora o serviço giropops-senhas
no namespace giropops-senhas
:
O nosso PodMonitor monitora os pods do deployment giropops-senhas
no namespace giropops-senhas
:
Para encontrar o service
e o pod
corretos o Prometheus utiliza o selector
e o port
definidos no ServiceMonitor
e no PodMonitor
.
Para verificar se o Prometheus começou a monitorar a aplicação, acesse a aba Status
do Prometheus e verifique se o ServiceMonitor
e o PodMonitor
estão aparecendo na lista de Service Discovery
.
Vamos aplicar os manifestos:
Criando um alerta no Prometheus com o Alertmanager
Para criar um alerta no Prometheus, precisamos definir uma regra de alerta e configurar o Alertmanager para enviar notificações. Vamos criar um alerta para monitorar caso o nosso deployment
fique fora do ar por mais de 1 minuto.
Vamos aplicar o manifesto:
É possível visualizar o alerta no Prometheus, acessando a aba Alerts
do Prometheus.
Integrando o Alertmanager com o Grafana
Para integrar o Alertmanager com o Grafana, precisamos configurar Alertmanager como datasource no Grafana e criar um painel para exibir os alertas. Siga os passos abaixo:
Acesse o Grafana em https://grafana.nataliagranato.xyz e faça login com o usuário
admin
e a senha definida anteriormente.No menu lateral clique em Configuration > Data Sources.
Clique em
Add data source
.Selecione
Alertmanager
como tipo de data source.Dê um nome para a nova data source, por exemplo
Alertmanager
.Selecione a
Implementation
comoPrometheus
e habilite a opçãoReceive Grafana alerts
para receber os alertas do Grafana no Alertmanager.Configure o endereço do Alertmanager como
http://alertmanager-main.monitoring.svc.cluster.local:9093
. Estamos usando o DNS interno do Kubernetes para fazer a conexão entre o Grafana e o Alertmanager. O tipo deAccess
deve serServer
.Clique em
Save & Test
para salvar a data source.
Agora é possível visualizar os alertas do Prometheus no Grafana. Acesse Alerting > Alerts rules e procure pelo nome do alerta GiropopsSenhasDown
. Clique no botão Create Alert
para criar um painel com o alerta.
A dashboard está acessível em Painel do Grafana
Observação
No painel status da aplicação
usamos a opção de Value mapping
para mapear os valores de up
para 1
e 0
para up
e down
, respectivamente. Isso permite exibir o status da aplicação como up
ou down
no painel.
A query
usada para o painel status da aplicação
é up{namespace="giropops-senhas", app="giropops-senhas"}
.
Last updated