Skip to content

第七章 运营(Operation)

1. Asterisk Audio and Video Capabilities

介绍 Asterisk 支持的音频和视频功能,包括常用的编解码器(如 Opus、G.711、VP8、H.264)、媒体协商流程、媒体穿透与转码支持,以及配置 rtp.conf 和视频桥接(ConfBridge)功能的相关要点。

2. Asterisk Command Line Interface

讲解如何使用 Asterisk 的命令行界面(CLI),包括连接方式(如 asterisk -rvvv)、常用命令(如 core show, dialplan reload, sip show peers)、实时调试技巧(使用 verboselogger),以及通过 CLI 动态交互控制系统行为的方法。

3. Logging

说明 Asterisk 日志系统的配置方法,包括通过 logger.conf 文件设置日志类别(如 notice, warning, error)、日志目标(文件或 syslog),动态启用或禁用日志通道,以及如何结合日志进行问题排查和系统运行分析。

4. Maintenance and Upgrades

运维目标与任务概览

部署 Asterisk 后,系统的稳定运行并非“配置完成即结束”,而是一个持续运维的过程。主要工作内容可归为以下几类:

  • 系统监控(运行状态、性能、呼叫流程)
  • 日志管理与问题排查
  • 安全事件响应
  • 版本更新与模块维护
  • 数据与配置备份

文件增长风险与管理重点

Asterisk 在长时间运行或高并发环境下,某些模块可能产生大量数据文件,需提前规划:

模块 / 功能 可能产生的大文件类型 默认路径参考
Logging 日志文件,如 /var/log/asterisk/messages、full 等 logger.conf 配置
Reporting(CDR/CEL) 通话记录(CSV、数据库) cdr.conf, cel.conf
音频录制 .wav, .gsm, .ulaw 等音频文件 /var/spool/asterisk/monitor/ 或自定义路径
ConfBridge 会议语音录制(若启用) 由 record_conference 决定
MixMonitor 通话录音 可自定义输出目录

建议:

  • 使用 logrotate 管理日志轮转。
  • 设置音频自动清理脚本。
  • 明确目录归属与可写权限,避免系统磁盘耗尽。

1. Asterisk Backups 备份与恢复

Asterisk 并不具备内建的备份机制,因此需管理员自行规划,但其文件结构清晰、集中,备份工作并不复杂。

建议备份的关键文件与目录

分类 内容说明 默认位置
✅ 配置文件 所有 .conf 文件,包括 pjsip.conf, extensions.conf 等 /etc/asterisk/
✅ 内部数据库(AstDB) Asterisk 使用的轻量级键值数据库(SQLite3) /var/lib/asterisk/astdb
✅ 日志与报表 CDR/CEL 日志、运行日志、错误日志等 /var/log/asterisk/
✅ 自定义音频文件 用户上传的语音文件、提示音等 /var/lib/asterisk/sounds/
✅ 通话录音数据 MixMonitor、ConfBridge 产生的 .wav、.gsm 文件 /var/spool/asterisk/monitor/(或自定义)
✅ 外部数据库数据(如有) MySQL / PostgreSQL 中存储的实时配置、CDR、CEL 等 数据库导出工具(如 mysqldump)管理

常见备份方法

## 手动备份(适用于单次备份)
tar czf asterisk-backup-$(date +%F).tar.gz \
    /etc/asterisk \
    /var/lib/asterisk \
    /var/spool/asterisk \
    /var/log/asterisk


## 定时自动备份(推荐)
# 结合 Linux 的 cron 定时任务和脚本定期执行:
# /etc/cron.daily/asterisk-backup.sh

#!/bin/bash
BACKUP_DIR="/backup/asterisk"
mkdir -p $BACKUP_DIR

tar czf $BACKUP_DIR/asterisk-config-$(date +%F).tar.gz \
    /etc/asterisk \
    /var/lib/asterisk \
    /var/spool/asterisk \
    /var/log/asterisk

# 可选:使用 rclone / scp 推送至远程服务器

## 加上执行权限:
chmod +x /etc/cron.daily/asterisk-backup.sh

恢复备份
Asterisk 的恢复过程通常非常直接:

## 1. 停止 Asterisk 服务:
systemctl stop asterisk

## 2. 解压归档文件回原路径:
tar xzf asterisk-backup-2025-05-25.tar.gz -C /

