먼저 볼 구간이 없는 조사
- 전체 MCAP / ROS2 로그 replay
- 수많은 topic을 수동으로 탐색
- timestamp와 메시지 흐름을 반복 대조
- 그 이후에야 실제 원인 분석 시작
Robotics Incident Triage · Local Evidence Engine
Velune Trace는 MCAP / ROS2 로그에서 timing evidence window를 우선순위로 정리합니다. 전체 replay 전에 먼저 검토할 시간대를 제시해 엔지니어의 조사 시작점을 줄입니다.
Find the events. Engineers find the cause.
The Cost Before Investigation
자율주행 로봇 이슈가 발생할 때마다 전체 로그를 처음부터 replay하고, topic을 하나씩 찾고, timestamp를 반복 대조한다면 엔지니어는 실제 원인을 검토하기 전에 상당한 조사 준비 시간을 사용하게 됩니다.
로그가 커질수록 이 탐색 비용은 이슈가 발생할 때마다 반복됩니다. 먼저 볼 시간대를 좁히지 않는 것은 엔지니어의 시간을 가장 비싼 방식으로 사용하는 일입니다.
Ranked Evidence Windows
기본 Quickstart는 상위 5개의 timing evidence window를
보여줍니다. 더 넓은 investigation view가 필요하면
--top 10, --top 15,
--top 30처럼 검토할 결과 개수를
조정할 수 있습니다.
--top은 window의 시간 길이가 아니라
출력할 evidence window의 개수입니다. Ranking은
관측된 timing evidence를 기준으로 검토 순서를
정리하며, root-cause 확률이나 위험도를 의미하지 않습니다.
Observable Timing Evidence
Velune Trace는 로그에서 확인할 수 있는 시간적 신호를 구조화합니다. 이 신호가 결함이나 사고 원인이라는 결론은 내리지 않습니다.
메시지 흐름 사이에서 관측된 시간 간격을 window 단위로 요약합니다.
메시지 도착 또는 timestamp 간격의 시간 변동을 관측합니다.
비교 대상 topic과 window에서 관측된 메시지 수의 비율을 정리합니다.
기록 순서와 timestamp 흐름 사이의 순서 불일치를 관측합니다.
Quick Test to Real Workflow
사내 로그나 원본 MCAP을 제공하지 않아도 샘플 파일로 ranked evidence-window workflow를 확인할 수 있습니다. 이후 로그 경로만 바꾸면 자신의 MCAP에서도 동일한 로컬 분석 흐름을 사용할 수 있습니다.
git clone https://github.com/veluneos/velune-trace.git
cd velune-trace
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python3 tools/create_sample_mcap.py
./bin/velune validation-report examples/sample.mcap \
--export-dir velune_report \
--window-sec 1 \
--top 5 \
--allowed-lateness-sec 2
원본 로그를 수정하거나 Velune 서버로 업로드하지 않고 다음 결과를 로컬 디렉터리에 생성합니다.
./bin/velune validation-report /path/to/your-log.mcap \
--export-dir velune_report \
--window-sec 1 \
--top 10 \
--allowed-lateness-sec 2
빠른 1차 검토에는 --top 5, 더 넓은
조사에는 --top 10,
--top 15, --top 30처럼
필요한 결과 개수를 지정합니다.
분석은 로컬에서 수행되며 원본 로그의 자동 업로드, telemetry 또는 Velune 서버 호출을 수행하지 않습니다.
Pre-viewer Triage Layer
Foxglove, PlotJuggler 또는 기존 분석 도구를 열기 전에 먼저 확인할 timestamp와 topic 범위를 좁혀주는 pre-viewer triage layer입니다.
Velune Trace에서 우선 검토할 evidence window와 관측된 topic 신호를 확인합니다.
조사 목적에 맞는 window의 시작·종료 시간과 관련 topic을 선택합니다.
선택한 범위를 Foxglove 또는 기존 엔지니어링 workflow에서 replay하고 최종 원인을 검토합니다.
Core Bundle Comparison v1
Velune Trace는 완료되고 검증된 두 Core Report Bundle을 로컬에서 비교합니다. Topic 구성, timing profile, ranked evidence-window 요약에서 관측된 차이를 구조화해 엔지니어가 달라진 지점부터 검토하도록 돕습니다.
사용자가 비교 기준으로 선택한 완료된 Core Report Bundle
변경 이후 또는 비교 대상으로 선택한 완료된 Core Report Bundle
./bin/velune compare-bundles /path/to/reference_bundle /path/to/target_bundle --export-dir comparison_output
comparison_report.json
기계 판독 가능한 source of truth
comparison_summary.md
엔지니어가 읽는 제한된 요약
비교에는 원본 MCAP이 필요하지 않으며, 완료된 Core Report Bundle만 사용합니다.
동일한 scene의 원본 MCAP과
/lidar_top 메시지 20개를 제거한
검증용 Target fixture를 같은 설정으로 분석했습니다.
Velune Trace는 인접한 두 관측 timestamp 사이에서
완전히 관측되지 않은 정렬 구간을
sparse_missing_interval로 파생하고,
Target의 첫 번째 검토 구간으로 제시했습니다.
이는 관측 timing evidence이며 원인, 고장, 안전성 또는
regression 판정이 아닙니다.
Reference는 정답이나 정상 상태를 의미하지 않습니다. 비교 리포트는 관측된 차이만 보여주며 root cause, fault, safety risk 또는 regression을 판정하지 않습니다. 이 기능은 pairwise Core Bundle Comparison이며, 전체 Private Baseline workflow와는 구분됩니다.
Measured Separately
내부 대규모 확장 benchmark에서는 10.7GB, 9,237,885-event 로그의 첫 scan 및 indexing에 약 276초가 걸렸습니다. Index 생성 이후 선택된 evidence chain 조회는 약 0.002초가 걸렸습니다.
Synthetic large-scale expansion benchmark입니다. 결과는 하드웨어, 저장장치, 압축 방식, 메시지 구조 및 데이터셋 특성에 따라 달라질 수 있습니다. 첫 indexing 시간과 이후 조회 시간은 하나의 수치로 합치지 않습니다.
Evidence, Not Judgment
원본 로그를 자동 업로드하지 않으며 telemetry와 Velune 서버 호출을 수행하지 않습니다. 최종 원인 판단은 시스템과 운영 맥락을 이해하는 엔지니어가 수행합니다.
Private Validation
검증 질문은 하나입니다. Evidence-window ranking이 실제 자율주행 로봇 운영 이슈 분석에서 엔지니어의 로그 탐색 시간을 줄이는 데 도움이 되는가?
원본 MCAP이나 사내 로그의 외부 업로드를 요청하지 않습니다. 팀의 로컬 환경에서 실행한 결과와 기존 investigation workflow에 대한 피드백으로 검증할 수 있습니다.