Triage Commands (Copy/Paste)¶
These are intentionally generic templates. Replace placeholders like <service>, <namespace>, <route>, <method>, <traceId>, <requestId>.
Logs¶
Local files (JSON logs)¶
Filter JSON logs by traceId or requestId:
Docker Compose¶
Search within logs:
Kubernetes¶
kubectl -n <namespace> get pods -l app=<service>
kubectl -n <namespace> logs deploy/<service> --since=10m
Search for a trace/request ID:
Split by container (if multi-container pod):
Traces¶
Trace UI (Tempo / Jaeger / vendor APM)¶
If you have a traceId, search for it in your trace UI and inspect:
- slowest span(s)
- first error span(s)
- retries (repeated similar spans)
- deadline/timeout signals (
DEADLINE_EXCEEDED,ETIMEDOUT)
Tempo HTTP API (optional)¶
If you have Tempo reachable locally:
List services involved (heuristic; schema varies by Tempo version):
curl -sS "http://<tempo-host>:3200/api/traces/<traceId>" \
| jq -r '.. | objects | .resource?.attributes? // empty | .[]? | select(.key=="service.name") | .value?.stringValue' \
| sort -u
Metrics (Prometheus-compatible)¶
Quick “is it on fire?” check¶
HTTP RED (examples)¶
Request rate:
curl -sS -G "http://<prom-host>:9090/api/v1/query" \
--data-urlencode 'query=sum(rate(http_server_requests_total{service="<service>"}[5m]))'
Error rate:
curl -sS -G "http://<prom-host>:9090/api/v1/query" \
--data-urlencode 'query=sum(rate(http_server_requests_total{service="<service>",status=~"5.."}[5m]))'
p95 latency (histogram):
curl -sS -G "http://<prom-host>:9090/api/v1/query" \
--data-urlencode 'query=histogram_quantile(0.95, sum by (le) (rate(http_server_request_duration_seconds_bucket{service="<service>"}[5m])))'
gRPC RED (examples)¶
RPC rate and errors:
curl -sS -G "http://<prom-host>:9090/api/v1/query" \
--data-urlencode 'query=sum(rate(grpc_server_handled_total{grpc_service="<Service>",grpc_method="<Method>"}[5m]))'
curl -sS -G "http://<prom-host>:9090/api/v1/query" \
--data-urlencode 'query=sum(rate(grpc_server_handled_total{grpc_service="<Service>",grpc_method="<Method>",grpc_code!="OK"}[5m]))'
Saturation / resource hints (examples)¶
Pod CPU/memory (k8s metrics-server required):
Node.js event loop lag (if exported):
curl -sS -G "http://<prom-host>:9090/api/v1/query" \
--data-urlencode 'query=max(nodejs_eventloop_lag_p99_seconds{service="<service>"})'
Repro / boundary checks¶
HTTP¶
gRPC (grpcurl)¶
List services:
Call a method:
Async consumers (common hints)¶
These depend on your queue/broker. Examples:
- Redis Streams:
redis-cli XLEN <stream>redis-cli XINFO GROUPS <stream>- Kafka:
kafka-consumer-groups --bootstrap-server <broker> --describe --group <group>