## 3. 重启 Asterisk 服务:
systemctl start asterisk

# 确保权限与所有权正确(尤其是 /var/lib/asterisk 属于 asterisk:asterisk)

⚠️ 升级后的恢复注意事项
若你将备份恢复至一个新的 主版本(major version) 的 Asterisk:

  • 配置文件语法可能变动
  • 某些模块/函数可能已弃用
  • 数据库结构(如 CDR/CEL 表)可能需升级或迁移

✅ 解决方案:

  • 先升级/调整配置文件(使用 make samples 查看新版参考)
  • 根据版本说明更新数据库结构(使用 Alembic 或 SQL 脚本)
  • 查阅 升级指南

2. Updating or Upgrading Asterisk 更新与升级

类型 示例 内容可能包括 风险级别
更新 16.28.0 → 16.29.1 Bug 修复、安全补丁
升级 16.x → 18.x 或 21.x 新功能、行为变更、兼容性调整等 中~高

✅ 更新(minor version):适用于修复问题
⚠️ 升级(major version):需评估是否需要新特性、是否兼容已有系统

升级前重要文档

文件名 作用说明
UPGRADE.txt 记录破坏性变更、弃用内容、重大行为调整,务必研读
CHANGES 展示新增功能和改进
ChangeLog 完整变更日志,包含每个提交的细节

5. Running Asterisk

Asterisk 停止命令详解

这些命令均在 Asterisk CLI(asterisk -rvvv)下执行:

命令 行为描述
core stop now 立即停止服务,强制中断所有正在进行的通话。⚠️危险操作,慎用于生产环境。
core stop gracefully 拒绝新的通话请求,等待当前所有通话正常结束后再退出。适用于安全下线或维护前。
core stop when convenient 不拦截新通话,但在系统检测到没有活跃通话后再停止服务。适用于低影响环境中平滑停机。

Asterisk 重启命令详解
这些命令可在不依赖系统服务(如 systemd)的情况下重启 Asterisk:

命令 行为描述
core restart now 立即重启Asterisk,会断开当前所有连接和通话。风险同上。
core restart gracefully 拒绝新呼叫,等待现有通话结束后重启,适合在业务空闲窗口进行温和重启。
core restart when convenient 允许新呼叫继续进入,等待系统无活动通话后再重启,更平滑但不可预期时间点。

撤销计划中的停机或重启

命令 行为描述
core abort shutdown 若已使用 gracefully 或 when convenient 发起重启/停止,可用此命令中止操作

6. System Requirements

Asterisk 媒体处理能力

Asterisk 提供了对多种音频与视频编解码格式(Codec)及媒体文件格式的支持。该能力依赖三个关键组件:

  • 编解码器模块(Codec Modules):处理媒体流的编码与解码。
  • 文件格式模块(Format Modules):用于将媒体内容保存或从磁盘读取。
  • 通道驱动或应用配置:根据具体使用场景(如 PJSIP、Voicemail),配置媒体支持。

音频支持能力列表

Codec 名称 配置值 支持转发(P)或转码(T) 编解码模块 格式模块 是否自带 商业授权
G.711 A-law alaw T codec_alaw format_pcm
G.711 µ-law ulaw T codec_ulaw format_pcm
Opus opus T codec_opus (需第三方)
G.729A g729 T codec_g729a (需商业许可) format_g729
Signed Linear PCM slin T codec_resample format_sln
GSM gsm T codec_gsm format_gsm
Speex speex T codec_speex

视频与图像支持能力

Asterisk 仅支持视频转发(Passthrough),不支持视频编解码或转码。

格式 配置值 支持能力 格式模块 是否自带
H.264 h264 P format_h264
VP8 vp8 P
JPEG jpeg P format_jpeg

视频流通常用于:

  • WebRTC 视频通话(如 ARI 或 ConfBridge + SFU 模式)
  • H.264/VP8 的桌面终端或浏览器设备
场景 推荐音频格式 推荐视频格式
呼叫中心座席 ulaw/alaw + G.729 (若需压缩) 无需视频
WebRTC 客户端 Opus VP8/H.264
SIP 电话 → PSTN G.711(兼容性最佳) 无视频
高保真录音 SLIN(sln16 或 sln48) n/a