📖 Tempo estimado de leitura: 4 min
é um componente essencial no ecossistema de monitoramento do Kubernetes.
Ele é responsável por gerenciar e despachar alertas gerados pelo Prometheus, permitindo agrupamento, inibição e roteamento para diferentes destinos, como e-mails, sistemas de mensagens e webhooks personalizados.
Neste tutorial, vamos configurar o Alertmanager no OpenShift para enviar alertas para um webhook, que servirá como um receptor para validação e testes.
O Alertmanager no OpenShift já vem integrado ao Prometheus. Para configurar o envio de alertas, precisamos editar o YAML do Alertmanager, ou usar o dashboard
do OpenShift.
Em nosso ambiente de testes, estamos usando um OpenShift 4.16.27.
Se a sua instalação for recente, provavelmente já existe um alerta informando que o Alertmanager não está configurado.
Precisamos de um webhook que receberá os alertas enviados pelo Alertmanager. Em um ambiente real de produção, este componente normalmente é uma solução enterprise de monitoramento. No entanto, para validar nossa configuração, podemos utilizar um webhook feito em python
, que apenas exibirá na tela os alertas enviados pelo OpenShift.
O código fonte e detalhes de configuração estão em nosso Github.
https://github.com/linuxelitebr/alertmanager
⚠️ IMPORTANTE: O endereço de destino do webhook precisa estar cadastrado em DNS!
[root@bastion alertmanager]# host python.homelab.rhbrlabs.com
python.homelab.rhbrlabs.com has address 10.1.224.2
No dashboardo do OpenShift, faça o seguinte caminho para encontrar a tela de configuração do Alertmanaher:
⚙️ Administration
> Cluster Settings
> Configuration
> Alertmanager
Observe os itens destacados na imagem. Vamos precisar configurar todos.
Essa tela define as configurações de roteamento para o Alertmanager integrado do OpenShift, que é responsável por gerenciar e enviar alertas gerados pelo Prometheus.
Para tornar as coisas mais ágeis
em nosso laboratório, reduza os tempos de agrupamento
de mensagem antes de cada despacho.
Veja a seguir o que cada campo faz:
Configuração | Descrição |
---|---|
Group by | • Os alertas serão agrupados com base no valor especificado aqui. • Nesse caso, eles são agrupados por namespace, o que significa que todos os alertas do mesmo namespace serão processados juntos. |
Group wait | • Define quanto tempo o Alertmanager espera antes de enviar o primeiro alerta em um grupo. • Aqui, ele espera 3 segundos antes de enviar um alerta depois que ele é recebido pela primeira vez. • Útil para agrupar vários alertas e evitar notificações desnecessárias. |
Group interval | • O tempo entre o envio de alertas agrupados. • Se novos alertas chegarem para um grupo já existente, eles serão enviados juntos a cada 6 segundos. • Evita que alertas excessivos sejam enviados imediatamente. |
Repeat interval | • O tempo após o qual um alerta é reenviado se ainda estiver ativo. • Aqui, ele é definido como 12 horas, o que significa que alertas não resolvidos serão reenviados a cada 12 horas. • Ajuda a lembrar as equipes sobre problemas críticos em andamento. |
⚠️ IMPORTANTE: Certifique-se de usar valores de tempo adequados para seu ambiente e necessidade.
Clique no link Configure dos itens a seguir, e preencha o setup conforme a imagem.
Critical
Como o nome diz, use este componente para enviar alertas com severidade crítica.
Default
Este é o destino padrão para os alertas serem enviados.
Neste momento, os alertas já deverão estar aparecendo em nosso webhook receiver feito em python, validando assim o funcionamento do Alertmanager. 🚀
✅ Fala sério. Isso foi muito fácil! 😎
Para customização, por exemplo enviar eventos de info
, ou com filtros por regex
, utilize esta opção.
Vamos supor que você precise configurar um novo receiver, com seus próprios filtros, como por exemplo:
severity = ~warning|critical
Basta clicar no botão Create Receiver e preencher os dados como no exemplo abaixo.
⚠️ Verifique as severidades e destinos configurados em cada alerta que você definir, para evitar o envio de alertas duplicados.
✅ Para aprender sobre como ajustar seus próprios matchers
de forma a capturar apenas os alertas de seu interesse, consulte a documentação de Alerting do Prometheus.
Podemos gerar alertas de teste diretamente no Alertmanager para verificar se o webhook está recebendo os dados:
oc exec alertmanager-main-0 -n openshift-monitoring -- \
amtool alert add --alertmanager.url http://localhost:9093 \
alertname="TestAlert" \
severity=critical \
--annotation summary="Este é um alerta de teste"
Se o webhook estiver funcionando corretamente, após o tempo definido de agrupamento, o alerta será exibido no terminal onde o webhook.py
está rodando.
Consulte nosso github para aprender como fazer este tipo de teste. Ele é muito útil para ajudar a fazer o tuning do Alertmanager.
Com essa configuração, garantimos que os alertas do Alertmanager no OpenShift sejam enviados para um webhook Python, permitindo monitoramento avançado e validação de eventos em tempo real.
Se você quiser integrar esse webhook a outras ferramentas, como Grafana, Slack ou Discord, basta adaptar o código para enviar notificações conforme sua necessidade.
Tem alguma dúvida ou sugestão? Comente abaixo!
Compartilhe este post e continue acompanhando nosso site para mais novidades sobre Kubernetes e tecnologias open-source!
Dê uma olhada nestes outros artigos interessantes! 🔥
Gostou do que encontrou aqui? A cada clique em um banner, você ajuda a manter este site vivo e gratuito. Seu apoio faz toda a diferença para que possamos continuar trazendo conteúdos que você adora. Muito obrigado! 😊