🚨 Alertas
Um alerta avisa a equipe quando algo foge do normal (um pod reiniciando sem parar, um node fora do ar), antes que o usuário perceba.
O Kubernetes sozinho não envia alertas. Para isso, usa-se o Prometheus (que avalia as regras) com o Alertmanager (que envia a mensagem por e-mail, Slack ou outro canal).
Alertas são configurados com o kubectl e arquivos YAML. O Painel Nuvion não tem uma tela para esse recurso.
🚀 Antes de começar
- Ter o acesso ao cluster configurado.
🚀 1. Verificar se o Prometheus está instalado
kubectl get pods -A | grep -i -E "prometheus|alertmanager"
kubectl get crd | grep monitoring.coreos.com
- Se aparecerem pods do Prometheus e do Alertmanager e o CRD
prometheusrules.monitoring.coreos.com, siga para o passo 2. - Se não aparecer nada, o monitoramento ainda não está instalado. Use a verificação rápida (última seção) ou fale com o suporte.
🚀 2. Criar as regras de alerta
Crie o arquivo alertas-basicos.yaml. Troque NAMESPACE-DO-PROMETHEUS e
NOME-DO-RELEASE pelos valores do seu ambiente:
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: alertas-basicos
namespace: NAMESPACE-DO-PROMETHEUS
labels:
release: NOME-DO-RELEASE
spec:
groups:
- name: kubernetes-basico
rules:
- alert: PodReiniciandoMuito
expr: increase(kube_pod_container_status_restarts_total[15m]) > 3
for: 5m
labels:
severity: warning
annotations:
summary: "Pod {{ $labels.namespace }}/{{ $labels.pod }} reiniciou mais de 3 vezes em 15 minutos"
- alert: PodEmCrashLoop
expr: kube_pod_container_status_waiting_reason{reason="CrashLoopBackOff"} == 1
for: 5m
labels:
severity: critical
annotations:
summary: "Pod {{ $labels.namespace }}/{{ $labels.pod }} em CrashLoopBackOff"
- alert: NodeNaoPronto
expr: kube_node_status_condition{condition="Ready",status="true"} == 0
for: 5m
labels:
severity: critical
annotations:
summary: "Node {{ $labels.node }} fora do estado Ready"
kubectl apply -f alertas-basicos.yaml
kubectl get prometheusrule -A
A regra for: 5m evita falsos alarmes: o problema precisa durar 5 minutos
antes de disparar.
🚀 3. Definir para onde os alertas vão
No Alertmanager, configure um destino (receiver). Exemplo com e-mail:
route:
receiver: equipe
receivers:
- name: equipe
email_configs:
- to: "[email protected]"
from: "[email protected]"
smarthost: "smtp.exemplo.com.br:587"
auth_username: "[email protected]"
auth_password: "USE-UM-SECRET-PARA-A-SENHA"
Não escreva a senha direto no arquivo. Guarde-a em um Secret e referencie nele.
🚀 4. Testar o alerta
Provoque um erro que dispare a regra PodEmCrashLoop:
kubectl run pod-crash --image=busybox -- sh -c 'exit 1'
Para ver os alertas no Prometheus, abra um túnel até ele:
kubectl port-forward -n NAMESPACE-DO-PROMETHEUS svc/NOME-DO-SERVICE-PROMETHEUS 9090:9090
Abra http://localhost:9090/alerts no navegador. Após cerca de 5 minutos, o
alerta aparece como Firing e a mensagem chega ao destino configurado.
⚡ Verificação rápida (sem Prometheus)
Enquanto o monitoramento não estiver instalado, use estes comandos para checar a saúde do cluster:
kubectl get nodes
kubectl get pods -A --field-selector=status.phase!=Running,status.phase!=Succeeded
kubectl get events -A --field-selector type=Warning
Isso não substitui um alerta automático, pois só mostra a situação no momento em que você roda.
✅ Como saber se deu certo
O alerta de teste aparece como Firing em /alerts e a notificação chega ao destino.
❗ Problemas comuns
| Sintoma | Causa | Solução |
|---|---|---|
no matches for kind "PrometheusRule" | O Prometheus Operator não está instalado | Veja o passo 1 |
| A regra não aparece no Prometheus | O rótulo release não confere | Use o mesmo release do seu Prometheus |
| O alerta dispara mas nada chega | Receiver mal configurado | Revise o passo 3 e os logs do Alertmanager |
| A consulta não retorna dados | Falta o kube-state-metrics | Confira se há um pod kube-state-metrics em kubectl get pods -A |
🧹 Limpeza
kubectl delete pod pod-crash
kubectl delete prometheusrule alertas-basicos -n NAMESPACE-DO-PROMETHEUS
🧠 Dúvidas?
Fale com nosso time de suporte técnico da SaveinCloud!