搜尋
首頁後端開發php教程如何分析Linux日誌

日誌中有大量的資訊需要你處理,儘管有時候想要提取並非想像中的容易。在這篇文章中我們會介紹一些你現在就能做的基本日誌分析範例(只要搜尋即可)。我們還將涉及一些更高級的分析,但這些需要你前期努力做出適當的設置,後期就能節省很多時間。對資料進行進階分析的例子包括產生總計計數、對有效值進行過濾,等等。
我們首先會向你展示如何在命令列中使用多個不同的工具,然後展示了一個日誌管理工具如何能自動完成大部分繁重工作從而使得日誌分析變得簡單。
Grep 搜尋 Grep
搜尋搜尋文字是找出資訊最基本的方式。搜尋文字最常使用的工具是 grep。這個命令列工具在大部分 Linux
發行版中都有,它允許你用正規表示式搜尋日誌。正規表示式是一種用特殊的語言寫的、能辨識出匹配文字的模式。最簡單的模式就是用引號把你想要找的字串括起來。
正規表示式
這是一個這是一個 Ubuntu 系統的認證日誌中尋找
🎜 >
的範例:$m/m> var/log/auth.logAccepted passwordfor hoover from 10.0.2.2 port 4792 ssh2pam_unix(sshd:session):session closed for user hoover精確的正規表示式可能很難。例如,如果我們想要搜索一個類似端口 4792
的數字,它可能也會匹配時間戳、
URL
URL
以及它不不需要的數據。
Ubuntu
中下面的例子,它匹配了一個我們不想要的 Apache 日誌。 $ grep "4792"/var/log/auth.logAccepted passwordfor hoover from 10.0.29. 74.91.21.46 - -[31/Mar/2015:19:44:32 0000] "GET /scripts/samples/search?q=4972HTTP/1.0" 40440 " "-”環繞搜尋
另一個有用的小技巧是你可以用 grep 做環繞搜尋。這會向你展示一個匹配前面或後面幾行是什麼。它能幫助你除錯導致錯誤或問題的東西。 B 選項顯示前面幾行,A 選項展示後面幾行。舉個例子,我們知道當一個人以管理員員身分登入失敗時,同時他們的 IP 也沒有反向解析,也就意味著他們可能沒有有效的域名。這非常可疑!
$ grep -B 3 -A 2'Invalid user' /var/log/auth.log
Apr 28 17 :06:20ip-172-31-11-241 sshd[12545]: reverse mapping checking getaddrinfo for216-19-2-8.comms [12545]: reverse mapping checking getaddrinfo for216-19-2-8.commsAKed.net [216.19.2.8] failed - POSSIBLELEBRE-INOSSIBLEBRE! >
Apr 28 17:06:20ip-172-31-11-241 sshd[12545]: Received disconnect from 216.19.2.8: 11: Bye Bye[preauth>
Apr 28 17:06:20ip-172-31-11-241 sshd[12547]: Invalid user admin from 216.19.2.8
Apr 172-31-11-241 sshd[12547]: input_userauth_request: invalid user admin[preauth]
Apr 28 17:06:205-1727-341257 ]: Received disconnect from 216.19.2.8: 11: Bye Bye[preauth]
Tail
Tail
Tail grep tail 結合使用來獲取一個文件的最後幾行,或者跟踪日誌並即時列印。這在你做互動式更改的時候非常有用,例如啟動伺服器或測試程式碼變更。
$ tail -f/var/log/auth.log | grep 'Invalid user'
Apr 30 19:49 :48ip-172-31-11-241 sshd[6512]: Invalid user ubnt from 219.140.64.136
Apr 30 19:49:496 [6514]: Invalid user admin from 219.140.64.136
關於rep 關於rep Ryan's Tutorials
s Tutorials >有更深入的介紹。 日誌管理系統有更高的效能和更強的搜尋能力。它們通常會索引資料並進行並行查詢,因此你可以很快的在幾秒內就能搜尋 GB TB 的日誌。相較之下,grep
就需要幾分鐘,在極端情況下可能甚至幾小時。日誌管理系統也使用類似 Lucene 的查詢語言,它提供更簡單的語法來檢索數字、領域以及其它。 Cut Cut Cut> 🎜>
和 Grok Grok 命令列工具
Linux 提供了多個命令列工具用於文字解析和分析。當你想要快速解析少量資料時非常有用,但處理大量資料時可能需要很長時間。
Cut
cut 指令允許你從有分隔符號的日誌中解析。分隔符號是指能分開欄位或鍵值對的等號或逗號等。
假設我們想從下面的日誌中解析出使用者:
pam_unix(su ):authentication failure; logname=hoover uid=1000 euid=0 tty=/dev/pts/0ruser=hoover rhost=  user=root
我們可以像下面這樣用 cut 指令取得等號分割後的第八個欄位的文字。這是一個 Ubuntu 系統上的範例:
$cationmrepaa. /log/auth.log | cut -d '=' -f 8
root
hoover
root
nagios
nagios
nagios
nagiosJ 另外,你也可以使用 awk
,它能提供更強大的解析欄位功能。它提供了一個腳本語言,你可以過濾出幾乎任何不相干的東西。 例如,假設在 Ubuntu
系統中我們有下一行的我們想要擷取登入失敗的使用者名稱:
Mar 24 08:28:18ip-172-31-11-241 sshd[32701]: input_userauth_request: invalid [preauth]你可以像下面這樣使用 awk 指令。首先,用一個正規表示式 /sshd.*invalid user/ 來配對 sshd invalid>來符合 sshd invalid> 來符合 sshd invalid> 來匹配
sshd invalid> user
行。然後用
{ print $9 }
根據預設的分隔符空格列印第九個欄位。這樣就輸出了使用者名稱。
$ awk'/sshd.*invalid user/ { print $9 }' /var/log/auth.log
guest
admin
infotesttest試試🎜>ubnt
你可以在
Awk
使用者指南 Awk 使用者指南 中閱讀更多關於如何使用正規表示式和輸出欄位的資訊。 日誌管理系統
日誌管理系統使得解析變得更簡單,使解析變得更簡單,使使用者能快速的分析很多的日誌檔。他們可以自動解析標準的日誌格式,例如常見的 Linux 日誌和 Web Web Web 伺服器日誌。這能節省很多時間,因為當處理系統問題的時候你不需要考慮自己寫解析邏輯。
下面是一個 sshd 日誌訊息的例子,解析出了每個日誌訊息的例子,解析出了每個 remoteHost user。這是 Loggly
中的一張截圖,它是一個基於雲端的日誌管理服務。 也可以對非標準格式自訂解析。常用的工具是 Grok,它用一個常見正規表示式函式庫,可以解析原始文字為結構化 JSON。下面是一個 Grok Logstash
中解析日誌檔案的例子中解析配置:
filter{
  grok  {
"%{CISCOTIMESTAMP:timestamp} %{HOST:host} %{WORD:program}%{NOTSPACE}%{NOTSPACE}%{NUMBER:duration}%{NOTSPACE} %{GREEDYDATA:ker🎜>"
  }
}
🎜> AWK
過濾讓你能檢索一個特定的欄位值而不是進行全文檢索。這使你的日誌分析更加準確,因為它會忽略來自其它部分日誌資訊不需要的匹配。為了對一個欄位值進行搜索,你首先需要解析日誌或至少有對事件結構進行檢索的方式。
如何過濾應用程式
通常,你可能只想看一個應用的日誌。如果你的應用程式把記錄都保存到一個檔案中就會很容易。如果你需要在一個聚集或集中式日誌中過濾一個應用程式就會比較複雜。以下有幾個方法可以實現:
rsyslog rsyslog 守護程式解析和過濾日誌。下面的例子將 sshd 應用的日誌寫入一個名為 sshd-message 的文件,然後丟棄事件以便它不會在其它地方重複出現。你可以將它加到你的 rsyslog.conf
檔案中測試這個範例。
:programname,isequal, “sshd” /var/log/sshd-messages
&~用類似 awk 的命令列工具擷取特定欄位的值,例如 sshd 使用者名稱。下面是 Ubuntu
系統中的一個例子。
$ awk'/sshd.*invalid user/ { print $9 }' /var/log/auth.log
guest
admin
infotesttesttesttesttesttesttesttesttest
ubnt
用日誌管理系統自動解析日誌,然後在需要的應用程式名稱上點選篩選。下面是在 Loggly 日誌管理服務中提取 syslog 域的截圖。我們對應用名稱 sshd過濾,
如何過濾錯誤
syslog
配置不直接輸出錯誤的嚴重性,也使得難以過濾它們。
這裡有兩個解決問題的方法。首先,你可以修改你的 rsyslog 配置,在日誌檔案中輸出錯誤的嚴重性,使得便於查看和檢索。在你的 rsyslog 設定中你可以用 pri-text pri-text 加一個
模板,像下面這樣:"": %timegenerated %,%HOSTNAME%,%syslogtag%,%msg%n"
這個例子會按照下面的格式輸出。你可以看到該訊息中指示錯誤的
err: Mar 11 18:18:00,hoover-VirtualBox,su[5026]:, pam_authenticate: Authenticationfailure你可以用 awk 或者 grep 檢索錯誤訊息.在 Ubuntu 中,對這個例子,我們可以用一些語法特徵,例如 .
.
>,它們只會匹配這個域。 $ grep '.err>'/var/log/auth.log
: Mar 111 18:18:00,hoover-VirtualBox,su[5026]:, pam_authenticate: Authenticationfailure你的第二個選擇是使用日誌管理系統。好的日誌管理系統能自動解析 syslog 訊息並抽取錯誤域。它們也允許你用簡單的點擊過濾日誌訊息中的特定錯誤。
顯示了高亮錯誤嚴重性的

