和其他的监控工具一样,log.io也采用服务器-客户端的模式。log.io由两部分组成:server和harvester, server运行在机器A(服务器)上监视和纪录其他机器发来的日志消息;log harvester运行在机器B(客户端)上用来监听和收集机器B上的日志改动,并将改动发送给机器A,每个需要纪录日志的机器都需要一个harvester.
在机器A和B上
因为log.io基于node.js,所以在服务器和客户端都要安装node.js,这里采用编译安装的办法,首先安装需要的依赖包:
$ sudo apt-get install g++ make git libssl-dev pkg-config
下载node.js源代码,编译并安装:
$ wget http://nodejs.org/dist/v0.8.14/node-v0.8.14.tar.gz
$ tar zxvf node-v0.8.14.tar.gz
$ cd node-v0.8.14/
$ ./configure
$ make
$ sudo make install
安装NPM:
$ curl https://npmjs.org/install.sh | sudo sh
安装log.io(包含了log server和log harvester)
$ sudo npm config set unsafe-perm true
$ sudo npm install -g --prefix=/usr/local log.io
在机器A上启动server
$ sudo log.io server start
在机器B上配置和启动harvester
server用来监听各个机器发来的日志消息,harvester用来把本机的日志发给server,所以harvester配置的时候需要指定server的主机地址(或域名)。如何告诉harvester哪些日志需要监控呢?log_file_paths就是指定日志路径的地方。下面的配置是harvester把auth.log和harvester.log这两个日志的改动发送给server:
$ sudo vi /etc/log.io/harvester.conf
exports.config = {
// Log server host & port
server: {
host: 'log.vpsee.com', //也可以用 IP 地址
port: 8998,
},
// Watch the following log files, defined by label:path mappings
log_file_paths: {
logio_auth: '/var/log/auth.log',
logio_harvester: '/var/log/log.io/harvester.log',
},
instance_name : 'log_node_1'
}
启动harvester:
$ sudo log.io harvester start
测试
打开浏览器访问log server所在的机器A,域名是log.vpsee.com(也可以用IP地址),端口是8998:
======================================================================================本人测试时harvester.conf文件配置如下:
/* Log.io log harvester configuration */
exports.config = {
// Log server host & port
server: {
host: '192.168.32.92',
port: 8998,
},
// Watch the following log files, defined by label:path mappings
log_file_paths: {
logio_tomcat: '/usr/local/tomcat6/logs/catalina.out',
logio_oned: '/opt/nebula/ONE/var/oned.log',
logio_harvester: '/var/log/log.io/harvester.log',
},
// Define name of current machine.
// Alternatively, you can set this name in /etc/profile:
// export LOGIO_HARVESTER_INSTANCE_NAME='my_log_machine'
// If so, comment out the line below
instance_name : 'log_node_1'
}