語文基礎日誌

關於默認的Apache日誌文件

本文已影響 2.43W人 

關於默認的Apache日誌文件

關於默認的Apache日誌文件

Apache提供很多檢測和日誌工具來追蹤服務器的正確運行。默認的Apache配置提供兩個日誌文件,放置在安裝目錄下的日誌目錄裏面。access_log這個文件(在windows下對應文件)包含了服務器已經處理過的請求的信息,比如說請求的URL,客戶端的IP地址,請求是否被成功完成等。error_log 這個文件(在windows下對應文件)包含了與錯誤情況相關的信息,以及服務器生命週期中不同的大事件。

創建日誌格式

LogFormat "%h %l %u %t "%r" %>s %b" common

LogFormat "%h %l %u %t "%r" %>s %b"

"%{Referer}i" "%{User-agent}i"" combined

LogFormat指令允許你告訴Apache你想要記錄請求的哪些方面。而你仍需附加的指令來告訴Apache在哪裏記錄那些信息,這在下一章中將會介紹。下面的例子顯示了兩種最受歡迎的格式的配置:普通日誌格式和整合日誌格式。當Apache收到一個請求,他將會用相應的請求屬性來替代以%爲前綴的每一個域。如果您正在使用普通日誌格式,您的日誌文件裏的每一項輸入看起來都將是這樣的:

- someuser [12/Jun/2005:08:33:34

+0500] "GET /example.png HTTP/1.0" 200 1234

如果您正在使用整合日誌格式,您的日誌文件裏的每一項輸入看起來則都將是這樣的:

- someuser [12/Jun/2005:08:33:34

+0500] "GET /example.png HTTP/1.0" 200 1234

/ "Mozilla/5.0

(Windows; U; Windows NT 5.1; en-US; rv:1.7.7)"儘管有附件提供日誌格式的詳盡索引,下表描述了一些最爲重要的域:

# %h: 客戶端(例如,瀏覽器)向服務器發出連接請求時自己的當時的IP地址或域名(需開啓HostNameLookups)。

# %u: 使用HTTP方式認證用戶時,記錄下的用戶的編號。

# %t: 服務器接受到連接請求的時間。

# %r: 客戶端發出的原始連接請求中的文本信息,包含所使用的HTTP方法。

# %>s: 服務器應答瀏覽器後的返回狀態代碼,200表示請求成功。.

# %b: 服務器應答瀏覽器發出的單個請求的回傳對象的內容大小(字節爲單位),不統計數據包頭部字節。

整合日誌格式在普通日誌格式的基礎上擴展出了兩個附加的域。定義爲:

# %{Referer}i: 連接請求數據包包頭,包含指向當前頁面的文檔關聯信息。

# %{User-agent}i: 用戶代理連接請求數據包包頭,包含客戶瀏覽器的信息。

創建一個自定義日誌文件

CustomLog logs/access_log common

TransferLog logs/您可能會想創建Apache自帶以外的新的日誌文件。下面的例子將運用CustomLog來創建一個新的日誌文件,並保存由一個之前定義好的日誌格式,即前一章提到的common,所定義的信息。您還可以用格式本身的定義來替換暱稱。一個附加的,更爲簡單的指令是Transferlog,它只接受最後一個LogFormat指令提供的定義。

延伸閱讀:

重導向日誌到一個外部的程序

TransferLog "|bin/rotatelogs /var/logs/apachelog

86400"你也可以用CustomLog或TransferLog將日誌的輸出重導向(輸出)到一個外部的程序,而不是一個文件。要做到這一點,首先您需要以輸出字符"|"開頭,跟着是接收日誌標準輸入信息的程序之路經。本例運用Apache自帶的rotatelogs程序,在稍後的章節中會對其有所介紹。

當有一個外部程序被使用,它將作爲啓動mon env=!image

SetEnvIf Remote_Addr specialmachine

CustomLog logs/special_access_log common env=specialmachine你可以根據可變的環境決定是否記錄一個請求。這種可變可以根據許多參數,比如客戶端的IP地址或請求中某個頭部的存在,事先設置好。正如本例中所顯示,CustomLog指令可以將可變的環境作爲第三個參數來接受。如果存在可變的環境,它就將被記錄,否則就不會。如果這個可變的環境被一個"!"開頭否定,那麼不存在可變的.環境將會被記錄。本例將告訴您如何避免在日誌裏以GIF和JPEG的格式記錄圖像,及如何從一個特定的IP地址記錄請求道一個單獨的日誌文件。另一個例子請參加下一節。

誰在連接你的網站

SetEnvIfNoCase Refererinternalreferral

LogFormat "%{Referer}i -> %U" referer