syslog
syslog
域過濾錯誤


.免費領取兄弟連IT教育原創linux運維工程師影片/細說linux教程,詳情諮詢官網客服:http://www.lampbrother .net/linux/學PHP、Linux、HTML5、UI、Android等影片教學(課件筆記影片)!聯絡Q2430675018歡迎加入linux交流群 群號: 478068715
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
可以在PHP會話中存儲哪些數據?可以在PHP會話中存儲哪些數據?May 02, 2025 am 12:17 AM

phpsessionscanStorestrings,數字,數組和原始物。

您如何開始PHP會話?您如何開始PHP會話?May 02, 2025 am 12:16 AM

tostartaphpsession,usesesses_start()attheScript'Sbeginning.1)placeitbeforeanyOutputtosetThesessionCookie.2)useSessionsforuserDatalikeloginstatusorshoppingcarts.3)regenerateSessiveIdStopreventFentfixationAttacks.s.4)考慮使用AttActAcks.s.s.4)

什麼是會話再生,如何提高安全性?什麼是會話再生,如何提高安全性?May 02, 2025 am 12:15 AM

會話再生是指在用戶進行敏感操作時生成新會話ID並使舊ID失效,以防會話固定攻擊。實現步驟包括:1.檢測敏感操作,2.生成新會話ID,3.銷毀舊會話ID,4.更新用戶端會話信息。

