Linux下跨服务器多log实时查看工具multitail使用

一、问题的背景

上图为一般游戏后台服务器的可能架构。接入服务器负责管理玩家链接及收发包,SvrA/B/C为内部逻辑服务器处理各种游戏逻辑。各内部服务器通过Proxy来进行通信。

 

二、问题的引出

在实际开发过程中,经常遇到这样的问题,客户端给服务器发送请求,但服务器没有返回,需要定位请求数据到底在哪里断了的情况。

比如某个请求的处理过程为请求先到SvrA,然后SvrA去SvrC做一些处理,返回后SvrA再到SvrB做数据保存,最后SvrA返回结果给客户端。其处理路径为:

Client->SvrA->Proxy->SvrC->Proxy->SvrA->Proxy->SvrB->Proxy->SvrA->Client

 

于是,最常见的找问题的方式是从SvrA开始,逐一查看各Svr的log,看到底在哪里中断了。更聪明一点的做法可能是采用二分法,先去SvrA的log查看是否正常以确定问题是出在前半路径还是后半路径……

到每个Svr上去查看log的方式,显示非常繁琐及低效,尤其是路径更长或是各个Svr还不在同一机器上时,将会更加麻烦。

 

三、问题的解决

    某天无意中看到一个小工具Multitail的介绍,它可以实现在同一屏幕下查看多个文件的变化,甚至可以跨机器查看log!这下问题解决了。下面是效果示意图(其中第三个为跨机器查看log变化):

 

Mutiltail的使用:

1、  安装:程序代码可上http://www.vanheusden.com/multitail/下载,下载后只需解压然后make install即可

2、  使用:

使用multitail /path1/filename1 /path2/filename2 ……即可查看多文件实时输出

3、  关于跨服务器查看log

使用multitail的-l选项,通过ssh远程执行tailf命令即可。(Multitail的-l选项可以查看一个命令的输出)

比如上面效果图所使用的命令为

multitail  /home/gamesvr/log/ServerFrame_2014-02-08.log  /home/proxy/log/ProxySvr_2014-02-08.log -l "ssh root@10.12.194.93 'tailf /home/cubedb/log/ServerFrame_2014-02-08.log'"

 

附: 要使用ssh远程执行命令,需要先做ssh2无密码登录配置。方法很简单,

从服务器A无密码登录到B的配置:

在服务器A上操作:

# ssh-keygen2 -t rsa

# cd ~./ssh2

# echo "IdKey id_rsa_2048_a" > identification

# cp id_rsa_2048_a.pub testssh2.pub

 

在服务器B上操作:

# cd ~/.ssh2

将服务器a上的testssh2.pub,拿到服务器B的~/.ssh2目录下

# echo "key testssh2.pub" >> authorization

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值