第七章 运营(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)、实时调试技巧(使用 verbose 和 logger),以及通过 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 |