Alertas no Grafana: e-mail, Slack e Telegram
Alertas transformam dashboards passivos em monitoramento ativo — você recebe notificação quando CPU está alta, disco está cheio ou serviço caiu, antes do usuário reportar o problema. O Grafana Alerting unificado (disponível desde a versão 9) suporta múltiplos canais de notificação e regras baseadas em PromQL.
Configurar contact points (canais de notificação)
Contact points definem para onde os alertas são enviados. Configure Telegram (mais prático para equipes pequenas):
# 1. Criar bot no Telegram:
# - Converse com @BotFather no Telegram
# - /newbot → nome → username
# - Guarde o TOKEN gerado
# 2. Obter o chat_id:
# - Envie uma mensagem para o bot
# - Acesse: https://api.telegram.org/botTOKEN/getUpdates
# - Pegue o "id" dentro de "chat"
# 3. Configurar no Grafana via API:
curl -X POST http://localhost:3000/api/v1/provisioning/contact-points \
-H "Content-Type: application/json" \
-u admin:senha \
-d '{
"name": "Telegram Prod",
"type": "telegram",
"settings": {
"bottoken": "SEU_TOKEN_BOT",
"chatid": "SEU_CHAT_ID",
"message": "{{ template \"default.message\" . }}"
}
}'Configurar alerta via interface do Grafana
O processo completo para criar uma regra de alerta no Grafana:
# Via interface Grafana (Alerting → Alert rules → New alert rule):
# 1. Nome: "CPU Alta — VPS Prod"
# 2. Query A (PromQL):
100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# 3. Condição:
# WHEN: last() OF query(A, 5m, now)
# IS ABOVE: 80
# 4. Pending period: 5m
# (aguardar 5 minutos acima do threshold antes de disparar)
# 5. Labels: severity=warning, team=ops
# 6. Annotations:
# Summary: "CPU alta em {{ $labels.instance }}"
# Description: "CPU em {{ $values.A.Value | printf \"%.1f\" }}% por 5+ minutos"
# 7. Folder: Infrastructure
# Evaluation group: node-alerts (15s interval)Notification policies: rotear alertas
Notification policies definem qual contact point recebe qual alerta baseado em labels:
# Política de roteamento via API:
curl -X PUT http://localhost:3000/api/v1/provisioning/policies \
-H "Content-Type: application/json" \
-u admin:senha \
-d '{
"receiver": "telegram-prod",
"group_by": ["alertname", "instance"],
"group_wait": "30s",
"group_interval": "5m",
"repeat_interval": "4h",
"routes": [
{
"receiver": "telegram-prod",
"matchers": ["severity=critical"],
"group_wait": "10s",
"repeat_interval": "1h"
},
{
"receiver": "email-oncall",
"matchers": ["severity=warning"],
"repeat_interval": "6h"
}
]
}'Configurar e-mail como contact point
Configure SMTP no Grafana para envio de e-mails:
# docker-compose.yml — variáveis de ambiente do Grafana
services:
grafana:
environment:
GF_SMTP_ENABLED: "true"
GF_SMTP_HOST: "smtp.sendgrid.net:587"
GF_SMTP_USER: "apikey"
GF_SMTP_PASSWORD: ${SENDGRID_API_KEY}
GF_SMTP_FROM_ADDRESS: "grafana@seudominio.com.br"
GF_SMTP_FROM_NAME: "Grafana Monitoring"
# Adicionar contact point de e-mail:
curl -X POST http://localhost:3000/api/v1/provisioning/contact-points \
-H "Content-Type: application/json" \
-u admin:senha \
-d '{
"name": "Email Oncall",
"type": "email",
"settings": {
"addresses": "oncall@seudominio.com.br;dev@seudominio.com.br",
"subject": "[{{ .Status | toUpper }}] {{ .GroupLabels.alertname }}"
}
}'Silenciar alertas durante manutenção
Silenciamentos evitam notificações desnecessárias durante deploys e manutenções planejadas:
# Criar silenciamento via API (duração: 2 horas)
STARTS_AT=$(date -u +%Y-%m-%dT%H:%M:%SZ)
ENDS_AT=$(date -u -d "+2 hours" +%Y-%m-%dT%H:%M:%SZ)
curl -X POST http://localhost:3000/api/alertmanager/grafana/api/v2/silences \
-H "Content-Type: application/json" \
-u admin:senha \
-d "{
\"matchers\": [{
\"name\": \"instance\",
\"value\": \"vps-prod-01\",
\"isRegex\": false
}],
\"startsAt\": \"$STARTS_AT\",
\"endsAt\": \"$ENDS_AT\",
\"comment\": \"Manutenção programada — deploy v2.0\",
\"createdBy\": \"deploy-script\"
}"
# Listar silenciamentos ativos
curl http://localhost:3000/api/alertmanager/grafana/api/v2/silences -u admin:senha$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o VPS em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.