Investigaciones (forensics)¶
Investigar un strike¶
# 1. Audit log inmutable (toda operación API quedó registrada).
curl -sS -H "Authorization: Bearer $TOK" \
"http://qrsgen:3100/api/audit?instance=whatsapp-main&limit=200" | jq
# 2. Pico de envíos previo.
WEEK_AGO=$(date -u -d '7 days ago' +%Y-%m-%d)
TODAY=$(date -u +%Y-%m-%d)
curl -sS -H "Authorization: Bearer $TOK" \
"http://qrsgen:3100/api/instances/whatsapp-main/usage?from=$WEEK_AGO&to=$TODAY" | jq
# 3. Snapshot actual de ban-risk.
curl -sS -H "Authorization: Bearer $TOK" \
http://qrsgen:3100/api/instances/whatsapp-main/ban-risk | jq
# 4. Lifecycle events recientes en Prometheus.
curl -sS http://qrsgen:3100/metrics | grep 'qrsgen_lifecycle_events_total.*strike\|.*ban_risk\|.*spam_blocked'
Encontrar mensajes que expiraron en el outbox¶
docker exec postgres psql -U postgres -d bridge -c "
SELECT id, instance, remote_jid, enqueued_at, expires_at, attempts, last_error,
payload->>'content' AS preview
FROM bridge_outgoing_queue
WHERE status='expired'
ORDER BY enqueued_at DESC LIMIT 50;"
Auditoría de cambios de owner_tag¶
curl -sS -H "Authorization: Bearer $TOK" \
"http://qrsgen:3100/api/audit?limit=500" \
| jq '.entries[] | select(.action=="instance.patch" and .metadata.owner_tag_set==true)'
Glosario¶
Forensics: investigación post-incidente. Combina audit log (cronología de cambios), usage (volúmenes), ban-risk (estado actual) para reconstruir qué pasó.
Pico de envíos: incremento brusco en el counter messages_out
durante una ventana corta. Indicador típico de antes de un strike.
Audit query: consulta al endpoint /api/audit para inspeccionar
operaciones pasadas. Filtrable por instancia y limitable.
Outbox expirado: mensaje en el outbox que no se entregó antes del
TTL (5 min). qrsgen lo marca como expired y emite el evento
lifecycle.
Strike investigation: protocolo para entender qué causó una sanción WhatsApp. Empieza por audit + usage en las horas previas.
Cadena de causalidad: secuencia de eventos que llevó a un incidente. El audit log da la cronología; el usage da los volúmenes; el ban-risk da el indicador previo.