Risoluto provides multiple observability surfaces: Prometheus metrics, real-time event streams, audit logs, request tracing, and structured logs.Documentation Index
Fetch the complete documentation index at: https://docs.risolu.to/llms.txt
Use this file to discover all available pages before exploring further.
- Prometheus
- Dashboard
- API
Prometheus Metrics
Available atGET /metrics in Prometheus exposition format. Scrape at 10-15 second intervals.Metric reference
HTTP metrics
HTTP metrics
| Metric | Type | Labels | Description |
|---|---|---|---|
risoluto_http_requests_total | Counter | method, status | Total HTTP requests |
risoluto_http_request_duration_seconds | Histogram | method | Request latency distribution |
Orchestrator metrics
Orchestrator metrics
| Metric | Type | Labels | Description |
|---|---|---|---|
risoluto_orchestrator_polls_total | Counter | status | Poll cycles (success, error, skipped) |
Agent metrics
Agent metrics
| Metric | Type | Labels | Description |
|---|---|---|---|
risoluto_agent_runs_total | Counter | outcome | Agent completions (completed, failed, oom, stalled) |
risoluto_container_cpu_percent | Gauge | container | Sandbox container CPU usage percentage |
risoluto_container_memory_percent | Gauge | container | Sandbox container memory usage percentage |
Webhook metrics
Webhook metrics
Webhook delivery pipeline metrics — ingest volume, duplicate rejection, DLQ routing, backlog depth, and end-to-end processing latency.
Useful queries:
| Metric | Type | Labels | Description |
|---|---|---|---|
risoluto_webhook_deliveries_total | Counter | provider, status | Raw webhook deliveries received |
risoluto_webhook_duplicates_total | Counter | provider | Deliveries rejected as duplicates by the idempotency store |
risoluto_webhook_events_processed_total | Counter | provider, outcome | Events that passed validation and reached the processor |
risoluto_webhook_processor_retries_total | Counter | provider, reason | Retry attempts inside the webhook processor |
risoluto_webhook_dlq_total | Counter | reason | Events moved to the dead-letter queue |
risoluto_webhook_subscription_checks_total | Counter | provider, status | Subscription health checks performed |
risoluto_webhook_backlog_count | Gauge | provider | Current count of unprocessed webhook events |
risoluto_webhook_dlq_count | Gauge | — | Current count of events in the dead-letter queue |
risoluto_webhook_last_delivery_age_seconds | Gauge | provider | Seconds since the last successful delivery |
risoluto_webhook_processing_latency_seconds | Histogram | provider | End-to-end webhook processing latency |
Scrape configuration
Alert rules
Request Tracing
Every request gets anX-Request-ID header:
- Incoming: If the client sends
X-Request-ID, it is preserved - Generated: Otherwise a UUID v4 is assigned
- Response: The ID is always returned in the response headers
Error Tracking
Sentry-compatible error tracking whenSENTRY_DSN is set:
SENTRY_DSN is not set, a no-op tracker is used with zero overhead.
Process Logs
Logs are emitted to stdout via Pino in structured format:| Variable | Values | Default |
|---|---|---|
RISOLUTO_LOG_FORMAT | logfmt, json | logfmt |
LOG_LEVEL | trace through fatal | info |
Data Persistence
All attempt and event data is stored in SQLite (risoluto.db) with WAL mode:
Querying data
What’s Next
Monitoring Stack
Set up Prometheus and Grafana with pre-built queries and alerts.
Troubleshooting
Diagnose common failures and recovery procedures.
Notifications
Configure Slack notifications for agent lifecycle events.
Dashboard Guide
Board view, issue inspector, and live event stream.