Hi all,
I built an open-source CLI tool for post-mortem call analysis on Asterisk and
wanted to share it with the community for feedback.
The problem it solves: debugging why a call dropped usually means grepping the
full log for the right [C-xxxxxxxx], cross-referencing CDR rows by uniqueid, and
decoding CEL events by hand. asterism does this automatically — it groups events
by linkedid and reconstructs a single call’s timeline, combining CEL, CDR, and
full log into one view.
What it currently does:
- Reconstructs call timelines from CEL + CDR, correlated by linkedid
- Optional full log correlation (dialplan execution + SIP signaling)
- Q.850 hangup cause translation
- Queue call detection (wait time, agent, abandoned calls)
- Blind/attended transfer awareness
- Text, JSON, HTML (with SIP ladder diagram), and CSV output
- A “scan” mode to flag suspicious calls in large logs (long holds, many
transfers, codec failures)
Tested against Asterisk 18/20/21 with PJSIP. Written in Go, no third-party
dependencies, single static binary.
It’s an early release (v1.0.0) and I’d genuinely value feedback from people who
run Asterisk in production: does this match a real workflow? What’s missing?
If anyone wants to test it against their own logs, I’d be happy to hear how it
holds up against setups different from my lab.
Thanks!