标签:
系统代码地址:https://github.com/2225377fjs/weblogviewer
系统需求:
因为机器较多,偶尔需要在线调试一些东西,看看log状况,如果要上机器去看的话就比较麻烦,就希望能够开发一个能够支持在浏览器上实时tail查看日志的系统,能够配置和管理多个监控的服务器,同时希望系统是比较轻的,不要影响服务器上现有的应用。
最开始http://logio.org/ 查到了这么个东西,node.js开发,不过感觉实在是太简陋了,功能也不够强,没有暂停功能实在是不能容忍,而且在需要监控的进程上会不管现在有没有要查看的需求,都会读取数据,发送到中心节点,浪费CPU啊,我擦。
所以就手撸了一个出来,
代码结构:
基本上可以看到启动方式有两种,分别是python Start.py和python StartNode.py
系统分成了两个部分,分别是中心服务和Node节点,这个应该好理解吧,Node节点就是需要监控的服务器,在上面配置好需要监控的日志,然后我们通过访问中心服务来显示日志信息,中心服务是通过调用Node节点提供的API来获取日志的数据。
(1)启动中心服务,python Start.py,或者python Start.py daemon(后者直接以后台进程的方式启动)。在启动之前需要先配置一些中心服务的一些基本参数,其实也就是给外部提供Http接口的端口,在config里面的ServerConfig.py文件,里面有一个
这里更改一下http端口吧,看你自己需求怎么改了。
启动起来了之后,界面大概如下(URL路径:http://127.0.0.1:port/nodes):
这个是已经配置了一个节点的情况下看到的,点击这个项目:
这个可以看到该节点配置的日志的信息,点击查看详情就可以看日志的实时数据了
左边有个暂停按钮,可以点击暂停,然后再点击开始获取数据。
(2)接下来是加入一个节点,比如说需要监控B服务器上某两个日志文件,那么在B服务器上启动StartNode.py,在启动之前还是先配置一下数据,在config目录下的node_config.py文件:
这里name是为这个节点起的名字,这个名字需要时唯一的,
logs也是一个字典,每一个k-v项目就代表需要监控的一个日志文件,k为为这个文件起的名字,value文件的路径,需要绝对路径
配置完成,并且启动了StartNode.py,那么接下来回到最开始的web界面,选择节点管理:
输入启动StartNode.py的服务器的ip,以及它的监听端口,嗯,Node节点监听端口默认是9000端口,如果要改的话,直接到StartNode.py文件里面改吧。
这样子就算是将这个节点加入了进来了。
接下来说一下实现吧:
(1)进程之间通信使用的是一套比较简单的分布式框架吧,基于Entity的,这个就不细说了,框架代码都在server目录下面,具体业务的代码都放在app目录下,
(2)当需要查看某个日志的时候,Node节点会启动一个进程,执行tail -f命令,然后通过pip来读取数据,中心服务会不断的到Node节点来获取数据,当连接关闭或者断开会将启动的进程关闭。
(3)中心服务通过websocket将日志的实时数据推送到web界面
标签:
原文地址:http://blog.csdn.net/fjslovejhl/article/details/51152786