使用PHP會話時有哪些性能考慮?使用PHP會話時有哪些性能考慮?May 02, 2025 am 12:11 AM

PHP会话对应用性能有显著影响。优化方法包括:1.使用数据库存储会话数据,提升响应速度;2.减少会话数据使用,只存储必要信息;3.采用非阻塞会话处理器,提高并发能力;4.调整会话过期时间,平衡用户体验和服务器负担;5.使用持久会话,减少数据读写次数。

PHP會話與Cookie有何不同?PHP會話與Cookie有何不同?May 02, 2025 am 12:03 AM

PHPsessionsareserver-side,whilecookiesareclient-side.1)Sessionsstoredataontheserver,aremoresecure,andhandlelargerdata.2)Cookiesstoredataontheclient,arelesssecure,andlimitedinsize.Usesessionsforsensitivedataandcookiesfornon-sensitive,client-sidedata.

PHP如何識別用戶的會話?PHP如何識別用戶的會話?May 01, 2025 am 12:23 AM

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

確保PHP會議的一些最佳實踐是什麼?確保PHP會議的一些最佳實踐是什麼?May 01, 2025 am 12:22 AM

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

PHP會話文件默認存儲在哪裡?PHP會話文件默認存儲在哪裡?May 01, 2025 am 12:15 AM

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。