diff --git a/moldes/consolidado/70-runtime-core.yaml b/moldes/consolidado/70-runtime-core.yaml index 94fcd39..3750830 100644 --- a/moldes/consolidado/70-runtime-core.yaml +++ b/moldes/consolidado/70-runtime-core.yaml @@ -58,6 +58,9 @@ kind: Service metadata: name: runtime-core namespace: {{TENANT}}-prod + labels: + app: runtime-core + athleticmap.io/metricas: tenant spec: selector: { app: runtime-core } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/moldes/consolidado/71-runtime-operacao.yaml b/moldes/consolidado/71-runtime-operacao.yaml index 467255e..b913301 100644 --- a/moldes/consolidado/71-runtime-operacao.yaml +++ b/moldes/consolidado/71-runtime-operacao.yaml @@ -83,6 +83,9 @@ kind: Service metadata: name: runtime-operacao namespace: {{TENANT}}-prod + labels: + app: runtime-operacao + athleticmap.io/metricas: tenant spec: selector: { app: runtime-operacao } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/moldes/consolidado/72-runtime-saude.yaml b/moldes/consolidado/72-runtime-saude.yaml index 4bbd88e..51acc25 100644 --- a/moldes/consolidado/72-runtime-saude.yaml +++ b/moldes/consolidado/72-runtime-saude.yaml @@ -61,6 +61,9 @@ kind: Service metadata: name: runtime-saude namespace: {{TENANT}}-prod + labels: + app: runtime-saude + athleticmap.io/metricas: tenant spec: selector: { app: runtime-saude } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/moldes/consolidado/90-servico-bff.yaml b/moldes/consolidado/90-servico-bff.yaml index 56a8a85..f3690e1 100644 --- a/moldes/consolidado/90-servico-bff.yaml +++ b/moldes/consolidado/90-servico-bff.yaml @@ -84,6 +84,9 @@ kind: Service metadata: name: servico-bff namespace: {{TENANT}}-prod + labels: + app: servico-bff + athleticmap.io/metricas: tenant spec: selector: { app: servico-bff } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/platform/monitoring/athleticmap-rules.yaml b/platform/monitoring/athleticmap-rules.yaml index eb822c7..d279def 100644 --- a/platform/monitoring/athleticmap-rules.yaml +++ b/platform/monitoring/athleticmap-rules.yaml @@ -191,3 +191,21 @@ spec: annotations: summary: "{{ $labels.deployment }} sem replica disponivel — demo, piloto e acme dependem dele" description: "Os tres tenants migrados param juntos. kubectl -n plataforma-prod get pods -l app={{ $labels.deployment }} e, se for o PgBouncer, lembre que a userlist e montada por subPath e so entra em vigor com restart." + - name: athleticmap.asaas + rules: + # Depois de 15 falhas seguidas o Asaas PAUSA a fila de avisos: os + # eventos ficam guardados 14 dias e depois somem. Nada quebra do nosso + # lado — so para de chegar pagamento. As vigias ja tentam reativar + # (no maximo 1x a cada 6 h); se ainda estiver pausada 30 min depois, a + # causa persiste e alguem tem de olhar o endpoint. + - alert: AthleticMapFilaDoAsaasPausada + expr: max by (namespace, origem) (atm_asaas_filas_pausadas) > 0 + for: 30m + labels: + severity: critical + annotations: + summary: "Fila de avisos do Asaas pausada em {{ $labels.namespace }}" + description: >- + O Asaas parou de mandar avisos ({{ $labels.origem }}). Os guardados + somem em 14 dias. Veja o log (fila de avisos do Asaas PAUSADA) e o + endpoint de webhook; reativar: Integracoes > Webhooks > Remover penalidade. diff --git a/platform/monitoring/tenants-servicemonitor.yaml b/platform/monitoring/tenants-servicemonitor.yaml new file mode 100644 index 0000000..2318529 --- /dev/null +++ b/platform/monitoring/tenants-servicemonitor.yaml @@ -0,0 +1,30 @@ +# ============================================================================= +# As metricas dos tenants VENDIDOS — os que nascem do molde. +# +# Por ROTULO, e nao por nome de namespace: o `athleticmap-runtimes` lista +# demo/piloto/acme pelo nome, e todo tenant novo ficava de fora (medido em +# 2026-09-26: teste5 e zico-0 sem nenhuma metrica). O rotulo vem do molde. +# Ver scripts/metricas_dos_tenants_e_filas.py. +# ============================================================================= +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: athleticmap-tenants + namespace: monitoring + labels: + release: monitoring +spec: + namespaceSelector: + any: true + selector: + matchLabels: + athleticmap.io/metricas: tenant + endpoints: + - port: http + path: /actuator/prometheus + interval: 60s + scrapeTimeout: 20s + metricRelabelings: + - 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 diff --git a/tenants/escolinha-de-teste-2/70-runtime-core.yaml b/tenants/escolinha-de-teste-2/70-runtime-core.yaml index 58ddce8..cebc454 100644 --- a/tenants/escolinha-de-teste-2/70-runtime-core.yaml +++ b/tenants/escolinha-de-teste-2/70-runtime-core.yaml @@ -58,6 +58,9 @@ kind: Service metadata: name: runtime-core namespace: escolinha-de-teste-2-prod + labels: + app: runtime-core + athleticmap.io/metricas: tenant spec: selector: { app: runtime-core } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/tenants/escolinha-de-teste-2/71-runtime-operacao.yaml b/tenants/escolinha-de-teste-2/71-runtime-operacao.yaml index 6361fb4..1d01fd8 100644 --- a/tenants/escolinha-de-teste-2/71-runtime-operacao.yaml +++ b/tenants/escolinha-de-teste-2/71-runtime-operacao.yaml @@ -83,6 +83,9 @@ kind: Service metadata: name: runtime-operacao namespace: escolinha-de-teste-2-prod + labels: + app: runtime-operacao + athleticmap.io/metricas: tenant spec: selector: { app: runtime-operacao } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/tenants/escolinha-de-teste-2/72-runtime-saude.yaml b/tenants/escolinha-de-teste-2/72-runtime-saude.yaml index 8498b8c..e0ca154 100644 --- a/tenants/escolinha-de-teste-2/72-runtime-saude.yaml +++ b/tenants/escolinha-de-teste-2/72-runtime-saude.yaml @@ -61,6 +61,9 @@ kind: Service metadata: name: runtime-saude namespace: escolinha-de-teste-2-prod + labels: + app: runtime-saude + athleticmap.io/metricas: tenant spec: selector: { app: runtime-saude } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/tenants/escolinha-de-teste-2/90-servico-bff.yaml b/tenants/escolinha-de-teste-2/90-servico-bff.yaml index 79749c2..48b9428 100644 --- a/tenants/escolinha-de-teste-2/90-servico-bff.yaml +++ b/tenants/escolinha-de-teste-2/90-servico-bff.yaml @@ -84,6 +84,9 @@ kind: Service metadata: name: servico-bff namespace: escolinha-de-teste-2-prod + labels: + app: servico-bff + athleticmap.io/metricas: tenant spec: selector: { app: servico-bff } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/tenants/escolinha-de-teste/70-runtime-core.yaml b/tenants/escolinha-de-teste/70-runtime-core.yaml index d74f8a5..050238c 100644 --- a/tenants/escolinha-de-teste/70-runtime-core.yaml +++ b/tenants/escolinha-de-teste/70-runtime-core.yaml @@ -58,6 +58,9 @@ kind: Service metadata: name: runtime-core namespace: escolinha-de-teste-prod + labels: + app: runtime-core + athleticmap.io/metricas: tenant spec: selector: { app: runtime-core } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/tenants/escolinha-de-teste/71-runtime-operacao.yaml b/tenants/escolinha-de-teste/71-runtime-operacao.yaml index 5b0b693..12e6d74 100644 --- a/tenants/escolinha-de-teste/71-runtime-operacao.yaml +++ b/tenants/escolinha-de-teste/71-runtime-operacao.yaml @@ -83,6 +83,9 @@ kind: Service metadata: name: runtime-operacao namespace: escolinha-de-teste-prod + labels: + app: runtime-operacao + athleticmap.io/metricas: tenant spec: selector: { app: runtime-operacao } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/tenants/escolinha-de-teste/72-runtime-saude.yaml b/tenants/escolinha-de-teste/72-runtime-saude.yaml index 7cd3501..8233f27 100644 --- a/tenants/escolinha-de-teste/72-runtime-saude.yaml +++ b/tenants/escolinha-de-teste/72-runtime-saude.yaml @@ -61,6 +61,9 @@ kind: Service metadata: name: runtime-saude namespace: escolinha-de-teste-prod + labels: + app: runtime-saude + athleticmap.io/metricas: tenant spec: selector: { app: runtime-saude } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/tenants/escolinha-de-teste/90-servico-bff.yaml b/tenants/escolinha-de-teste/90-servico-bff.yaml index fe156cf..f3300a9 100644 --- a/tenants/escolinha-de-teste/90-servico-bff.yaml +++ b/tenants/escolinha-de-teste/90-servico-bff.yaml @@ -84,6 +84,9 @@ kind: Service metadata: name: servico-bff namespace: escolinha-de-teste-prod + labels: + app: servico-bff + athleticmap.io/metricas: tenant spec: selector: { app: servico-bff } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/tenants/teste5/70-runtime-core.yaml b/tenants/teste5/70-runtime-core.yaml index 19bd06b..28b18e3 100644 --- a/tenants/teste5/70-runtime-core.yaml +++ b/tenants/teste5/70-runtime-core.yaml @@ -58,6 +58,9 @@ kind: Service metadata: name: runtime-core namespace: teste5-prod + labels: + app: runtime-core + athleticmap.io/metricas: tenant spec: selector: { app: runtime-core } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/tenants/teste5/71-runtime-operacao.yaml b/tenants/teste5/71-runtime-operacao.yaml index 6c78cbd..36bf792 100644 --- a/tenants/teste5/71-runtime-operacao.yaml +++ b/tenants/teste5/71-runtime-operacao.yaml @@ -83,6 +83,9 @@ kind: Service metadata: name: runtime-operacao namespace: teste5-prod + labels: + app: runtime-operacao + athleticmap.io/metricas: tenant spec: selector: { app: runtime-operacao } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/tenants/teste5/72-runtime-saude.yaml b/tenants/teste5/72-runtime-saude.yaml index 07766e9..95068e2 100644 --- a/tenants/teste5/72-runtime-saude.yaml +++ b/tenants/teste5/72-runtime-saude.yaml @@ -61,6 +61,9 @@ kind: Service metadata: name: runtime-saude namespace: teste5-prod + labels: + app: runtime-saude + athleticmap.io/metricas: tenant spec: selector: { app: runtime-saude } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/tenants/teste5/90-servico-bff.yaml b/tenants/teste5/90-servico-bff.yaml index 048acbb..cf93a0c 100644 --- a/tenants/teste5/90-servico-bff.yaml +++ b/tenants/teste5/90-servico-bff.yaml @@ -84,6 +84,9 @@ kind: Service metadata: name: servico-bff namespace: teste5-prod + labels: + app: servico-bff + athleticmap.io/metricas: tenant spec: selector: { app: servico-bff } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/tenants/zico-0/70-runtime-core.yaml b/tenants/zico-0/70-runtime-core.yaml index 70dbee0..c118981 100644 --- a/tenants/zico-0/70-runtime-core.yaml +++ b/tenants/zico-0/70-runtime-core.yaml @@ -58,6 +58,9 @@ kind: Service metadata: name: runtime-core namespace: zico-0-prod + labels: + app: runtime-core + athleticmap.io/metricas: tenant spec: selector: { app: runtime-core } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/tenants/zico-0/71-runtime-operacao.yaml b/tenants/zico-0/71-runtime-operacao.yaml index 284eca1..c016712 100644 --- a/tenants/zico-0/71-runtime-operacao.yaml +++ b/tenants/zico-0/71-runtime-operacao.yaml @@ -83,6 +83,9 @@ kind: Service metadata: name: runtime-operacao namespace: zico-0-prod + labels: + app: runtime-operacao + athleticmap.io/metricas: tenant spec: selector: { app: runtime-operacao } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/tenants/zico-0/72-runtime-saude.yaml b/tenants/zico-0/72-runtime-saude.yaml index a38a37f..aa2acd4 100644 --- a/tenants/zico-0/72-runtime-saude.yaml +++ b/tenants/zico-0/72-runtime-saude.yaml @@ -61,6 +61,9 @@ kind: Service metadata: name: runtime-saude namespace: zico-0-prod + labels: + app: runtime-saude + athleticmap.io/metricas: tenant spec: selector: { app: runtime-saude } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }] diff --git a/tenants/zico-0/90-servico-bff.yaml b/tenants/zico-0/90-servico-bff.yaml index 0892c61..3da32ab 100644 --- a/tenants/zico-0/90-servico-bff.yaml +++ b/tenants/zico-0/90-servico-bff.yaml @@ -84,6 +84,9 @@ kind: Service metadata: name: servico-bff namespace: zico-0-prod + labels: + app: servico-bff + athleticmap.io/metricas: tenant spec: selector: { app: servico-bff } - ports: [{ port: 80, targetPort: 8083 }] + ports: [{ name: http, port: 80, targetPort: 8083 }]