高端Linux培訓×××?Linux日誌知識點
雖然提取的時候,不總是和你想的一樣簡單,但是日誌中有大量信息在等著你。在這部分,我們會講一些基本分析示例,你可以馬上拿來處理你的日誌(只是搜索裏面有什麽)。我們還會講一些高級分析方法,開始的時候可能要花時間來做配置,但會為以後省很多時間。你可以把高級分析的示例用在待解析的數據上,比如生成摘要計數,過濾字段值等。
我們先來演示,你應該如何使用不同的工具在命令行進行日誌分析;然後,演示一個日誌管理工具,它能夠讓大多數乏味的工作變得自動化和高效。
使用 Grep 搜索
搜索文本是找到你想要的信息的基本方法。搜索文本常用的工具是 grep 。這個命令行工具,大多數 Linux 發行版上都有,它支持你用正則表達式來搜索日誌。正則表達式是一種用專門語言寫成的語句,可用來識別匹配文本。簡單的正則表達式是把你搜索的字符串加上引號。
正則表達式
這裏有個例子,它在 Ubuntu 的認證日誌裏搜索 “user hoover”:
$ GREP "USER HOOVER" /VAR/LOG/AUTH.LOG
ACCEPTED PASSWORD FOR HOOVER FROM 10.0.2.2 PORT 4792 SSH2
PAM_UNIX(SSHD:SESSION): SESSION OPENED FOR USER HOOVER BY (UID=0)
PAM_UNIX(SSHD:SESSION): SESSION CLOSED FOR USER HOOVER
構造精確的正則表達式很難。例如,假設我們搜索一個數字,比如端口號“4792” ,它也可以匹配時間戳,URLs和其他不需要的數據。在下面針對 Ubuntu 的例子裏,它匹配了 Apache 日誌,但這並不是我們想要的。
$ grep "4792" /var/log/auth.log
Accepted password for hoover from 10.0.2.2 port 4792 ssh2
74.91.21.46 - - [31/Mar/2015:19:44:32 +0000] "GET /scripts/samples/search?q=4972HTTP/1.0" 404 545 "-" "-”
延伸搜索
另一個有用的技巧是你可以用grep 做延伸搜索。它會輸出匹配項的前幾行和後幾行內容。它可以幫你調試是什麽導致了錯誤或問題。B 選項指定顯示匹配項前面的行數,A 選項指定顯示匹配項後面的行數。如下所示,我們看到,當有人以 admin 身份登陸失敗後, 反向映射也會失敗,這說明他們可能沒有有效的域名。這很可疑!
$ grep -B 3 -A 2 ‘Invalid user‘ /var/log/auth.log
Apr 28 17:06:20 ip-172-31-11-241 sshd[12545]: reverse mapping checking getaddrinfo for 216-19-2-8.commspeed.net[216.19.2.8] failed - POSSIBLE BREAK-IN ATTEMPT!
Apr 28 17:06:20 ip-172-31-11-241 sshd[12545]: Received disconnect from 216.19.2.8: 11: Bye Bye [preauth]
Apr 28 17:06:20 ip-172-31-11-241 sshd[12547]: <b>Invalid user</b>; admin from 216.19.2.8
Apr 28 17:06:20 ip-172-31-11-241 sshd[12547]: input_userauth_request: invalid user admin [preauth]
Apr 28 17:06:20 ip-172-31-11-241 sshd[12547]: Received disconnect from 216.19.2.8: 11: Bye Bye [preauth]
高端Linux培訓×××?Linux日誌知識點