Diagnóstico rápido¶
"¿Está vivo qrsgen?"¶
Si el container no está running pero tampoco crashea:
"¿Cuántas instancias están conectadas?"¶
curl -sS -H "Authorization: Bearer $TOK" http://qrsgen:3100/api/instances \
| jq -r '.[] | [.name, .state, .jid // ""] | @tsv'
"¿Una instancia específica está OK?"¶
Campos clave: state (ready = OK), last_event_at (¿hace cuánto que
no pasa nada?), owner_tag (tenant).
"¿Cuántos mensajes han pasado hoy?"¶
Vía métricas:
O vía usage tracking:
TODAY=$(date -u +%Y-%m-%d)
curl -sS -H "Authorization: Bearer $TOK" \
"http://qrsgen:3100/api/usage?from=$TODAY&to=$TODAY" | jq
"¿Está bloqueando spam?"¶
O en el snapshot de instancia, ver el campo spamguard_blocks.
"¿Hay mensajes encolados sin entregar?"¶
curl -sS -H "Authorization: Bearer $TOK" \
http://qrsgen:3100/api/instances/whatsapp-main/outbox | jq
Campos: pending (los que aún se intentarán entregar), sent,
expired, failed. Si pending > 0 durante mucho rato, la instancia
probablemente está disconnected.
"¿Estamos cerca de un ban?"¶
curl -sS -H "Authorization: Bearer $TOK" \
http://qrsgen:3100/api/instances/whatsapp-main/ban-risk | jq
Mira level (ok / low / moderate / high) y alerts. Si hay
alerts: ["high_velocity"] o similar, reduce ritmo de envíos.
Glosario¶
Liveness probe: comprobación de que el proceso está vivo y responde.
Para qrsgen es /api/health.
State: estado actual de una instancia. Valores: qr_pending,
paired, ready / connected, connecting, disconnected,
logged_out.
last_event_at: timestamp de la última transición lifecycle de la instancia. Útil para saber si lleva mucho rato silenciosa.
Snapshot live: foto del estado actual del sistema (instances conectadas en este momento). Distinto de los counters históricos acumulados.
Counter histórico: contador que solo crece (mensajes totales,
spamguard blocks acumulados). Para tasas se calcula derivada
(rate()).
Ban-risk score: agregado 0-1 de las tres señales del BanWatcher (velocity / diversity / delivery_ratio). Más alto = más cerca del ban.