fix(soc): trazer configs do Grafana/Promtail para o git e corrigir volumes
- Adiciona soc/promtail/config.yml (antes fora do git, em /opt/soc/) - Adiciona soc/grafana/provisioning/alerting/alerts.yml (antes fora do git) - Adiciona soc/grafana/provisioning/datasources/datasources.yml (antes fora do git) - Corrige docker-compose.yml: volumes do Promtail e Grafana agora apontam para paths dentro do repo (/home/deploy/stack/soc/) ao invés de /opt/soc/ - Corrige mount dos containers Docker: host path mapeia para /var/lib/docker/containers (path padrão que o Promtail espera dentro do container) - Corrige .gitignore: ignora apenas dados binários (grafana-data, loki-data, prom-data), não mais todos os subdiretórios do soc/ - Alertas Loki usam count_over_time() para retornar métrica numérica compatível
This commit is contained in:
@@ -0,0 +1,145 @@
|
||||
apiVersion: 1
|
||||
groups:
|
||||
# ──────────────────────────────────────────────────────────────────
|
||||
# Alertas de infraestrutura (baseados em métricas do Prometheus)
|
||||
# ──────────────────────────────────────────────────────────────────
|
||||
- name: SOC Alerts
|
||||
folder: SOC
|
||||
interval: 30s
|
||||
rules:
|
||||
- uid: cpu_high
|
||||
title: CPU ALTA
|
||||
condition: A
|
||||
data:
|
||||
- refId: A
|
||||
datasourceUid: PBFA97CFB590B2093
|
||||
relativeTimeRange:
|
||||
from: 300
|
||||
to: 0
|
||||
model:
|
||||
expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
|
||||
noDataState: OK
|
||||
execErrState: OK
|
||||
for: 2m
|
||||
annotations:
|
||||
description: "CPU acima de 80%"
|
||||
|
||||
- uid: falco_critical
|
||||
title: FALCO CRITICAL
|
||||
condition: A
|
||||
data:
|
||||
- refId: A
|
||||
datasourceUid: P8E80F9AEF21F6940
|
||||
relativeTimeRange:
|
||||
from: 300
|
||||
to: 0
|
||||
model:
|
||||
expr: '{job="falco"} |= "CRITICAL"'
|
||||
for: 1m
|
||||
annotations:
|
||||
description: "Evento crítico detectado pelo Falco"
|
||||
|
||||
- uid: crypto_attack
|
||||
title: POSSÍVEL CRYPTOJACKING
|
||||
condition: A
|
||||
data:
|
||||
- refId: A
|
||||
datasourceUid: PBFA97CFB590B2093
|
||||
relativeTimeRange:
|
||||
from: 300
|
||||
to: 0
|
||||
model:
|
||||
expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
|
||||
- refId: B
|
||||
datasourceUid: P8E80F9AEF21F6940
|
||||
relativeTimeRange:
|
||||
from: 300
|
||||
to: 0
|
||||
model:
|
||||
expr: '{job="falco"} |= "xmrig"'
|
||||
for: 1m
|
||||
annotations:
|
||||
description: "CPU alta + minerador detectado"
|
||||
|
||||
# ──────────────────────────────────────────────────────────────────
|
||||
# Alertas de aplicação (baseados em logs dos containers via Loki)
|
||||
# Datasource: Loki (uid: P8E80F9AEF21F6940)
|
||||
# Container monitorado: newwhats-backend-prod
|
||||
# ──────────────────────────────────────────────────────────────────
|
||||
- name: App Alerts
|
||||
folder: SOC
|
||||
interval: 60s
|
||||
rules:
|
||||
- uid: backend_unhandled_exception
|
||||
title: BACKEND - Exceção Não Tratada
|
||||
condition: A
|
||||
data:
|
||||
- refId: A
|
||||
datasourceUid: P8E80F9AEF21F6940
|
||||
relativeTimeRange:
|
||||
from: 300
|
||||
to: 0
|
||||
model:
|
||||
expr: |
|
||||
count_over_time(
|
||||
{container="newwhats-backend-prod"}
|
||||
|~ "(?i)(unhandledRejection|uncaughtException|TypeError: Cannot|ReferenceError:|Cannot read properties)"
|
||||
[5m]
|
||||
) > 0
|
||||
noDataState: OK
|
||||
execErrState: OK
|
||||
for: 0s
|
||||
annotations:
|
||||
summary: "Exceção não tratada detectada no backend WhatsApp"
|
||||
description: "O container newwhats-backend-prod emitiu uma exceção crítica não tratada. Verifique os logs e o código-fonte."
|
||||
labels:
|
||||
severity: critical
|
||||
|
||||
- uid: backend_prisma_p2002
|
||||
title: BACKEND - Colisão Prisma P2002
|
||||
condition: A
|
||||
data:
|
||||
- refId: A
|
||||
datasourceUid: P8E80F9AEF21F6940
|
||||
relativeTimeRange:
|
||||
from: 300
|
||||
to: 0
|
||||
model:
|
||||
expr: |
|
||||
count_over_time(
|
||||
{container="newwhats-backend-prod"} |= "P2002"
|
||||
[5m]
|
||||
) > 0
|
||||
noDataState: OK
|
||||
execErrState: OK
|
||||
for: 2m
|
||||
annotations:
|
||||
summary: "Violação de unicidade P2002 detectada no banco de dados"
|
||||
description: "Prisma está relatando violações de constraint única (P2002). Pode indicar race condition em mensagens concorrentes."
|
||||
labels:
|
||||
severity: warning
|
||||
|
||||
- uid: backend_http_5xx
|
||||
title: BACKEND - Erros HTTP 5xx
|
||||
condition: A
|
||||
data:
|
||||
- refId: A
|
||||
datasourceUid: P8E80F9AEF21F6940
|
||||
relativeTimeRange:
|
||||
from: 300
|
||||
to: 0
|
||||
model:
|
||||
expr: |
|
||||
count_over_time(
|
||||
{container="newwhats-backend-prod"}
|
||||
|~ "statusCode.*5[0-9]{2}|HTTP.*5[0-9]{2}|\"status\":5[0-9]{2}"
|
||||
[5m]
|
||||
) > 0
|
||||
noDataState: OK
|
||||
execErrState: OK
|
||||
for: 2m
|
||||
annotations:
|
||||
summary: "Erros HTTP 5xx detectados no backend"
|
||||
description: "O backend está retornando erros 5xx. Pode indicar falha interna, banco de dados indisponível ou bug de runtime."
|
||||
labels:
|
||||
severity: warning
|
||||
@@ -0,0 +1,11 @@
|
||||
apiVersion: 1
|
||||
datasources:
|
||||
- name: Prometheus
|
||||
type: prometheus
|
||||
access: proxy
|
||||
url: http://prometheus:9090
|
||||
|
||||
- name: Loki
|
||||
type: loki
|
||||
access: proxy
|
||||
url: http://loki:3100
|
||||
Reference in New Issue
Block a user