Skip to main content
Version: 0.3

Cookbook

Practical query recipes for common ROS2 observability tasks. Copy, adapt, and run against your telemetry data.

Basic queries​

Find all error spans​

FROM traces WHERE status = 'ERROR'

Error logs at a specific severity​

FROM logs WHERE severity = 'ERROR'

Slowest actions (last hour)​

SELECT span_name, duration
FROM traces
WHERE action_name = '/navigate_to_pose' AND duration > 500 ms
SINCE 1 hour ago
ORDER BY duration DESC
LIMIT 20

Filter by ROS2 node​

FROM traces WHERE node = '/bt_navigator'

Robot-scoped query​

FOR ROBOT 'robot_sim_001' FROM logs WHERE severity = 'ERROR'

Read topic messages​

FROM topics WHERE topic_name = '/battery_state' AND fields['percentage'] < 20

Topic alias​

-- Shorthand for: FROM topics WHERE topic_name = '/odom'
FROM odom LIMIT 5

Cross-signal correlation​

SELECT trace_id, span_name_col, service_name, duration, status_code, span_attributes
FROM traces
WHERE status = 'ERROR' AND action_name = '/navigate_to_pose'
DURING(
FROM topics WHERE topic_name = '/battery_state'
AND fields['percentage'] < 15
)
SINCE 6 hours ago

Errors during high CPU load​

FROM traces WHERE status = 'ERROR'
DURING(
FROM metrics WHERE metric_name = 'system.cpu.total_usage_pct'
AND metric_value > 90
)
SINCE yesterday

Causality and message tracing​

Trace full message causality chain​

MESSAGE JOURNEY FOR TRACE 'a3f1c9d2e8b04f7a'

Returns all spans in the causal chain by walking parent_span_id → span_id recursively.

Find message paths for a topic​

MESSAGE PATHS FOR TOPIC '/cmd_vel'

Shows which nodes published and subscribed to /cmd_vel.

All spans for a specific trace​

TRACE 'trace-002'

Robot health and anomaly detection​

Robot health assessment​

HEALTH() FOR ROBOT 'robot_sim_001'

Fan-out across traces, logs, and metrics to produce an overall health assessment.

Detect statistical anomalies in span duration​

ANOMALY(duration)

Uses z-score (AVG/STDDEV) to find outlier spans — spans whose duration deviates significantly from the mean.

Path deviation​

PATH DEVIATION FOR ROBOT 'robot_sim_001'

Queries /odom trajectory data from topic_messages to detect if the robot deviated from its planned path.


MCAP recordings​

SHOW RECORDING was never implemented

SHOW RECORDING was reserved syntax in v0.3 but the compiler never supported it. Use FROM recordings (available in v0.4+) to query recording metadata.


Pipeline syntax​

Pipeline syntax uses | to chain stages, making complex queries more readable:

Find slow error spans, grouped by robot​

FROM traces
| WHERE duration > 500 ms
| WHERE status = 'ERROR'
| FACET robot_id
FROM traces
| WHERE action_name = '/navigate_to_pose'
| WHERE status = 'ERROR'
| FACET robot_id
| COMPARE TO last week

Log analysis with ordering​

FROM logs
| WHERE severity IN ('ERROR', 'WARN')
| ORDER BY severity DESC
| LIMIT 20

Time-series and aggregations​

Average span duration per robot​

SELECT AVG(duration) FROM traces FACET robot_id

Error count by severity​

SELECT COUNT(*) FROM logs WHERE severity = 'ERROR' FACET robot_id

Percentile latency for navigation​

SELECT PERCENTILE(duration, 95) FROM traces WHERE action_name = '/navigate_to_pose'

Multiple aggregations​

SELECT AVG(duration) AS avg_dur, MAX(duration) AS max_dur, COUNT(*) AS total FROM traces

See also​