和其他的監控工具一樣,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文件配置如下: