OpenBTS 高级诊错技巧

总貌 - Overview

OpenBTS 使用 syslog 机制来产生记录文档。这可由 syslogd 或 rsyslog 二者之一来掌控(请查询所用 Linux 发布文档来确认所使用的记录机制)。

使用 syslog 来记录,可通过单个文件全局系统来控制记录粒度(logging granularity)。 这使得调试者能仅仅在可能出现问题的区域激活记录,这避免无用沉长的信息的泛滥,从而简化并简洁调试的过程。

下面将展示如何激活、调整记录,以及其它诊断方法,其目的是能够有效的对 OpenBTS 进行跟踪诊断。

该文档的描述是基于运行在 Ubuntu 上的 Range Network 系统(开发套件或 GSM Access Point)。 如果系统不是 Ubuntu,请参阅系统发行版的相关文档。

记录 - Logging

输出存储何处?

输出一般位于 /var/log/messages 。在商业安装中,OpenBTS 已被配置使其记录位于 /var/log/OpenBTS.log 。 也可以通过如下(产生一个全新文档并对其进行)编辑使得 syslog 产生的记录位于该文档中:

/etc/rsyslog.d/OpenBTS.conf

local7.*                 /var/log/OpenBTS.log

如何掌控记录信息,何种程度?

OpenBTS 生成的记录是基于 Log.Level.* 的选项。 广义地,可以通过全局配置关键字 Log.Level 来控制针对整个系统的记录程度。

下面便是用作配置选项的关键字:

  • EMERG
  • ALERT
  • CRIT
  • ERR
  • WARNING
  • NOTICE
  • INFO
  • DEBUG

也可以对单个文件进行记录。这就是说可通过对广义的全局配置的某些选项进行覆盖从而聚焦到系统的某些局部(单个文件内)的记录而不影响其它整体记录。这一点十分重要,比如如果将全局配置为 “DEBUG" 程度,这对整个系统的表现性能会产生很大的影响,甚至会使系统表现为完全故障状态,这种配置会使得系统无法再现其真实的运行状态。造成这种状态的根本原因,“DEBUG”使得系统额外承担巨大的负担来产生更多的诊断记录信息。

广义的全局配置的某些选项进行覆盖的方式是使用 Log.Level.<filename> 。比如,如果想仅仅覆盖文档 SIPEngine.cpp 的记录配置选项而其它的全局配置的选项维持原来的配置。

在 OpenBTS CLI 中,做如下的更改操作(覆盖)便可:
OpenBTS> config Log.Level INFO
changed Log.Level to "INFO" (更改 Log.Level 为 "INFO")

OpenBTS> config Log.Level.SIPEngine.cpp DEBUG
defined new config Log.Level.SIPEngine.cpp as "DEBUG" (定义新的配置选项 Log.Level.SIPEngine.cpp 为 "DEBUG")

OpenBTS>




注:Debugging Code(原文出处,翻译整理仅供参考!)