使用sshfs掛載遠程服務器目錄

服務器日誌查看,是開發人員和服務器運維人員在工作中經常會遇到的一件事情,只有一臺服務器時,比較好辦,直接登錄服務器使用tail -f file-path 命令就可以實時查看到日誌文件的輸出。當有負載的需要,服務器多了之後,就會比較麻煩,爲了查找一個問題的日誌可能需要登錄多臺服務器。今天給大家介紹一種藉助sshfs,非常簡單的日誌文件掛載方案,可以方便大家查看服務器日誌文件。

sshfs介紹

sshfs是基於fuse構建的ssh文件系統客戶端程序,通過它遠程主機的配置無需作任何改變,就可以透過SSH協議來掛載遠程文件系統了,非常方便及安全。

sshfs的安裝,在centOS中的安裝命令如下:

yum -y install sshfs

掛載

sshfs的遠程文件掛載,需要結合ssh免密碼登錄一起實施。假設現在有A、B、C三臺服務器的日誌,需要掛載到D服務器。首先需要將D服務器的公鑰寫入A、B、C三臺服務器。配置方法參見我之前的文章

把遠程服務器的 /mydata/logs/目錄下的所有文件,掛載到D服務器,在D服務器的/mydata/logs/目錄下爲每個服務器建一個目錄。(ip_address_A代表A服務器的ip地址,需要自行替換)

//把A服務器的 /mydata/logs/ 目錄 掛載到 D服務器的 /mydata/logs/A/ 目錄

sshfs root@ip_address_A:/mydata/logs/ /mydata/logs/A/

其他兩臺服務器的掛載方法一樣。掛載成功後,可以使用 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參數代表該設置對其他用戶也生效。也必須先把ssh自動登錄配置好了,讓root用戶能夠使用root身份登錄遠程主機。配置方法參見我之前的文章

掛載成功後,就可以在服務器D直接查看所有服務器的日誌了,在D服務器的/mydata/logs/目錄輸入以下命令。(假設A、B、C三臺服務器的/mydata/logs/目錄下都有log.txt這個文件)

tail -f */log.txt

日誌的輸出中,會標出日誌是在哪臺服務器的,例如:

==> A/log.txt <==
get log message from A

假如只想查看日誌中包含關鍵字 a b c的日誌,可以這樣查看

 tail -f */log.txt | grep 'a b c'

日誌的輸出會有一定的延時。 需要注意的是,取消掛載時,不要直接刪除掛載目錄,請使用以下命令取消掛載:

fusermount -u /mydata/logs/A

或者直接使用umount命令取消掛載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章