首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

log.io:浏览器端实时日志监管系统-1

log.io:浏览器端实时日志监管系统-1

log.io 初探log.io 是一套浏览器端实时的日志管理系统,它通过当下流行的 Node.js 和 socket.io 实现。log.io 可以检测用户提供的所在的文件路径,把所有增量添加的日志信息实时的发送到浏览器。用户可以看到自底向上的同步日志刷新。这对于系统管理员来说,可以更加直观有效的了解系统运行,发现运行错误,从而分析解决系统故障。
log.io 安装log.io 的安装非常简单,它已经被设计成一个 npm 包。(npm 是 Node.js 包管理工具)
1. 下载安装 Node.js。在这里我的 node 版本是 v0.10.40。
1
2
Node –v
v0.10.40




2. 安装 log.io 包。这里必须指定一个用户名,例如 root。因为 log.io 需要在用户的根目录里面建立目录,存放配置信息。
1
sudo npm install -g log.io --user "root"




3. 修改配置信息。默认的配置信息如下,设置了一个 application_server 的节点,下面有 apache 的日志流信息,监测了两个日志文件 access.log 和 error.log。而且,设置了 log.io 服务器的信息,28777 是默认 log.io 服务监测的 TCP 端口,用来传输日志信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
vi ~/.log.io/harvester.conf
exports.config = {
nodeName: "application_server",
logStreams: {
apache: [
"/var/log/apache2/access.log",
"/var/log/apache2/error.log",
]
},
server: {
host: '0.0.0.0',
port: 28777
}
}




4. 启动 log.io 服务器。
1
log.io-server




5. 打开浏览器访问 hostname:28778,可以看到 log.io 界面,说明安装成功。如图 1 所示。
图 1.log.io 浏览器端界面log.io 基本功能
  • 过滤,可以帮助用户查找想要的日志信息,流信息,节点信息。
  • 分屏,同时在多个屏上监测日志信息,点击左下角的 New Screen 可以建立独立监测器。
  • Stream 和 Node 面板,log.io 提供两种视图,可以帮助查找想要检测的日志,只需要在前面打钩表示被监测。Stream 和 Node 的概念会在后面介绍。
log.io 技术架构Node.js 和 socket.iolog.io 的技术基础是 Node.js 和 socket.io,当下 Node.js 是一门非常火的技术,它扩展了 JavaScript 的边界,使其能够实现很多后端语言的功能。Node 替代了浏览器作为 JavaScript 的运行容器,使得 JavaScript 可以实现 Web 服务器,操作文件系统,访问网络等等功能。log.io 的服务器是用 Node.js 实现的。在此之上,socket.io 完成了数据的实时同步,我们知道,一般浏览器端通过 ajax 请求从后端取得数据,而 socket.io 可以发现后端数据的变化,然后把数据及时的发送到浏览器上。log.io 的数据同步则是用这项技术实现的。
HarvesterHarvester,收割器,完成的是数据采集,通过 TCP 端口发送到 log.io 服务器,默认是 28777,服务器通过 socket.io 将增量日志信息同步到浏览器。可以看到,如果没有收割器,log.io 没有任何输出信息,当然,可以有多个收割器同时工作向 log.io 服务器输入信息,它们的关系如图 2 所示。
图 2.          收割器、服务器、浏览器关系示意图Node 和 Stream由于 log.io 可以监管多个日志文件的变化情况,所以每个用户都可以选择自己关心的日志文件。每个 Stream(流) 作为一个通道实时发送日志的监测信息,在这里,可以把一个 Stream 想象成一个广播电台,实时的发送广播信息,用户通过勾选流来说明正在收听。Node(节点) 是 Stream 的管理容器,一个 Node 可以包含多个 Stream,当 Node 删除的时候,归属于它的 Stream 都将被删除。这里采用 Node 包装的主要原因是,用户可能想要知道一个 Node 下的所有信息,只需要在浏览器端勾选 Node,所有从属的 Stream,都会被监管。如图 3 所示:
图 3.          选择 test2 节点,所有从属的流被选中
返回列表