工作中遇到一個需求:從日誌文件中提取符合指定條件的數據,獲取其出現頻次(條件有多種、日誌有多個)。存有日誌的服務器是線上運行的服務器,直接在其上進行操作會對服務器造成較大壓力。故需對日誌進行轉移,而其又是內網服務器,只能通過跳板機登錄,故將相關日誌複製到跳板機中再進行操作。
個人研究後,使用awk
命令解決,以下是操作過程和撰寫的Shell腳本。
Request
統計以all.log
開頭的日誌文件中含有search.do
,並符合以下幾種條件的數據的出現頻次
- 同時含有
startLat
、endLat
; - 只含有
startLat
; - 只含有
endLat
;
Procedure
以下是操作過程
Compress
使用tar jcvf
將符合條件的日誌壓縮爲tar.xz
格式。
|
|
Transfer
在跳板機front
上執行如下命令(192.168.92.37爲主機deerbus的ip),將目標文件同步到跳板機中
|
|
操作過程
|
|
Decompress
在跳板機中對目標文件進行解壓操作,使用tar jxvf
解壓,通過參數-C
指定解壓後文件存儲路徑
|
|
Execution
數據提取過程
Via script
腳本執行過程,腳本內容在本文下方
|
|
Via tail
使用tail
動態查看
|
|
Scripts
此爲本人撰寫的腳本,同時實現數據的提取、處理、顯示,輸出結果可直接複製入Excel文件中
|
|
Results
以下是輸出的最終結果
date | totalCount | startOnlyCount | endOnlyCount |
---|---|---|---|
2016-06-23 | 809 | 188 | 10 |
2016-06-24 | 1059 | 225 | 19 |
2016-06-25 | 291 | 74 | 11 |
2016-06-26 | 749 | 136 | 2 |
2016-06-27 | 1164 | 224 | 14 |
2016-06-28 | 1157 | 214 | 14 |
2016-06-29 | 1263 | 196 | 14 |
2016-06-30 | 1316 | 176 | 5 |
2016-07-01 | 868 | 154 | 5 |
2016-07-02 | 322 | 87 | 13 |
2016-07-03 | 749 | 153 | 17 |
2016-07-04 | 1109 | 179 | 27 |
2016-07-05 | 1170 | 238 | 24 |
2016-07-06 | 1132 | 191 | 20 |
2016-07-07 | 1147 | 209 | 29 |
2016-07-08 | 964 | 153 | 5 |
2016-07-09 | 299 | 56 | 7 |
2016-07-10 | 703 | 131 | 10 |
2016-07-11 | 1415 | 231 | 26 |
2016-07-12 | 1306 | 248 | 23 |
2016-07-13 | 401 | 96 | 6 |
Change Logs
- 2016.07.13 20:38 Wed Asia/Shanghai
- 初稿完成
- 2018.04.12 10:02 Thu America/Boston
- 勘誤,遷移到新Blog