SigNoz Smoke Verify
Preconditions¶
Start the local stack (MBPanel + open-source SigNoz):
SigNoz UI: http://localhost:8080
Smoke checklist (curl)¶
Set the backend base URL (adjust if you changed BACKEND_PORT):
If you don't have jq installed, you can either:
- omit | jq . entirely, or
- use: python3 -m json.tool
1) Confirm HTTP is alive (creates a request span)¶
curl -sS "$BASE/api/v1/health/ping"
# or:
# curl -sS "$BASE/api/v1/health/ping" | python3 -m json.tool
2) Trigger DB + Redis + RabbitMQ (and broker consume) in one call¶
This endpoint is disabled in production (ENVIRONMENT=production returns 404).
curl -sS -X POST "$BASE/api/v1/health/observability-smoke"
# or:
# curl -sS -X POST "$BASE/api/v1/health/observability-smoke" | python3 -m json.tool
What this single request exercises:
- Redis: INCR + EXPIRE on a non-PII key (mbpanel:observability:smoke)
- PostgreSQL: SELECT 1 via SQLAlchemy async session
- RabbitMQ: publish an event with routing key team.0.job.0.status
- SSE broker: consumes that event and runs its internal fan-out path (even if no SSE client is connected)
Where to look in SigNoz UI¶
A) Traces¶
- Open SigNoz:
http://localhost:8080 - Go to Traces → Explorer
- Filter Service =
mbpanel-api - Set time range to “Last 15 min”
You should see traces whose root span name looks like:
- GET /api/v1/health/ping
- POST /api/v1/health/observability-smoke
Within the observability-smoke trace, look for child spans like:
- redis.incr / redis.expire
- db.query
- rabbitmq.publish
- sse.broker.handle_message (from the broker consumer loop)
Import: FastAPI Errors dashboard (JSON)¶
This repo includes an importable SigNoz dashboard JSON derived from SigNoz’s official HTTP API Monitoring template.
- File:
docs/development/signoz/dashboards/fastapi-errors-mbpanel-api.json - What it shows:
- HTTP 5xx rate by route
- HTTP 4xx rate by route
- Top failing endpoints (5xx)
- Slowest failing requests (5xx)
- 5xx latency P90 by route
To import: - SigNoz UI → Dashboards → New Dashboard → Import JSON → upload the file above.
B) Metrics¶
MBPanel’s metrics export pipeline is enabled, but MBPanel currently doesn’t define custom OTEL metrics instruments. So it’s normal to see no MBPanel-specific application metrics yet until we add meters/counters/histograms.
If you want metrics next, tell me what you want first (HTTP latency histogram, RabbitMQ consumed/dropped counters, Redis latency, etc.) and I’ll add them.
C) Logs¶
SigNoz’s Logs Explorer supports native OpenTelemetry attributes (service name, environment, trace/span IDs, etc.) per their log ingestion guide.
- In the SigNoz UI, open Logs → Explorer.
- Filter Service =
mbpanel-apiand Environment =development. - Trigger the smoke endpoint again (
POST /api/v1/health/observability-smoke) and watch newrequest_completed/request_failedevents arrive with matchingtrace_id/span_id. You can click the trace icon in the log row to jump directly into the correlated trace. - Optional: add
severity_textfilters (INFO,ERROR) or search for structured keys liketeam_id,user_id, orcorrelation_id.
If no data shows up, confirm:
OTEL_LOGS_ENABLED=trueon the backend container (seedocker-compose.signoz.yml), and- the SigNoz collector’s
logspipeline is healthy (docker logs signoz-otel-collectorshould showExporting log recordsmessages).