linux 統一檢視多服務日誌

2021-09-26 11:09:12 字數 1274 閱讀 4363

前端請求介面後, 業務資料流可能會經過一層又一層的服務,而後得到結果。最近有乙個老專案, 服務包有十來個,介面請求後,會經過一層又一層的服務呼叫。假若介面報錯,又不是很熟悉專案的情況下,排查哪個服務丟擲的異常都有點費勁。於是乎,寫了乙個指令碼來處理。

很早之前,寫過乙個從多個伺服器獲取服務日誌,並且統一輸出的python指令碼。但此專案剛好所有的包都在同一伺服器上,那麼能不能用幾行簡單的命令來實現呢?

工作中,檢視實時日誌一般都是使用命令:

tail -f file.log
如果檢視多個檔案的日誌,那麼:

tail -f file.log file2.log file3.log
根據上述這個套路, 我們可以實現之前的構想。直接tail -f file.log file2.log file3.log ... 所有日誌檔案。具體實現如下:

#!/bin/bash

arr=(/logs/business/logs/stdout.log /logs/itn/logs/stdout.log /logs/openapi/logs/stdout.log /logs/viewpoint/logs/stdout.log /logs/common/logs/stdout.log /logs/push/logs/stdout.log /logs/operate/logs/stdout.log /logs/sms/logs/stdout.log /logs/chat/logs/stdout.log /logs/configure/logs/stdout.log /logs/uc/logs/stdout.log /logs/export/logs/stdout.log)

c="tail -f "

for((i=0; i<$; i++)); do c="$$ " ; done; $

1、定義乙個陣列arr,陣列內元素為日誌檔案路徑;

2、定義乙個字串變數c,用來拼接命令;

3、寫乙個for迴圈,讀取陣列的內容,並拼接變數c

4、執行命令

上述乙個簡單的shell指令碼基本能實現我們的目的了。

如果日誌是從多台伺服器獲取,如何用shell指令碼解決呢?

大體思路可以跟上述一樣,只不過需要解決日誌遠端傳輸的問題。可以配置ssh免密登入,然後使用scp命令,同步遠端日誌檔案至本地,使用tail -f 命令讀取本地檔案即可。

linux命令初體驗(一)檢視目錄命令

今天開始學習linux的使用,虛擬機器下的ubuntu系統安裝完成後第一件事就是學習使用linux系統的命令 檢視當前目錄的指令是 ls命令 如 ls 回車就可以顯示當前所在目錄下的檔案 需要檢視當前目錄下隱藏的資料夾用 ls a即可 有時候我們需要檢視其它目錄中的檔案,此時我們就可以在ls命令後面...

linux伺服器遠端日誌統一管理

遠端日誌配置 1.服務端 1 編輯日誌檔案 vim etc rsyslog.conf 重啟日誌服務 etc init.d rsyslog restart 2 在 usr share doc rsyslog 5.8.10 下遞迴尋找所有包含fromhost資訊的檔案 3 在存放自己日誌檔案的目錄下建立...

基礎元件 統一服務日誌切面

dependency groupid org.springframework.boot groupid artifactid spring boot starter aop artifactid dependency author gabriel date 2020 1 28 22 08 descr...