Apche日誌系列(5):高階技術(轉)
Apche日誌系列(5):高階技術(轉)[@more@]這是《Apache日誌》系列文章的最後一篇,除了補充說明前面幾篇文章之外,另外討論了三個問題:如何將日誌記錄寫入指定的程式而不是日誌檔案,如何輪換日誌防止磁碟空間不足,多虛擬主機環境下的日誌檔案管理。一、把日誌記錄寫入到指定程式 在這個《Apache日誌》系列文章的前一篇中,我們討論了幾種日誌檔案分析工具。應當補充說明的是,它並沒有列出全部的分析工具。在 Google上簡單地搜尋一下“apache log reporting”或類似的關鍵詞,返回有關該主題的頁面多達數百個,有許多供應商在為這個相對簡單的問題推銷自己特有的方案。 日誌記錄並非只能寫入到檔案,它還可以寫入到指定的程式。當我們想要把日誌資訊寫入資料庫、或者是某些能夠實時顯示網站流量統計資訊的程式時,這一點是非常有用的。 那麼,如何實現這一點呢?使用TransferLog或者CustomLog指令,我們能夠指定“|”,後面再加上接收日誌資訊的程式名字。例如: CustomLog |/usr/bin/apachelog.pl common 其中/usr/bin/apachelog.pl是一個程式,這個程式知道如何處理Apache日誌檔案的記錄。事實上,這個程式非常簡單,比如它可以是一個按照某種方式處理日誌記錄的Perl程式,或者是一個將日誌記錄寫入資料庫的程式。 在採用這種記錄日誌資料的方法時,安全問題是最必須關注的問題。日誌檔案是以啟動伺服器的使用者所具有的許可權開啟的,通常是root。對於將日誌記錄寫入資料庫的程式,這一點也同樣有效,所以應當確保用於記錄日誌資料的程式具有充分的安全保證。 如果日誌資料透過一個不安全的程式記錄(這個程式可能被非root使用者侵入和修改),那麼系統就面臨著日誌記錄程式被其他懷有惡意的程式替換的危險。例如,如果/usr/bin/apachelog.pl可被全世界的使用者修改,那麼任何使用者都將能夠編輯這個檔案關閉Web伺服器,把密碼檔案傳送到某個信箱,或者刪除某些重要的檔案,因為root使用者具有進行所有這些操作的許可權。 如果你要把日誌記錄寫入到某個程式,建議先找找是否有現成的具備自己想要功能的模組。請訪問,該網站收集了許多面向Apache完成各類實際任務的模組。二、輪換日誌 日誌檔案會越來越大,如果不小心把日誌檔案放到了/var之類位置,日誌檔案可能寫滿分割槽,從而導致伺服器被迫停止執行。這種事情確實曾經發生過。 防止出現這種問題的辦法是,在日誌檔案變得太大之前把它們移到其他具有足夠空間的位置。這可以透過幾種方法實現。某些Unix變種提供一個 logrotate指令碼,它能夠幫助我們完成這個任務。例如RedHat就已經預先配置,它會根據日誌檔案的大小或者日誌檔案的使用時間,每隔幾日輪換日誌檔案。 如果要自己實現這方面的功能,我們可以使用稱為Logfile::Rotate的Perl模組(可從CPAN下載)。下面的程式碼就具有這種功能,它由cron按照一定的間隔週期(比如一星期)執行,為了節省空間。每一個備份的日誌檔案都經過壓縮。 use Logfile::Rotate;$logfile = new Logfile::Rotate(File => &single;/usr/local/apache/logs/access_log&single;,Count => 5,Gzip => &single;/bin/gzip&single;,Signal => sub {`/usr/local/apache/bin/apachectl restart`;}); 程式碼不多,Perl模組Logfile::Rotate負責了所有具體操作任務。執行這個程式,我們將得到名為access_log.1.gz、 access_log.2.gz等的檔案。它可以幫助我們避免磁碟空間的不足,使得我們能夠儲存任意多的檔案檔案。 三、多個虛擬主機的日誌 曾經有好幾個人問起,當同一臺機器上執行著多個虛擬主機時應該如何分析日誌?我想,他們是先把所有虛擬主機的日誌記錄都儲存到了同一臺機器,然後又企圖把這個日誌檔案按照虛擬主機的不同分割成多個部分。 徹底解決這個問題的方法是一開始就不要把所有虛擬主機的日誌記錄都寫入到同一個檔案。雖然我知道確實存在這樣的工具,它們能夠把多個虛擬主機混合的日誌記錄根據虛擬主機配置分開,指出哪些請求針對哪個虛擬主機發出,然後分別生成報表。然而,這種方法看起來實在是太麻煩了。 為每一個虛擬主機分別指定日誌檔案時,我們只需在每個VirtualHost區域指定該主機的日誌檔案。此後,當需要製作報表時,我們就可以分別地處理各個日誌檔案。 但這裡必須注意一下可用檔案控制程式碼的問題。也就是說,如果某臺伺服器上執行的虛擬主機多達數百個,每個虛擬主機都有單獨的日誌檔案,系統可能會出現可用檔案控制程式碼不足的問題,它可能導致系統不穩定甚至導致系統崩潰。然而,只有當伺服器上執行的虛擬主機數量非常龐大時,我們才有關注這個問題的必要。 《Apache日誌》系列文章到此已經全部結束。在這五篇文章中,我們討論了Apache日誌功能的方方面面,從標準日誌(訪問日誌,錯誤日誌)到定製日誌、日誌分析等等,希望這些內容能夠對你有所幫助。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-937347/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Apche日誌系列(4):日誌分析(轉)
- Apche日誌系列(1):訪問日誌(轉)
- Apche日誌系列(2):錯誤日誌(轉)
- Apche日誌系列(3):定製日誌(轉)
- DM8高階日誌
- UNIX find 命令的高階技術 (轉)
- apche-tomcat日誌過大解決方案。Tomcat
- nginx高階訪客日誌切割Nginx
- [技術分享]日誌切割(按天切割日誌)
- 高階掃描技術及原理介紹(轉)
- MySQL系列-- 5. MySQL高階特性MySql
- HTML5 高階系列:web StorageHTMLWeb
- 部署 Graylog 日誌系統 - 每天5分鐘玩轉 Docker 容器技術(92)Docker
- 如何用 Graylog 管理日誌? - 每天5分鐘玩轉 Docker 容器技術(93)Docker
- logminer日誌挖掘技術
- Android高階模糊技術Android
- 【轉】【技術部落格】Spark效能優化指南——高階篇Spark優化
- 七、Spring MVC高階技術SpringMVC
- Kubernetes 叢集日誌管理 - 每天5分鐘玩轉 Docker 容器技術(180)Docker
- 雲原生系列5 容器化日誌之EFK
- 2020BATJ面試系列:145個技術題高階技術題,助你拿offer!BAT面試
- Mylearningpath(網路安全高階應用)TCP/IP高階技術TCP
- CTF記憶體高階利用技術記憶體
- OpenGL高階版本學習日誌2:光照模型&材質模型
- vue高階進階系列——用typescript玩轉vue和vuexVueTypeScript
- MySQL技術內幕之“日誌檔案”MySql
- 雲原生技術學習路線圖 初階+中階+高階
- WebGL程式設計指南(8)高階技術Web程式設計
- 研發高階能力之「技術規劃」
- 高階前端進階系列 - webview前端WebView
- 開學日誌5
- 分散式系統原理--日誌技術Redo Log分散式
- MACD技術的高階應用--MACD與波浪Mac
- Apache Spark SQL的高階Join連線技術ApacheSparkSQL
- iOS核心動畫高階技術(十五) 圖層效能iOS動畫
- iOS核心動畫高階技術(十二) 效能調優iOS動畫
- 高階正規表示式技術(Python版)Python
- 提升編碼技能的 幾 種高階技術