用 MultiTail 查看多个 OpenStack 日志

使用 OpenStack 特别是排错的时候需要查看多个日志来定位错误,如果用 tail 会开很多 Terminal.app 程序切换查看,不方便;如果用 screen 会用 ctrl+A+N 在多个窗口切换也不方便。啥工具能在一个屏幕上跟踪多个日志文件呢?MultiTail 就是这样的一个工具,可以在一个窗口实时显示多个文件内容的更新情况,并提供了配色方案,垂直、水平分割屏幕等方便阅读和查看的功能。

在 Ubuntu/Debian 上安装 multitail:

$ sudo apt-get install multitail

在 CentOS/RHEL/Fedora 上安装 multitail:

# wget http://pkgs.repoforge.org/multitail/multitail-5.2.9-1.el6.rf.x86_64.rpm
# rpm -ivh multitail-5.2.9-1.el6.rf.x86_64.rpm

运行 multitail 在一个屏幕同时监控 nova-schedule, nova-compute, nova-network 日志:

$ multitail -s 2 /var/log/nova/nova-scheduler.log \
/var/log/nova/nova-compute.log \
/var/log/nova/nova-network.log

这里为了控制截图大小不得不把窗口弄小,理想情况是把这个 Terminal 窗口投放到外接显示器上并同时显示8个日志,这样排错会很有效率~

multitail

如果使用 DevStack 脚本安装 OpenStack 的话,日志会显示在 screen 会话里,使用 screen -x 连接后就可以 ctrl+A+N 切换看日志,不过这个日志是没有保存的,所以没法直接用 multitail 打开日志,需要先保存日志。要保存日志文件则需要在安装 OpenStack 前就配置 DevStack 脚本告诉 DevStack 把 OpenStack 运行日志写到 /opt/stack/logs/screen 下:

$ vi devstack/localrc
...
DEST=/opt/stack
SCREEN_LOGDIR=$DEST/logs/screen
...

然后运行 multitail:

$ multitail -s 2 /opt/stack/logs/screen/screen-n-sch.log \
/opt/stack/logs/screen/screen-n-cpu.log \
/opt/stack/logs/screen/screen-n-net.log