服務(wù)器日志查看,是開發(fā)人員和服務(wù)器運維人員在工作中經(jīng)常會遇到的一件事情凝果,只有一臺服務(wù)器時祝迂,比較好辦,直接登錄服務(wù)器使用tail -f file-path 命令就可以實時查看到日志文件的輸出器净。當(dāng)有負載的需要型雳,服務(wù)器多了之后,就會比較麻煩山害,為了查找一個問題的日志可能需要登錄多臺服務(wù)器纠俭。今天給大家介紹一種借助sshfs,非常簡單的日志文件掛載方案浪慌,可以方便大家查看服務(wù)器日志文件冤荆。
sshfs介紹
sshfs是基于fuse構(gòu)建的ssh文件系統(tǒng)客戶端程序,通過它遠程主機的配置無需作任何改變权纤,就可以透過SSH協(xié)議來掛載遠程文件系統(tǒng)了钓简,非常方便及安全。
sshfs的安裝汹想,在centOS中的安裝命令如下
yum -y install sshfs
掛載
sshfs的遠程文件掛載外邓,需要結(jié)合ssh免密碼登錄一起實施。
假設(shè)現(xiàn)在有A古掏、B损话、C三臺服務(wù)器的日志,需要掛載到D服務(wù)器槽唾。
首先需要將D服務(wù)器的公鑰寫入A丧枪、B、C三臺服務(wù)器庞萍。
配置方法參見我之前的文章拧烦。
把遠程服務(wù)器的 /mydata/logs/
目錄下的所有文件,掛載到D服務(wù)器挂绰,在D服務(wù)器的/mydata/logs/
目錄下為每個服務(wù)器建一個目錄屎篱。(ipaddressA代表A服務(wù)器的ip地址服赎,需要自行替換)
//把A服務(wù)器的 /mydata/logs/ 目錄 掛載到 D服務(wù)器的 /mydata/logs/A/ 目錄
sshfs root@ip_address_A:/mydata/logs/ /mydata/logs/A/
其他兩臺服務(wù)器的掛載方法一樣葵蒂。掛載成功后,可以使用 mount命令查看掛載情況:
mount -l
可以看到掛載的情況:
root@ip_address_A:/mydata/logs/on /mydata/logs/A type fuse.sshfs (rw,nosuid,nodev)
root@ip_address_B:/mydata/logs/on /mydata/logs/B type fuse.sshfs (rw,nosuid,nodev)
root@ip_address_C:/mydata/logs/on /mydata/logs/C type fuse.sshfs (rw,nosuid,nodev)
也可以使用df -h
命令查看磁盤的掛載情況重虑。另外践付,想要開機自動掛載目錄,可以編輯/etc/fstab
文件缺厉,加入以下幾行:
sshfs#root@ip_address_A:/mydata/logs/ /mydata/logs/A fuse defaults,auto,allow_other 0 0
sshfs#root@ip_address_B:/mydata/logs/ /mydata/logs/B fuse defaults,auto,allow_other 0 0
sshfs#root@ip_address_C:/mydata/logs/ /mydata/logs/C fuse defaults,auto,allow_other 0 0
其中永高,allow_other
參數(shù)代表該設(shè)置對其他用戶也生效隧土。也必須先把ssh自動登錄配置好了,讓root用戶能夠使用root身份登錄遠程主機命爬。配置方法參見我之前的文章曹傀。
掛載成功后,就可以在服務(wù)器D直接查看所有服務(wù)器的日志了饲宛,在D服務(wù)器的/mydata/logs/
目錄輸入以下命令皆愉。(假設(shè)A、B艇抠、C三臺服務(wù)器的/mydata/logs/
目錄下都有l(wèi)og.txt這個文件
tail -f */log.txt
日志的輸出中幕庐,會標(biāo)出日志是在哪臺服務(wù)器的,例如:
==> A/log.txt <==
get log message from A
假如只想查看日志中包含關(guān)鍵字 a b c
的日志家淤,可以這樣查看
tail -f */log.txt | grep 'a b c'
日志的輸出會有一定的延時异剥。
需要注意的是,取消掛載時絮重,不要直接刪除掛載目錄冤寿,請使用以下命令取消掛載:
fusermount -u /mydata/logs/A
或者直接使用umount命令取消掛載。