RemoteTail多服務(wù)器日志文件變更
RemoteTail是一款支持同步顯示多臺(tái)遠(yuǎn)程服務(wù)器的日志文件內(nèi)容更新的工具,使用它可以讓你同時(shí)監(jiān)控多臺(tái)服務(wù)器中某個(gè)(某些)日志文件的變更,將多臺(tái)服務(wù)器的tail -f xxx.log命令的輸出合并展示。相比于其他流行的日志手機(jī)工具,RemoteTail去掉了在遠(yuǎn)程服務(wù)器安裝agent的必要,減小了與遠(yuǎn)程服務(wù)器的耦合,但需要注意的是,由于日志收集使用的是遠(yuǎn)程執(zhí)行tail命令,因此如果進(jìn)程退出重啟后會(huì)出現(xiàn)日志重復(fù)或者丟失部分日志的風(fēng)險(xiǎn)。
RemoteTail只適應(yīng)于簡(jiǎn)單的日志收集聚合,如果你不介意重啟服務(wù)時(shí)日志丟失或者重復(fù)的問(wèn)題,那么推薦你嘗試一下。
使用場(chǎng)景
假設(shè)公司有兩臺(tái)web服務(wù)器A和B,由于初期沒有專業(yè)運(yùn)維進(jìn)行配置集中式的日志服務(wù)系統(tǒng),兩臺(tái)服務(wù)器上分別部署了兩套相同的代碼提供web服務(wù),使用nginx作為負(fù)載均衡,請(qǐng)求根據(jù)設(shè)定的策略轉(zhuǎn)發(fā)的這兩臺(tái)web服務(wù)器上。
AB兩臺(tái)服務(wù)器中的項(xiàng)目均將日志寫到文件系統(tǒng)的/home/data/logs/laravel.log文件。這種情況下如果我們需要查看web日志是否正常,一般情況下就需要分別登陸兩臺(tái)服務(wù)器,然后分別執(zhí)行tail -f /home/data/logs/laravel.log查看日志文件的最新內(nèi)容,這在排查問(wèn)題的時(shí)候是非常不方便的。RemoteTail就是為了解決這種問(wèn)題的,開發(fā)人員可以使用它同步顯示兩臺(tái)(多臺(tái))服務(wù)器的日志信息。
安裝
在release頁(yè)面下載對(duì)應(yīng)的remote-tail-平臺(tái)可執(zhí)行文件,將該文件加入到系統(tǒng)的PATH環(huán)境變量指定的目錄中即可。
比如,Centos下可以放到/usr/local/bin目錄。
mv remote-tail-linux /usr/local/bin/remote-tail
使用方法
使用前需要宿主機(jī)建立與遠(yuǎn)程主機(jī)之間的ssh公鑰免密碼登陸。
remote-tail -hosts '[email protected],[email protected]' \
-file '/usr/local/openresty/nginx/logs/access.log'
如果服務(wù)器sshd監(jiān)聽的非默認(rèn)端口22,可以使用
[email protected]:2222這種方式指定其它端口。
簡(jiǎn)單的日志收集
日志聚合后作為單獨(dú)文件存儲(chǔ),可以使用下面的方法
nohup remote-tail -hosts '[email protected],[email protected]' -file '/usr/local/openresthy/nginx/logs/access.log' -slient=true > ./res.log &
-slient=true參數(shù)用于指定RemoteTail不輸出歡迎信息和控制臺(tái)彩色字符,只輸出純凈整潔的日志。
指定配置文件
通過(guò)使用-conf參數(shù)可以為命令指定讀取的配置文件,配置文件為TOML格式,請(qǐng)參考example.toml文件。
配置文件example.toml:
# 全局配置,所有的servers中tail_file配置的默認(rèn)值
tail_file="/data/logs/laravel.log"
# 服務(wù)器配置,可以配置多個(gè)
# 如果不提供password,則使用當(dāng)前用戶的ssh公鑰,建議采用該方式,使用密碼方式不安全
# server_name, hostname, user 配置為必選,其它可選
[servers]
[servers.1]
server_name="測(cè)試服務(wù)器1"
hostname="test1.server.aicode.cc"
user="root"
tail_file="/var/log/messages"
# 指定ssh端口,不指定的情況下使用默認(rèn)值22
port=2222
[servers.2]
server_name="測(cè)試服務(wù)器2"
hostname="test2.server.aicode.cc"
user="root"
tail_file="/var/log/messages"
[servers.3]
server_name="測(cè)試服務(wù)器3"
hostname="test2.server.aicode.cc"
user="demo"
password="123456"
執(zhí)行命令:
remote-tail -conf=example.toml
如何貢獻(xiàn)
歡迎貢獻(xiàn)新的功能以及bug修復(fù),Fork項(xiàng)目后修改代碼,測(cè)試通過(guò)后提交pull request即可。
問(wèn)題反饋
你可以在github的issue中提出你的bug或者其它需求。
