01 — The old way
A tab for every click
Filter the live tail to the failing request, then open a line for context. Every look opens another tab — and the investigation starts to scatter.
logs.example.com/api-gateway
api-gateway · MAY 11, 13:00 UTC · 180 lines
- @kc4qnServer listening on port 3000
- @m7w3pServer listening on port 3000
- @t2x8rServer listening on port 3000
- @kc4qnHeartbeat sent
- @m7w3pHealthcheck OK
- @t2x8rGET /api/products → 200 in 44ms
- @kc4qnMetrics flushed (count=41)
- @m7w3pDB query: SELECT products WHERE category = $1 (12ms)
- @t2x8rDEBUG GC paused 17ms
- @m7w3pBackground job 'catalog-sync' completed in 41ms
- @t2x8rCache invalidated: cart
- @kc4qnGET /api/sessions → 200 in 52ms
- @m7w3pHeartbeat sent
- @kc4qnPOST /api/cart/items → 201 in 24ms
- @kc4qnGET /api/health → 200 in 3ms req=p2x6n1
- @t2x8rHealthcheck OK
- @m7w3pGET /api/products → 200 in 50ms
- @t2x8rDB query: SELECT carts WHERE session = $1 (5ms)
- @t2x8rHeartbeat sent
- @t2x8rGET /api/products/7 → 200 in 54ms
- @kc4qnHealthcheck OK
- @kc4qnDEBUG GC paused 11ms
- @m7w3pMetrics flushed (count=24)
- @kc4qnGET /api/cart → 200 in 57ms
- @kc4qnHeartbeat sent
- @t2x8rBackground job 'catalog-sync' completed in 65ms
- @m7w3pGET /api/products → 200 in 22ms req=k9b3c7
- @kc4qnCache invalidated: sessions
- @m7w3pGET /api/sessions → 200 in 58ms
- @m7w3pHealthcheck OK
- @m7w3pPOST /api/cart/items → 201 in 40ms
- @kc4qnDB query: UPDATE sessions WHERE token = $1 (18ms)
- @m7w3pDEBUG GC paused 20ms
- @t2x8rGET /api/products → 200 in 8ms
- @kc4qnWARN Slow upstream: inventory-svc responded in 460ms
- @m7w3pHeartbeat sent
- @t2x8rHealthcheck OK
- @kc4qnGET /api/sessions → 200 in 10ms
- @t2x8rMetrics flushed (count=33)
- @t2x8rGET /api/cart → 200 in 12ms req=p2x6n1
- @t2x8rHeartbeat sent
- @m7w3pDB query: UPDATE sessions WHERE token = $1 (14ms)
- @m7w3pGET /api/cart → 200 in 9ms
- @kc4qnHealthcheck OK
- @m7w3pCache invalidated: sessions
- @t2x8rPOST /api/cart/items → 201 in 31ms
- @t2x8rDEBUG GC paused 21ms
- @kc4qnBackground job 'metrics-flush' completed in 87ms
- @t2x8rGET /api/cart → 200 in 15ms
- @kc4qnHeartbeat sent
- @kc4qnPOST /api/cart/items → 201 in 18ms req=k9b3c7
- @m7w3pHealthcheck OK
- @kc4qnGET /api/sessions → 200 in 22ms
- @t2x8rDB query: SELECT carts WHERE session = $1 (9ms)
- @kc4qnMetrics flushed (count=29)
- @m7w3pHeartbeat sent
- @m7w3pGET /api/products/18 → 200 in 31ms
- @m7w3pWARN Cache miss rate elevated: 0.35 (expected <0.30)
- @kc4qnDEBUG GC paused 18ms
- @t2x8rHealthcheck OK
- @t2x8rGET /api/products/18 → 200 in 31ms
- @kc4qnPOST /api/cart/items → 201 in 15ms
- @t2x8rHeartbeat sent
- @t2x8rCache invalidated: sessions
- @m7w3pBackground job 'catalog-sync' completed in 45ms
- @kc4qnDB query: UPDATE sessions WHERE token = $1 (26ms)
- @kc4qnGET /api/cart → 200 in 39ms
- @m7w3pDEBUG Cache warm complete: catalog (8041 keys)
- @kc4qnHealthcheck OK
- @kc4qnHeartbeat sent
- @m7w3pMetrics flushed (count=33)
- @m7w3pGET /api/products/18 → 200 in 37ms
- @m7w3pDEBUG GC paused 20ms
- @t2x8rGET /api/health → 200 in 41ms
- @m7w3pHealthcheck OK
- @m7w3pHeartbeat sent
- @m7w3pDB query: SELECT inventory WHERE sku = $1 (15ms)
- @m7w3pPOST /api/cart/items → 201 in 32ms
- @m7w3pWARN Slow upstream: search-svc responded in 535ms
- @kc4qnGET /api/products → 200 in 44ms
- @t2x8rGET /api/cart → 200 in 9ms req=p2x6n1
- @kc4qnCache invalidated: catalog
- @t2x8rBackground job 'metrics-flush' completed in 55ms
- @t2x8rHealthcheck OK
- @t2x8rDEBUG GC paused 19ms
- @m7w3pGET /api/cart → 200 in 45ms
- @t2x8rHeartbeat sent
- @t2x8rMetrics flushed (count=36)
- @t2x8rDB query: SELECT inventory WHERE sku = $1 (11ms)
- @t2x8rGET /api/products/18 → 200 in 55ms
- @kc4qnHealthcheck OK
- @m7w3pWARN Upstream latency p99 218ms (inventory-svc)
- @kc4qnHeartbeat sent
- @kc4qnGET /api/cart → 200 in 57ms
- @t2x8rPOST /api/cart/items → 201 in 38ms
- @kc4qnDEBUG GC paused 13ms
- @kc4qnGET /api/products/42 → 200 in 15ms req=k9b3c7
- @m7w3pGET /api/products → 200 in 56ms
- @m7w3pHealthcheck OK
- @m7w3pHeartbeat sent
- @m7w3pCache invalidated: catalog
- @kc4qnDB query: UPDATE sessions WHERE token = $1 (6ms)
- @kc4qnBackground job 'cache-warm' completed in 68ms
- @kc4qnMetrics flushed (count=37)
- @t2x8rGET /api/products → 200 in 62ms
- @m7w3pDEBUG Healthcheck ok — 3/3 instances ready
- @t2x8rHeartbeat sent
- @t2x8rHealthcheck OK
- @kc4qnGET /api/cart → 200 in 9ms
- @kc4qnWARN Config hot-reload applied: db.pool.max 20 → 5
- @m7w3pDEBUG GC paused 20ms
- @m7w3pPOST /api/cart/items → 201 in 26ms
- @m7w3pDB query: SELECT inventory WHERE sku = $1 (23ms)
- @kc4qnDEBUG db pool: 4/5 in use, 1 waiting req=k9b3c7
- @m7w3pGET /api/products/7 → 200 in 18ms
- @kc4qnHeartbeat sent
- @kc4qnHealthcheck OK
- @kc4qnGET /api/products → 200 in 240ms req=k9b3c7
- @t2x8rGET /api/products/7 → 200 in 18ms
- @m7w3pMetrics flushed (count=34)
- @t2x8rCache invalidated: products
- @m7w3pBackground job 'metrics-flush' completed in 87ms
- @m7w3pHeartbeat sent
- @m7w3pGET /api/products → 200 in 26ms
- @t2x8rDEBUG GC paused 19ms
- @m7w3pHealthcheck OK
- @kc4qnWARN db pool wait 1200ms req=k9b3c7
- @t2x8rDB query: SELECT products WHERE category = $1 (12ms)
- @m7w3pGET /api/products/7 → 200 in 24ms
- @m7w3pPOST /api/cart/items → 201 in 34ms
- @t2x8rGET /api/cart → 200 in 10ms req=p2x6n1
- @kc4qnDEBUG db pool: 5/5 in use, 2 waiting req=k9b3c7
- @t2x8rHeartbeat sent
- @t2x8rHealthcheck OK
- @t2x8rGET /api/sessions → 200 in 28ms
- @kc4qnWARN db pool wait 2600ms — 0 idle connections
- @t2x8rMetrics flushed (count=40)
- @kc4qnDEBUG GC paused 12ms
- @t2x8rGET /api/products/18 → 200 in 31ms
- @kc4qnHeartbeat sent
- @m7w3pDB query: SELECT products WHERE category = $1 (8ms)
- @t2x8rCache invalidated: catalog
- @kc4qnHealthcheck OK
- @kc4qnDEBUG db pool: 5/5 in use, 3 waiting req=k9b3c7
- @t2x8rBackground job 'metrics-flush' completed in 39ms
- @kc4qnWARN db pool wait 1900ms req=k9b3c7
- @m7w3pGET /api/products → 200 in 32ms
- @kc4qnPOST /api/checkout received req=r4d8a2
- @kc4qnDEBUG Acquiring db connection (pool 5/5 in use) req=r4d8a2
- @kc4qnWARN db pool wait 4200ms — 0 idle connections req=r4d8a2
- @m7w3pPOST /api/checkout → 200 in 120ms req=p2x6n1
- @t2x8rPOST /api/cart/items → 201 in 39ms
- @kc4qnERROR checkout failed: db pool timeout after 5000ms req=r4d8a2
- @kc4qnPOST /api/checkout → 503 in 5002ms req=r4d8a2
- @kc4qnPOST /api/cart/items received req=k9b3c7
- @m7w3pHeartbeat sent
- @kc4qnWARN db pool wait 4600ms — 0 idle connections req=k9b3c7
- @kc4qnERROR add-to-cart failed: db pool timeout after 5000ms req=k9b3c7
- @kc4qnPOST /api/cart/items → 503 in 5001ms req=k9b3c7
- @t2x8rGET /api/cart → 200 in 12ms req=p2x6n1
- @kc4qnDEBUG Retry scheduled for checkout (attempt 2) req=r4d8a2
- @kc4qnWARN db pool wait 4800ms — 0 idle connections req=r4d8a2
- @t2x8rGET /api/products/7 → 200 in 42ms
- @kc4qnERROR checkout retry failed: db pool timeout after 5000ms req=r4d8a2
- @m7w3pGET /api/products → 200 in 19ms req=p2x6n1
- @m7w3pHealthcheck OK
- @kc4qnERROR health: db pool saturated 5/5 — 11 requests queued
- @kc4qncheckout abandoned by client (gateway timeout) req=r4d8a2
- @kc4qnWARN Config hot-reload applied: db.pool.max 5 → 20
- @m7w3pDB query: SELECT inventory WHERE sku = $1 (27ms)
- @kc4qnPOST /api/cart/items → 201 in 17ms req=k9b3c7
- @kc4qnPOST /api/checkout → 200 in 96ms req=p2x6n1
- @m7w3pDEBUG GC paused 17ms
- @m7w3pDEBUG Healthcheck ok — 3/3 instances ready
- @kc4qnGET /api/products → 200 in 44ms
- @t2x8rHeartbeat sent
- @kc4qnMetrics flushed (count=23)
- @m7w3pGET /api/products/18 → 200 in 43ms
- @t2x8rHealthcheck OK
- @m7w3pCache invalidated: sessions