Monitoramento de farmácias e heartbeat
1) Por que é necessário
Detecção precoce de interrupções no perímetro e no interior (edge ↔ core).
Comprova a disponibilidade do usuário (e não apenas se está vivo).
Relatórios contratuais SLA/SLO e obrigações legais.
Controle de processos de fundo (cron, ETL, sinks de pagamento) através do heartbeat.
Metodologias: Golden Signals (latency/traffic/errors/saturation), RED, vinculação a SLO e orçamento errado.
2) Tipos de verificação (synthetics)
ICMP: rede básica/disponibilidade IP.
TCP: porta viva/handshake (por exemplo, 443/5432).
TLS: validade/prazo/cadeia de certificados.
HTTP (S): código de resposta, latency, cabeçalhos, subgrades-chave no body.
DNS: ressalvas, TTL, NXDOMAIN/SERVFAIL.
Navegador Headless: login → ação → logout.
Custom protes: permissão de pagamento no sandbox PSP, sintética interna de negócios (deposit simulation).
Dicas: verifique edge e endpoint privados (por dentro VPC/K8s) são domínios de risco diferentes.
3) Arquitetura de monitoramento de farmácias
Agentes de teste por região (pelo menos 3 pontos geo).
Blackbox exportador para HTTP/TCP/TLS/DNS.
Sintéticos por caminhos (sequential steps) separados; Guardem os script.
Prometheus/Mimir/Thanos: coleta de métricas, regra SLO/alertas.
Alertmanager/Pager: Routing P1/P2, escalação.
Status Page: updates transparentes para negócios/clientes.
Logi/pista: drilldown por 'trace _ id '/correlação.
4) Health-endpoint: design
/ healthz (liveness) - «se o processo está vivo».
/ readyz - «pronto para receber tráfego» (dependentes de liminares).
/ startupz - «foi inicializado».
/ check - health empresarial avançado (verificações fáceis de BD/kesha com temporizadores e circuito-breaker).
Semantic health: código 200 apenas quando dependentes críticos funcionam; degradação → 503.
Regras: Tempo de tempo ≤ 2-3s, sob-verificação restrita, sem PII nas respostas, armazenando as partes pesadas.
5) Heartbeat para e workers
Modelo Dead Man's Switch: Se o «tique» não chegar a tempo, alert.
Uso: cron/ETL/faturas-jobs, verificações de pagamento off-chain, workers de fundo.
- Push-heartbeat HTTP: jobs quando termina faz 'POST/heartbeat/< job>'.
- Metrics-pull: Exponha 'last _ sucess _ timestamp' e alerte por 'mais de N minutos'.
- Watchdog: sinal constante do agente; Desapareceu. Alert de registo.
6) Exemplos de configuração
6. 1 Blackbox-exporter (HTTP + TLS + DNS)
yaml modules:
http_2xx:
prober: http http:
method: GET preferred_ip_protocol: "ip4"
fail_if_not_ssl: true valid_http_versions: ["HTTP/1. 1","HTTP/2"]
tls_config:
insecure_skip_verify: false headers:
User-Agent: "uptime-probe"
body: ""
ip_protocol_fallback: false
tls_cert:
prober: tcp tcp:
query_response: []
tls: true tls_config:
insecure_skip_verify: false
dns:
prober: dns dns:
query_name: "api. example. com"
valid_rcodes: ["NOERROR"]
preferred_ip_protocol: "ip4"
6. 2 Prometheus: tarefas e jobs
yaml scrape_configs:
- job_name: 'blackbox-http'
metrics_path: /probe params:
module: [http_2xx]
static_configs:
- targets:
- https://api. example. com/healthz
- https://pay. example. com/readyz relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- target_label: __address__
replacement: blackbox-exporter:9115
- source_labels: [__param_target]
target_label: instance
6. 3 Heartbeat-metrica para jobs (Prometheus exposer)
Exponha a métrica:
job_last_success_timestamp_seconds{job="settlement"} 1. 730000e+09
Alert:
promql
(time() - job_last_success_timestamp_seconds{job="settlement"}) > 900
6. 4 Watchdog (Dead Man’s Switch)
Em Alertmanager, ative a rota para alert 'Watchdog' (sempre firing) → se o alerta não chegar - o monitoramento está quebrado.
7) Exemplos de PromQL para farmácia
HTTP disponibilidade (0/1):promql probe_success{job="blackbox-http"} == 1
p95 latency por amostra:
promql histogram_quantile(0. 95, sum by (le, instance) (rate(probe_http_duration_seconds_bucket[5m])))
O TLS expira <7 dias:
promql
(min_over_time(probe_ssl_earliest_cert_expiry[5m]) - time()) < 7243600
Erros DNS:
promql rate(probe_dns_rcode{rcode!="NOERROR"}[5m]) > 0
Uptime SLI (rolling 28d):
promql sum_over_time((probe_success==1)[28d]) / (28246060)
8) Alerting: liminares e anti-barulho
Multi-region quorum: funciona quando ≥2 regiões veem queda.
Multi-window: 1-5 min (canal rápido) + 30-60 min (tendência sustentável).
Sensibilidade: debounce/for: 2-5 minutos contra flapping.
Correlação: Vincule o botequim alert às métricas leitor (edge, DNS, WAF, origin).
Maintenance windows: supressão de alertas por marcas 'maintenance = true'.
promql
≥2 regions simultaneously failed sum by (target) (max_over_time (probe _ success = = 0) [3m]))> = 2
9) Inspeções muito-regionais e muitos-vendedores
Pelo menos 3 geografias (EU/NA/APAC) e ASN diferentes.
Renovem as suas próprias amostras, além de uma farmácia externa.
IPv4/IPv6, HTTP/2/3, diferentes CDN ROR's e perfis WAF.
10) Segurança de verificação
O allowlist IP das faixas de amostras em WAF/LB.
Rate-limits e capcha-bypas para endpoint health/amostras.
Assinar títulos (HMAC) para health privados.
Domínios separados: amostras públicas e privadas (/internacional/health).
Não devolva versões internas/configs para/healthz; apenas estatais.
11) SLO e relatórios de farmácia
SLI Availability: proporção de amostras HTTP 2xx/3xx bem-sucedidas.
SLO exemplo: ≥ 99. 95% em 28 dias na maioria das regiões.
Orçamento errado: '1 - SLO' → controla lançamentos.
Alertas burn-rate: canal rápido/lento para a proporção de falhas de amostras.
12) Heartbeat para pagamentos e criteriosos
Jobs «em torno do dinheiro» (transferências, registros) - controle duplo: heartbeat + contadores de negócios (quantos registros foram processados).
Alertas por «silêncio» (sem novos eventos> N minutos) e por laje (atrás do real-time).
13) Status da página
Divida componentes (API, pagamentos, backends, CDN).
Updates automáticos de alertas, comentários manuais através do papel Comms.
Histórico de incidentes, links pós-mortem, obras programadas.
14) Integração com o processo de incidente
Alert SEC de acordo com as regras quorum + duração.
Auto-criar cartão de incidente, war-room, atribuição IC.
Modelos de comunicação (interna/externa), Legal Hold, se necessário.
Pós-verificação: Sintético verde ≥ X minutos antes de «Resolved».
15) Desempenho e custo
Frequência de amostras: criteriosas - cada 30-60s; secundário - 1-5 min
Armazenamento: downsampling/recording rulas para longas janelas.
Orçamento de provedores externos: Limite os cenários de navegação avançados no horário.
16) Folha de cheque de qualidade
- Há/healthz ,/readyz ,/startupz com uma semântica clara.
- Amostras de ≥3 regiões/ASN, IPv4/IPv6.
- TLS/DNS verificações e alertas T-30/T-7/T-1 dias.
- Heartbeat todos os críticos (e negócios - «silêncio»).
- Multi-window + quorum, sem flapping.
- Drilldown: botões para logs/pistas/dashboards.
- Status da página e modelos de comunicação.
- Documentação SLO/métricas e proprietários.
17) Plano de implementação (3 iterações)
1. Semana 1: blackbox-amostras HTTP/TLS/DNS para domínios críticos, status-página, alertas básicas.
2. Semana 2: Muito-regionalidade, regras quorum, heartbeat top, Watchdog.
3. Semana 3: Guiões headless (login/deposit), relatórios SLO, integração com o processo de incidente.
18) Mini-FAQ
O que é melhor que as provas externas?
Os externos vislumbram o caminho real do usuário (DNS/CDN/WAF), o estado interno é origin. Precisamos de ambos.
Você precisa verificar PSP pago?
Sim, sintético em sandbox e monitoramento de páginas de status; degradação - smart-routing automático.
Como reduzir o barulho?
Quorum, multi-window, para-atraso, supressão em maintenance, liminares SLO nítidos e posse.
Resultado
O monitoramento de farmácias não é só um ping. Este é um sistema: muitos-regionais sintéticos + health-endpoint de qualidade + heartbeat se + SLO/alerting + status-páginas. Normalize as verificações, reduza o ruído, proteja as amostras e ligue tudo ao processo de incidente, reduzindo o MTTR e mantendo o orçamento errado.