这个任务可以完全只有一句命令行就搞定:
tail -f -n 500 /smapp/servers/tomcat/apache-tomcat-7.0.72/logs/catalina.out
然而 实际上我们的系统是一个超级分布式的系统,单是内网测试环境涉及的服务器达到20+这个量级,于是单是找某一个服务器的地址也成了一个工作负担
我们运维采用了设置一个跳板机来处理这个事儿
登录跳板机——>SSH 登录到指定服务器
中间还得再输一次账号、密码,记服务器名称,记host也是个头疼的工作,这是我制作这样一个工具的原因之一
另外一点,Xshell 还是 WinSCP 都没法对日志信息为所欲为,我在测试调度功能时日志书写很快很快,看了一上午的调度日志,眼睛也痛了。痛定思痛,思前想后还得自己写个工具。
下面言归正传,说一说整体的实现:
1.后端部分
找到想要打印日志的服务器 ,在这个服务器上运行一个websocket进程供前端请求,而这个websocket执行服务器上的一个shell脚本,这个脚本打印我想要的日志
下载一个websocketd 程序到 /usr/local/websocketd 目录,这个程序不需要编译,可以直接运行
创建一个cmd.sh 这个脚本完成打印我们想要日志的工作
#!/bin/bash while :; do tail -f -n200 /smapp/servers/tomcat/apache-tomcat-7.0.72/logs/catalina.out
done
命令行运作:
./websocketd --port=8008 --staticdir=. ./cmd.sh
这个时候输出的就是打印日志的内容,这里需要注意端口不要与其他进程冲突了
ctrl+C 退出后进程就会结束,但是实际上我们想要这个进程一直一直在运行,所有需要优化下命令行
nohup ./websocketd --port=8008 --staticdir=. ./cmd.sh &
运行后不再打印输出,我们可以退出服务器连接,这个进程将会在后台一直跑
2.前端部分
首先得有台网页服务器放我们的导航页面,我找了内网151这台机,找到 /usr/local/ nginx/conf 下面的 nginx.conf添加一个 location
location /download { autoindex on; alias /var/www/html/download/; index index.html index.htm; }
把导航页放在
/var/www/html/download/ 这个路径下
导航页简陋一点,就是一些超链接,页面如下
<!doctype html> <html> <head> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"/> <title>日志中心</title> <style type="text/css"> .table1{ width:100%; border-bottom:1px; background:#f3f3f3 ; text-align:center; } </style> </head> <body> <div id="test"> <hr> <p style=" text-align:center;">测试环境专车日志</p> <hr> <table class="table1" cellspacing="1" cellpadding="4" border="1"> <tr> <th>乘客端</th> <th>司机端</th> <th>调度</th> <th>订单</th> <th>用户中心</th> <th>管理系统</th> </tr> <tr> <t