Asterisk 版 VQ 监测器把 Sevana 的实时通话质量监测直接带入您的 PBX。只需加载一个模块 res_vq_monitor.so,Asterisk 就会开始为其承载的每一通呼叫的媒体评分:每一路流都根据丢包和抖动计算网络 MOS,您选定的呼叫还会获得 Sevana 的 PVQA 感知 MOS。结果显示在 Web 仪表盘和 REST API 中,由模块自行启动和守护,无需另外安装探针、镜像端口或监测服务器。
该模块内嵌的引擎与独立版 VQ 监测器服务器完全相同。它像抓包工具一样监听 PBX 自身的网络接口,因此从不介入 Asterisk 的通道或媒体路径。即使引擎停滞,呼叫也会照常进行,只是不再被监测。在同一批呼叫上并行运行时,模块与独立服务器在每一路流上得出的网络 MOS 和 Sevana MOS 完全一致。
网络 MOS(ITU-T G.107 E-model)反映传输层交付的质量;Sevana MOS(PVQA)反映主叫方实际听到的效果。两者不一致时,差距本身就指向了问题根源。
抓包通过 libpcap 在 PBX 的网络接口上进行。模块所用的库以私有方式链接,不会与 Asterisk 自身使用的库冲突,也从不触碰呼叫。
模块以受守护的子进程方式启动 VQ 监测器仪表盘,进程退出时自动重启,模块卸载时将其停止。由于仪表盘是独立进程,它出现故障也不会拖垮 PBX。
vq show status 报告引擎、抓包计数器和仪表盘的状态。vq track add 用于选择哪些呼叫进行感知评分和录音。

在 Asterisk 进程内部,VQ 监测器引擎抓取 SIP 和 RTP,把每一路 RTP 流与其 SIP 呼叫(主叫、被叫、Call-ID)关联起来,计算网络 MOS,并解码音频供 PVQA 分析。引擎通过本地 ZeroMQ 总线发布按流和按区间的报告。仪表盘进程订阅该总线,把结果存入 SQLite,并提供 Web 界面和 REST API。该总线使用与独立服务器相同的公开协议,因此您自己的工具同样可以订阅。
Asterisk process
├─ chan_pjsip / RTP calls, untouched by the module
└─ res_vq_monitor.so
├─ VQ Monitor engine libpcap capture → SIP + RTP → network MOS, PVQA
│ → ZeroMQ reports (loopback)
└─ supervisor ──fork──► vq-db: SQLite, dashboard, REST API (loopback)
▲
reverse proxy with authentication ── your users
每一路流都会得到网络 MOS、抖动和丢包统计。Sevana MOS 需要先解码音频,而解码正是 CPU 开销所在,因此模块只解码部分流。跟踪列表为空时,模块按您设定的上限为当前进行中的流评分(例如同时 32 路)。添加一个匹配模式(如 SIP 地址或 Call-ID)后,模块只为匹配的呼叫评分并可选择录音,包括已在进行中的呼叫。清空列表即可恢复自动评分。
*CLI> vq track add 1002@ Added 1 pattern(s). *CLI> vq show track 1002@ *CLI> vq track clear Track list cleared.
仪表盘的 Track list 页面编辑的是同一份列表,因此支持人员无需登录 PBX 的 shell,就能抓取某个问题分机的呼叫。
每路流的通话统计只占几百字节,而解码后的音频每路流每 10 秒约占 1.3 MB。因此录音是一个单独的选项:false 从不录音,tracked 只录制跟踪列表中的呼叫,true 录制所有被解码的流。统计数据和录音按各自的周期过期(例如统计保留 14 天、音频保留 1 小时),磁盘占用始终可控。
sevana_mos < 3.6 && jitter > 20 这类过滤表达式,并可导出 CSV。仪表盘上的所有内容也都可以通过有文档的 REST API 以 JSON 或 CSV 格式获取,可直接接入您自己的报表、NOC 工具或计费核对流程。


vq show status |
引擎状态和版本、进行中的流和 SIP 呼叫、音频模式、各接口的抓包计数器(含丢弃的包)以及仪表盘进程状态 |
vq show track |
当前的跟踪列表 |
vq track add | remove | clear |
选择哪些呼叫进行 Sevana MOS 评分和录音;对进行中的呼叫同样生效 |
vq db restart |
仅重启仪表盘进程(例如升级后),PBX 照常运行 |
vq logger reload |
日志轮转后重新打开引擎日志 |
| PBX | 64 位 Linux 上带 chan_pjsip 的 Asterisk 20 LTS(已在 Ubuntu 24.04 上构建并验证)。其他 Asterisk 版本可按需提供 |
| 权限 | Asterisk 需要 CAP_NET_RAW 能力才能抓包;模块附带的 systemd drop-in 文件会授予该能力 |
| 抓包 | 承载 PBX 的 SIP 和 RTP 的网络接口,可选择只抓取 SIP 端口和 rtp.conf 中的端口范围。基于 TLS 的 SIP 无法解析,因此这类流在评分时不带主叫和被叫信息。SRTP 流只提供网络指标 |
| 配置 | /etc/asterisk 下的三个文件:Asterisk 自身 INI 格式的 vq_monitor.conf,以及与独立版 VQ 监测器相同的引擎和仪表盘 YAML 配置 |
| 存储 | SQLite,无需外部数据库。统计数据和音频分别在可配置的期限后过期 |
| 安全 | 仪表盘只监听本地回环地址;请通过带身份验证的反向代理对外发布 |
| 授权 | 感知评分需要 Sevana PVQA 授权 |
如果您运行一台或少量几台 Asterisk PBX,并希望无需额外硬件、SPAN 端口或单独服务器就能监测质量,请选择 Asterisk 模块。对于运营商链路、SBC 和混合网络,请选择独立版 VQ 监测器服务器:它可抓取镜像流量或 HEP 数据,可通过多个探针向同一数据库汇聚来横向扩展,并在每秒数百万包的链路上支持 DPDK 抓包。两者使用相同的引擎和 Sevana PVQA 评分,结果可以直接比较。
想了解您自己的 Asterisk 通话能得多少分?欢迎预约 Asterisk 版 VQ 监测器的演示,或与我们洽谈授权事宜。