log.io 是一個實時日志監控工具,采用 node.js + socket.io 開發,使用瀏覽器訪問,每秒可以處理超過5000條日志變動消息。有一點要指出來的是 log.io 只監視日志變動並不存儲日志,和其他的監控工具一樣,log.io 也采用服務器-客戶端的模式。
github地址:https://github.com/NarrativeScience/log.io
如何工作?
文件輸入端監控日志文件發生的變化,通過TCP協議將最新的信息發送給服務端,進而服務端通過socket.io將接收到的信息輸出到瀏覽器上
安裝服務端
npm install -g log.io 添加配置服務端的配置文件 vim ~/.log.io/server.json 示例: { "messageServer": { "port": 6689, "host": "127.0.0.1" }, "httpServer": { "port": 6688, "host": "127.0.0.1" }, "debug": false, "basicAuth": { "realm": "abc123xyz", "users": { "username1": "password1" } } }
參數說明:
messageServer: 是TCP協議接受來氣input的文件信息
httpServer: 接受來自瀏覽器的請求
默認 應用的配置文件在~/.log.io/server.json 當然可以被環境變量LOGIO_SERVER_CONFIG_PATH覆蓋執行配置文件的路徑
baseAuth做簡單用戶驗證, 和debug 這兩個配置項可以被忽略
啟動服務端
log.io-server
##############################################################
安裝文件輸入
npm install -g log.io-file-input
添加配置文件
vim ~/.log.io/inputs/file.json
示例:
{
"messageServer": { "host": "127.0.0.1", "port": 6689 }, "inputs": [ { "source": "server1", "stream": "app1", "config": { "path": "log.io-demo/file-generator/app1-server1.log" } }, { "source": "server2", "stream": "system-logs", "config": { "path": "/var/log/**/*.log", "watcherOptions": { "ignored": "*.txt", "depth": 99, } } } ] }
參數說明:
默認配置文件在~/.log.io/inputs/file.json 當然也可以通過變量進行指定 LOGIO_FILE_INPUT_CONFIG_PATH
路徑可以配置一個文件路徑,目錄路徑,或者使用匹配glob, 更多配置參考:chokidar
啟動監視器
log.io-file-input
效果圖:

添加進程管理pm2:
{ "name":"log.io", // 指定明后才能 "min_uptime": "12h", // 由於過段時間就無法獲取,進行過段時間重啟操作 "script": "/usr/local/node/bin/log.io-file-input", "exec_mode": "fork", "watch": true, "cwd": "/root/.log.io/inputs", // 指定路徑,配置文件 "max_restarts": 3, "restart_delay": 4000, "error_file": "./log-io_err.log", "out_file": "./log-io_out.log" }
使用場景:
之前總是登錄服務器打開文件進行查看, 使用這個系統可以同時監控多個文件, 並實時的將數據輸出到瀏覽器終端, 方便查看
