一、平台架构与监控思路

在讨论具体指标之前,先把整条语音链路拆清楚,监控才能做到“分层覆盖、逐段定位”。典型架构如下:

flowchart LR
    A[运营商 PSTN] -->|PRI / SS7 中继| B[语音网关]
    B -->|SIP 中继| C[FreeSWITCH 软交换]
    C -->|ESL / SIP| D[自研 Java CTI 服务]
    C -->|SIP 注册| E[LinPhone 分机]
    D -->|HTTP / WebSocket| F[坐席工作台]
    G[Zabbix Server] -.SNMP/Agent/脚本.-> B
    G -.SNMP/Agent.-> C
    G -.JMX/Agent.-> D
    G -.ICMP/端口探测.-> E

监控的核心思路是:网关看中继与信令,软交换看并发与媒体质量,CTI 看服务与业务指标,分机看注册与可达性。下面按这四层分别展开。

二、语音网关(PRI / SS7)监控指标

语音网关负责把运营商的 PRI(ISDN 30B+D)或 7 号信令(SS7/ISUP)转换为 SIP,是整条链路的入口,一旦异常会直接导致外线全断。建议通过 SNMP 采集,重点关注以下几类。

2.1 中继与信令状态

指标说明告警建议
E1/T1 物理链路状态每一条 E1 的 LOS、AIS、RAI、LFA 告警位任一告警立即触发
PRI D 通道状态D 通道是否处于 MULTIPLE_FRAME_ESTABLISHED非正常状态立即告警
SS7 信令链路状态MTP2/MTP3 链路是否 In Service链路 down 立即告警
SS7 信令点可达性到对端 STP/SP 的路由是否可用不可达立即告警
中继组(Trunk Group)状态中继组是否处于服务状态Out of Service 告警

2.2 中继占用与话务量

  • 中继电路占用数 / 占用率:当前 B 通道使用数量与总通道数之比,是判断扩容和拥塞的核心指标。
  • 并发呼叫数:网关侧实时并发,与 FreeSWITCH 侧并发做交叉比对。
  • 呼叫尝试次数(CAPS):每秒呼叫尝试数,用于容量评估。
  • 呼叫建立成功率(ASR):成功接通数 / 呼叫尝试数。
  • 应答率 / 接通率:被叫应答比例,可反映运营商侧问题。
  • 平均通话时长(ACD):辅助判断异常短话务或骚扰呼叫。

2.3 信令异常与失败原因

  • 呼叫失败次数与失败原因分布:按 Q.931 / ISUP 释放原因码(Cause Code)分类统计,如 16 正常释放、17 用户忙、34 无可用电路、102 定时器超时等。
  • 无可用电路(Cause 34)次数:直接反映中继不足。
  • 信令链路误码率 / 滑码:E1 的 CRC 错误、帧失步次数,反映线路质量。
  • D 通道信令重传次数:异常升高说明链路质量差。
  • SS7 链路负荷:MSU 每秒处理量,接近上限需扩容。

2.4 网关设备自身健康度

  • CPU 使用率、内存使用率、温度
  • 电源与风扇状态
  • 设备运行时长(Uptime)与重启次数
  • 网口流量、丢包率、错包率
  • NTP 同步状态(时间偏差会影响话单与日志关联)

三、FreeSWITCH 软交换监控指标

FreeSWITCH 是话务核心,建议通过 mod_snmp、ESL 脚本采集 或 Zabbix Agent 自定义脚本(执行 fs_cli -x "show status" 等命令)获取指标。

3.1 系统与进程状态

  • FreeSWITCH 进程存活:进程是否存在、是否可响应 ESL。
  • Uptime:进程运行时长,异常重启需告警。
  • CPU / 内存占用:重点关注媒体处理线程的 CPU。
  • 会话数(Sessions):当前会话总数、峰值会话数。
  • 会话容量使用率:当前会话 / 最大会话(max-sessions)。
  • 每秒呼叫数(CPS):当前 CPS 与配置上限对比。

3.2 SIP 注册与网关状态

  • SIP 注册用户数:当前成功注册的分机数量,与预期分机总数比对。
  • 注册失败次数:认证失败、超时等。
  • Sofia Profile 状态:各 SIP Profile 是否处于 RUNNING。
  • Gateway 状态:到语音网关的 SIP Trunk 是否 REGED / NOREG,是否处于 UP。
  • Gateway 呼叫失败计数:单个网关的失败次数。

3.3 呼叫质量与媒体指标

  • ASR / ACD / 呼叫成功率:与网关侧交叉验证。
  • MOS 评分:通过 RTP 统计估算的语音质量。
  • RTP 丢包率、抖动(Jitter)、时延:媒体质量的核心三要素。
  • RTP 收发包数:判断单向通话(只收不发或只发不收)。
  • 编码协商失败次数:G.711/G.729/Opus 协商异常。
  • DTMF 检测异常:影响 IVR 按键。

