日誌是個好東西,對技術人員來說寫日誌能紀錄成長,分享經驗;對機器來說紀錄日誌能及時發現錯誤,為日後的排錯提供信息。如果還在一台機器上用tail -f監聽單個日誌或者用multitail監聽多個日誌也太out了,我們需要一種工具能紀錄上百台機器、不同類型的日誌,並最好能匯集到一個界面裡方便查看,最好還是實時的。log.io就是這樣一個實時日誌監控工具,採用node.js + socket.io開發,使用瀏覽器訪問,每秒可以處理超過5000條日誌變動消息。有一點要指出來的是log.io只監視日誌變動並不存儲日誌,不過這個沒關係,我們知道日誌存儲在哪個機器上。
和其他的監控工具一樣,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:
留言
張貼留言