1. 程式人生 > >Apache日誌輪詢配置詳解

Apache日誌輪詢配置詳解

Apache日誌輪詢介紹 Apache日誌輪詢配置 Apache虛擬主機日誌輪詢

Apache日誌輪詢配置詳解

1apache日誌輪詢作用

隨著服務器的不斷運行,日誌文件會越來越大,如果不小心把日誌文件放到了/var之類位置,日誌文件可能寫滿分區,從而導致服務器被迫停止運行。這種事情確實曾經發生過。為了防止出現這種問題,可以在日誌文件變得太大之前把它們移到其他具有足夠空間的位置。這可以通過幾種方法實現。某些Unix變種提供一個logrotate腳本,它能夠幫助我們完成這個任務。例如RedHat就已經預先配置,它會根據日誌文件的大小或者日誌文件的使用時間,每隔一段時間來輪換日誌文件,從而讓單個日誌文件不會太大,從而方便保存、查看及分析。

2、把日誌記錄寫入到指定程序

日誌記錄並非只能寫入到文件,它還可以寫入到指定的進程。當我們想要把日誌信息寫入數據庫、或者是某些能夠實時顯示網站流量統計信息的程序時,這一點是非常有用的。

要實現這個功能可以使用TransferLog或者CustomLog指令,我們能夠指定“|”,後面再加上接收日誌信息的程序名字。例如:

CustomLog | /usr/bin/apachelog.pl common

其中/usr/bin/apachelog.pl是一個程序,這個程序知道如何處理Apache日誌文件的記錄。事實上,這個程序非常簡單,比如它可以是一個按照某種方式處理日誌記錄的Perl程序,或者是一個將日誌記錄寫入數據庫的程序。 在采用這種記錄日誌數據的方法時,安全問題是最必須關註的問題。日誌文件是以啟動服務器的用戶所具有的權限打開的,通常是root。對於將日誌記錄寫入數據庫的程序,這一點也同樣有效,所以應當確保用於記錄日誌數據的程序具有充分的安全保證。


如果日誌數據通過一個不安全的程序記錄(這個程序可能被非root用戶侵入和修改),那麽系統就面臨著日誌記錄程序被其他懷有惡意的程序替換的危險。例如,如果/usr/bin/apachelog.pl可被全世界的用戶修改,那麽任何用戶都將能夠編輯這個文件關閉Web服務器,把密碼文件發送到某個信箱,或者刪除某些重要的文件,因為root用戶具有進行所有這些操作的權限。
如果你要把日誌記錄寫入到某個程序,建議先找找是否有現成的具備自己想要功能的模塊。請訪問http://modules.apache.org/,該網站收集了許多面向Apache完成各類實際任務的模塊。

3、多個虛擬主機的日誌

當同一臺機器上運行著多個虛擬主機時,先把所有虛擬主機的日誌記錄都保存到了同一臺機器,然後又企圖把這個日誌文件按照虛擬主機的不同分割成多個部分。 徹底解決這個問題的方法是一開始就不要把所有虛擬主機的日誌記錄都寫入到同一個文件。雖然我知道確實存在這樣的工具,它們能夠把多個虛擬主機混合的日誌記錄根據虛擬主機配置分開,指出哪些請求針對哪個虛擬主機發出,然後分別生成報表。然而,這種方法看起來實在是太麻煩了。
我們為每一個虛擬主機分別指定日誌文件時,我們只需在每個VirtualHost區域指定該主機的日誌文件。此後,當需要制作報表時,我們就可以分別地處理各個日誌文件。
但這裏必須註意一下可用文件句柄的問題。也就是說,如果某臺服務器上運行的虛擬主機多達數百個,每個虛擬主機都有單獨的日誌文件,系統可能會出現可用文件句柄不足的問題,它可能導致系統不穩定甚至導致系統崩潰。然而,只有當服務器上運行的虛擬主機數量非常龐大時,我們才有關註這個問題的必要。

4apache日誌輪詢技術實現

1)首先先下載安裝apache的日誌輪詢工具cronolog

[root@localhost ~]# yum -y install gcc gcc-c++

[root@localhost ~]# wget https://files.cnblogs.com/files/crazyzero/cronolog-1.6.2.tar.gz

[root@localhost ~]# tar zxvf cronolog-1.6.2.tar.gz

[root@localhost ~]# cd cronolog-1.6.2

[root@localhost ~]# mkdir -p /usr/local/cronolog

[root@localhost cronolog-1.6.2]# ./configure --prefix=/usr/local/cronolog

[root@localhost cronolog-1.6.2]# make && make install

2cronolog日誌輪詢配置說明

如果沒有虛擬主機,配置日誌輪詢需要修改Apache的主配置文件httpd.conf

如果配置了虛擬主機,需要修改配置文件httpd-vhosts.conf

按天輪詢(生產環境常見用法,推薦)

CustomLog "|/usr/local/cronolog/sbin/cronolog logs/access_www_%Y%m%d.log" combined

ErrorLog "|/usr/local/cronolog/sbin/cronolog logs/error_www_%Y%m%d.log"

(提示:cronolog輪詢日誌的正確寫法,被輪詢的日誌路徑要寫全路徑 (按天記錄日誌,日誌不會自動覆蓋))

按小時輪詢(生產環境常見的用法)

CustomLog "|/usr/local/cronolog/sbin/cronolog logs/access_www_%Y%m%d%H.log" combined

ErrorLog "|/usr/local/cronolog/sbin/cronolog logs/error_www_%Y%m%d%H.log"

(提示:如果需要及時的詳細分析apache的日誌,此配置可能比較適用)

按分鐘輪詢

CustomLog "|/usr/local/cronolog/sbin/cronolog logs/access_www_%Y%m%d%H%M.log" combined

ErrorLog "|/usr/local/cronolog/sbin/cronolog logs/error_www_%Y%m%d%H%M.log"

按周輪詢(生產環境比較常用的方法)

CustomLog "|/usr/local/cronolog/sbin/cronolog logs/access_www_%w.log" combined

ErrorLog "|/usr/local/cronolog/sbin/cronolog logs/error_www_%w.log"

虛擬主機配置輪詢方式

<VirtualHost *:80>

ServerAdmin [email protected]

DocumentRoot "/var/html/blog"

ServerName www.blog.com

ErrorLog "|/usr/local/cronolog/sbin/cronolog logs/error_www_%Y%m%d.log"

CustomLog "|/usr/local/cronolog/sbin/cronolog logs/access_www_%Y%m%d.log" combined

</VirtualHost>


Apache日誌輪詢配置詳解