3.4 模块与资源

  • 模块加载状态:关键模块(mod_sofia、mod_rtp、mod_dptools 等)是否加载。
  • 数据库连接状态:mod_odbc / 核心 DB 连接是否正常。
  • 日志错误数:ERROR / CRIT 级别日志条数。
  • 录音磁盘空间:录音目录剩余空间与写入速率。
  • CDR 写入状态:话单是否正常落库。

四、自研 Java CTI 服务监控指标

CTI 服务是业务与话务的桥梁,建议通过 JMX(Zabbix Java Gateway) 采集 JVM 指标,通过 HTTP 健康检查接口 采集业务指标。

4.1 JVM 与运行时

  • 堆内存使用率:Eden、Old Gen 使用量与 GC 后回收情况。
  • GC 次数与耗时:Full GC 频率与停顿时间。
  • 线程数:活跃线程数、死锁检测。
  • 类加载数量:异常增长可能提示类泄漏。
  • CPU 使用率:进程级与系统级。

4.2 服务可用性与接口

  • 服务存活(Health Check):HTTP 探活接口返回状态。
  • ESL 连接状态:与 FreeSWITCH 的 ESL 长连接是否正常,重连次数。
  • 接口响应时间(P95/P99):签入、外呼、挂断等关键接口耗时。
  • 接口错误率:HTTP 5xx / 业务异常比例。
  • 线程池队列长度与拒绝次数:判断是否过载。

4.3 业务指标

  • 在线坐席数 / 签入坐席数:与预期排班比对。
  • 坐席状态分布:空闲、通话中、示忙、小休等。
  • 排队呼叫数 / 最长等待时长:直接影响客户体验。
  • 外呼任务执行进度与失败率:预测外呼场景重点。
  • 话单生成数量与延迟:与 FreeSWITCH CDR 数量比对,防止丢单。
  • 事件推送延迟:CTI 到工作台的 WebSocket 推送时延。

五、LinPhone 分机监控指标

LinPhone 作为开源软电话,注册在 FreeSWITCH 上,监控重点在于“是否在线、是否可用”。

  • 注册状态:分机是否成功注册,注册过期时间。
  • 注册 IP 与端口:异常 IP 变化需关注。
  • 分机可达性:通过 SIP OPTIONS 探测(FreeSWITCH 的 sofia_contact 或 sip_ping)。
  • 分机在线率:在线分机数 / 配置分机总数。
  • 注册失败次数:密码错误、网络不通等。
  • 终端网络质量:分机所在网段的丢包与时延(可通过 ICMP 探测)。

提示:LinePhone 本身通常不提供 SNMP,建议以 FreeSWITCH 侧的注册表(show registrations)作为数据源,由 Zabbix 脚本采集,比逐台探测更可靠。

六、Zabbix 落地建议

6.1 采集方式选型

对象推荐采集方式关键模板/脚本
语音网关SNMP v2c/v3厂商 MIB + 自定义 OID 映射
FreeSWITCHZabbix Agent + UserParameter 脚本fs_cli 命令解析、mod_snmp
Java CTIZabbix Java Gateway(JMX)+ HTTP AgentJVM 模板 + 自定义业务探针
LinePhone 分机FreeSWITCH 注册表脚本采集show registrations 解析

6.2 告警分级建议

  • 灾难级(P1):E1 链路中断、SS7 链路 down、FreeSWITCH 进程退出、CTI 服务不可用、中继占用率 100%。
  • 严重级(P2):中继占用率 > 85%、ASR 骤降、注册分机数骤减、Full GC 频繁。
  • 警告级(P3):CPU/内存偏高、RTP 丢包率上升、排队时长增加、磁盘空间不足。

6.3 关联分析思路

单点指标容易误报,建议做链路关联:

  • 网关中继占用高 + FreeSWITCH 并发高 → 真实话务高峰,考虑扩容。
  • 网关 ASR 低 + FreeSWITCH 呼叫失败多 → 排查运营商侧或信令配置。
  • FreeSWITCH RTP 丢包 + 分机网络丢包 → 定位为网络问题而非软交换问题。
  • CTI 话单数 < FreeSWITCH CDR 数 → 检查 ESL 事件丢失或 CTI 处理阻塞。

七、总结

呼叫中心语音平台的监控应遵循“分层采集、交叉验证、分级告警”的原则:网关层盯住中继与信令,FreeSWITCH 层盯住并发与媒体质量,CTI 层盯住 JVM 与业务指标,分机层盯住注册与可达性。Zabbix 通过 SNMP、Agent 脚本、JMX 和 HTTP 探针的组合,可以完整覆盖这条链路,再配合关联分析,就能在故障发生时快速定位到具体环节。

Logo

更多推荐