CustomLog logs/ referer env=!internalreferral可以通過記錄Referer的值來檢測哪些人連接了你的網站,Referer變量位於用戶發送連接請求數據包的頭部,數據包頭中還包含了用戶訪問的目的網站的URL地址。通過這種方法可以記錄下絕大部分網站訪問者。也可以把來自特定網站()地址段的來訪者排除出日誌記錄文件。

利用模塊參數(mod_status)來監視Apache服務器

SetHandler server-status

Order Deny,Allow

Deny from all

Allow from 192.168.0

Apache服務器中可以使用的功能模塊很多,有服務器內置的也有外掛的,這些模塊工作的狀態和性能就是通過mod_status參數來記錄的,記錄的內容有“哪些模塊參與了網站應答服務、哪些模塊處於空閒狀態、服務器的開啓/關閉時間。正在處理的連接請求數和訪問者數量(需要指定ExtendedStatus記號)-該模塊記錄對高負荷網站服務器性能有很大影響”。例子中記錄的模塊狀態統計結果可以用瀏覽器訪問/server-status頁面來查看。

通過SNMP協議來監視Apache服務器

SNMP是簡單網管協議,支持SNMP的服務器或網絡設備可以被OpenView、Tivoli等網管軟件統一管理,目前有很多開源的SNMP模塊可以加裝到Apache網站服務器之上,對於Apache 1.3版來講,mod_snmp模塊可以支持第1版和2版的SNMP協議;對於Apache 2版來講,mod_apache_snmp模塊可以編譯成Apache的DSO直接支持第1版、第2版和第3版的SNMP協議。有了SNMP模塊,外部網管軟件就可以對Apache網站服務器的各種實時性能參數進行查看了,這些參數包含“服務器連續在線時間、平均負載、一段時間內的錯誤數、提供網站服務的字節數和連接請求數”。SNMP模塊遇到突然激增的併發連接請求數時會向控制檯報警。管理SNMP資源的開源工具軟件有:“net-snmp,OpenNMS,Najios等”。

用開源工具分析日誌

有很多開源和商業版的工具軟件可以對產生的Apache日誌文件做分析和處理,通常的步驟是:

1.選取一個日誌文件。

2.分析日誌文件內容。

3.生成包含不同類別內容的統計信息網頁輸出。Webalizer(/software/去下載這些工具。

將連接請求日誌記錄到數據庫

Apache本身沒有將記錄轉發到數據庫的功能,必須要第三方腳本和模塊來支持。這裏列舉幾個:mod_log_sql模塊允許將連接請求直接記入MySQL數據庫,然後用Apache LogView SQL工具來參看庫中的記錄;pglogd工具可以記錄日誌到PostgreSQL數據庫中。

將日誌文件轉存和歸檔

CustomLog "|bin/rotatelogs /var/logs/apachelog

86400" common如果網站流量較高,日誌文件很容易就會變得很大,需要進行轉存和歸檔處理。轉存日誌文件時需要壓縮和保存,在線進行這項工作可以使用Apache提供的rotatelogs來完成,類似工具還可以在網頁可以找到一些其他的日誌工具。比如vlogger工具就可以替代cronologs來對單個服務器上的虛擬網站日誌進行分別處理,該工具在

CustomLog logs/_log combined

ErrorLog logs/_log

.......

使用CustomLog標誌段在Apache配置文件的區塊內實現虛擬網站日誌文件的獨立處理。

LogFormat "%v %h %l %u %t "%r" %>s %b" common_virtualhost

CustomLog logs/access_log common_virtualhost在Apache全局配置中配置方法,其中的v%負責把提供服務的虛擬網站記錄下來,對於配置了很多虛擬網站的單臺服務器來說,這種配置不錯。如果不想記錄虛擬服務器的日誌只需要在配置文件中加入"CustomLog /dev/null"就可以了。

日誌文件中常見的條目

缺少文件,該文件可在瀏覽器的標題欄顯示網站的個性圖案;

缺少文件,利於站點複製工具和搜索引擎使用;

覆寫文件,網站服務器不正常退出後遺留的PID記錄文件;

陌生的長記錄條,

"SEARCH /x90x02xb1x02xb1x02xb1x02 ..."

"GET /scripts/..%252f../winnt/system32/?/

c+dir HTTP/1.0..."

"GET / NNNNNNNNNNNNNNNNNN ..."類似的記錄條表示訪問者請求了網站上根本沒有的,或dir等文件。

日誌文件中的一些條目經常反映了那些自動探測網站服務器漏洞的動作,多數來源於針對IIS網站服務器的蠕蟲和惡意程序。有時候也會發現一些針對Apache的漏洞,所以爲了保證Apache的正常運行,用戶應保持經常更新Apache軟件。

猜你喜歡

熱點閱讀

最新文章

推薦閱讀