114 lines
5.1 KiB
YAML
114 lines
5.1 KiB
YAML
# =============================================================================
|
|
# P5.3/P6.x — o Prometheus passa a raspar as APLICAÇÕES do Athletic Map.
|
|
#
|
|
# ── O QUE ESTAVA FALTANDO (achado em 2026-09-20) ────────────────────────────
|
|
#
|
|
# O `athleticmap-backends` só seleciona Services com `app: backend` — o backend
|
|
# monolítico antigo. Resultado: 4 alvos raspados no cluster inteiro. Nenhum dos
|
|
# 13 serviços, nenhum runtime, nem o BFF, nem o `servico-captacao` entregavam
|
|
# métrica ao Prometheus.
|
|
#
|
|
# Consequência prática: os contadores que o código já publica
|
|
# (`atm_provisionamento_teto_atingido_total`, `atm_webhook_assinatura_recusado_total`)
|
|
# não existiam em lugar nenhum, e alerta sobre eles não teria como funcionar.
|
|
#
|
|
# ── POR QUE UMA LISTA, E NÃO "TUDO" ─────────────────────────────────────────
|
|
#
|
|
# Selecionar todo Service com porta `http` pegaria o `frontend-spa` (nginx, que
|
|
# não tem `/actuator/prometheus`) e encheria o log do Prometheus de 404.
|
|
# A lista é explícita: quem entra, entra por nome.
|
|
#
|
|
# ── POR QUE DOIS ServiceMonitor, E NÃO UM (2026-09-21) ──────────────────────
|
|
#
|
|
# Num tenant consolidado os 13 Services `servico-<contexto>` APONTAM PARA O
|
|
# RUNTIME: raspar os 13 e mais os 3 runtimes significa raspar o MESMO pod 14
|
|
# vezes, com 14 nomes de `service` diferentes. Medido: 85 alvos e 119 mil séries,
|
|
# e no Grafana a mesma JVM aparecia como catorze coisas.
|
|
#
|
|
# Então a seleção é por NAMESPACE: onde há runtime, raspa-se o runtime; onde os
|
|
# 13 serviços ainda rodam de verdade (o `escolinha`), raspa-se os 13.
|
|
# **Tenant que migrar muda de lista aqui** — é o mesmo passo do PgBouncer.
|
|
#
|
|
# ── CUIDADO COM A MEMÓRIA DO PROMETHEUS ─────────────────────────────────────
|
|
#
|
|
# O nó é único e o Prometheus tem limite de 1536Mi (usava 758Mi em 2026-09-20).
|
|
# Cada app Spring publica ~300 séries. Por isso: intervalo de 60s (e não 30s) e
|
|
# uma LISTA DO QUE GUARDAR — o resto é descartado na ingestão. Se um dia faltar
|
|
# uma métrica no Grafana, é aqui que ela precisa entrar.
|
|
# =============================================================================
|
|
apiVersion: monitoring.coreos.com/v1
|
|
kind: ServiceMonitor
|
|
metadata:
|
|
name: athleticmap-runtimes
|
|
namespace: monitoring
|
|
labels:
|
|
release: monitoring
|
|
spec:
|
|
# Tenants JA consolidados: o que roda sao os 3 runtimes (+ BFF).
|
|
namespaceSelector:
|
|
matchNames: [demo-prod, piloto-prod, acme-prod]
|
|
selector:
|
|
matchExpressions:
|
|
- key: app
|
|
operator: In
|
|
values:
|
|
- runtime-core
|
|
- runtime-operacao
|
|
- runtime-saude
|
|
- servico-bff
|
|
endpoints:
|
|
- port: http
|
|
path: /actuator/prometheus
|
|
interval: 60s
|
|
scrapeTimeout: 20s
|
|
metricRelabelings:
|
|
# Guarda o que se usa: as métricas do domínio (`atm_*`), o essencial da
|
|
# JVM e do HTTP, o pool do banco, e o `up` (que o Prometheus gera).
|
|
- sourceLabels: [__name__]
|
|
regex: "atm_.*|up|jvm_memory_used_bytes|jvm_memory_max_bytes|jvm_threads_live_threads|process_cpu_usage|system_cpu_usage|http_server_requests_seconds_count|http_server_requests_seconds_sum|http_server_requests_seconds_max|hikaricp_connections_active|hikaricp_connections_pending|hikaricp_connections_max|flyway_migrations_.*|application_ready_time_seconds"
|
|
action: keep
|
|
---
|
|
apiVersion: monitoring.coreos.com/v1
|
|
kind: ServiceMonitor
|
|
metadata:
|
|
name: athleticmap-servicos
|
|
namespace: monitoring
|
|
labels:
|
|
release: monitoring
|
|
spec:
|
|
# Tenants que ainda rodam os servicos separados. O `escolinha` e o mostruario
|
|
# (decisao do dono, 2026-09-19); o `plataforma` tem os proprios servicos.
|
|
namespaceSelector:
|
|
matchNames: [escolinha-prod, plataforma-prod]
|
|
selector:
|
|
matchExpressions:
|
|
- key: app
|
|
operator: In
|
|
values:
|
|
- servico-administrativo
|
|
- servico-agenda
|
|
- servico-assistencia-social
|
|
- servico-bff
|
|
- servico-cadastro
|
|
- servico-campeonato
|
|
- servico-captacao
|
|
- servico-configuracao
|
|
- servico-documentos
|
|
- servico-financeiro
|
|
- servico-nutricao
|
|
- servico-organizacao
|
|
- servico-pedagogico
|
|
- servico-planejamento
|
|
- servico-saude
|
|
endpoints:
|
|
- port: http
|
|
path: /actuator/prometheus
|
|
interval: 60s
|
|
scrapeTimeout: 20s
|
|
metricRelabelings:
|
|
# Guarda o que se usa: as métricas do domínio (`atm_*`), o essencial da
|
|
# JVM e do HTTP, o pool do banco, e o `up` (que o Prometheus gera).
|
|
- sourceLabels: [__name__]
|
|
regex: "atm_.*|up|jvm_memory_used_bytes|jvm_memory_max_bytes|jvm_threads_live_threads|process_cpu_usage|system_cpu_usage|http_server_requests_seconds_count|http_server_requests_seconds_sum|http_server_requests_seconds_max|hikaricp_connections_active|hikaricp_connections_pending|hikaricp_connections_max|flyway_migrations_.*|application_ready_time_seconds"
|
|
action: keep
|