Apache日誌解讀

來源:互聯網
上載者:User

標籤:apache日誌

Apache日誌解讀

想要知道什麼人在什麼時候瀏覽了網站的哪些內容嗎?查看Apache的訪問日誌就可以知道。訪問日誌是Apache的標準日誌,本文詳細解釋了訪問日誌的內容以及相關選項的配置。 

一、訪問日誌的格式 
Apache內建了記錄伺服器活動的功能,這就是它的日誌功能。這個《Apache日誌》系列文章介紹的就是Apache的訪問日誌、錯誤記錄檔,以及如何分析日誌資料,如何定製Apache日誌,如何從日誌資料產生統計報表等內容。 

 如果Apache的安裝方式是預設安裝,伺服器一運行就會有兩個記錄檔產生。這兩個檔案是access_log(在Windows上是access.log)和error_log(在Windows上是error.log)。採用預設安裝方式時,這些檔案可以在/usr/local/apache/logs下找到;對於Windows系統,這些記錄檔將儲存在Apache安裝目錄的logs子目錄。不同的包管理器會把記錄檔放到各種不同的位置,所以你可能需要找找其他的地方,或者通過設定檔查看這些記錄檔配置到了什麼地方。

正如其名字所示,訪問日誌access_log記錄了所有對Web伺服器的訪問活動。下面是訪問日誌中一個典型的記錄: 

216.35.116.91 - - [19/Aug/2000:14:47:37 -0400]"GET / HTTP/1.0" 200 654

這行內容由7項構成,上面的例子中有兩項空白,但整行內容仍舊分成了7項。 
第一項資訊是遠程主機的地址,即它表明訪問網站的究竟是誰。在上面的例子中,訪問網站的主機是216.35.116.91。隨便說一句,這個地址屬於一台名為si3001.inktomi.com的機器(要找出這個資訊,可以使用nslookup工具尋找DNS),inktomi.com是一家製作Web搜尋軟體的公司。可以看出,僅僅從日誌記錄的第一項出發,我們就可以得到有關訪問者的不少資訊。 
預設情況下,第一項資訊只是遠程主機的IP地址,但我們可以要求Apache查出所有的主機名稱字,並在記錄檔中用主機名稱字來替代IP地址。然而,這種做法通常不值得推薦,因為它將極大地影響伺服器記錄日誌的速度,從而也就減低了整個網站的效率。另外,有許多工具能夠將記錄檔中的IP地址轉換成主機名稱字,因此要求Apache記錄主機名稱字替代IP地址是得不償失的。 然而,如果確實有必要讓Apache找出遠程主機的名字,那麼我們可以使用如下指令:HostNameLookups on (這個選項在/usr/local/apache2/conf/extra/httpd-default.conf中),如果HostNameLookups設定成double而不是on,日誌記錄程式將對它找到的主機名稱字進行反向尋找,驗證該主機名稱字確實指向了原來出現的IP地址。預設情況下HostNameLookups設定為off。 

上例日誌記錄中的第二項是空白,用一個“-”預留位置替代。實際上絕大多數時候這一項都是如此。這個位置用於記錄瀏覽者的標識,這不只是瀏覽者的登入名稱字,而是瀏覽者的email地址或者其他唯一識別碼。這個資訊由identd返回,或者直接由瀏覽器返回。很早的時候,那時Netscape 0.9還佔據著統治地位,這個位置往往記錄著瀏覽者的email地址。然而,由於有人用它來收集郵件地址和發送垃圾郵件,所以它未能保留多久,很久之前市場上幾乎所有的瀏覽器就取消了這項功能。因此,到了今天,我們在日誌記錄的第二項看到email地址的機會已經微乎其微了。 
   日誌記錄的第三項也是空白。這個位置用於記錄瀏覽者進行身分識別驗證時提供的名字。當然,如果網站的某些內容要求使用者進行身分識別驗證,那麼這項資訊是不會空白的。但是,對於大多數網站來說,記錄檔的大多數記錄中這一項仍舊是空白的。 
   日誌記錄的第四項是請求的時間。這個資訊用方括弧包圍,而且採用所謂的“公用日誌格式”或“標準英文格式”。因此,上例記錄資料表示請求的時間是2000年8月19日星期三14:47:37。時間資訊最後的“-0400”表示伺服器所處時區位於UTC之前的4小時。 
   日誌記錄的第五項資訊或許是整個日誌記錄中最有用的資訊,它告訴我們伺服器收到的是一個什麼樣的請求。該項資訊的典型格式是“METHOD RESOURCE PROTOCOL”,即“方法資源協議”。 
在上例中,METHOD是GET,其他經常可能出現的METHOD還有POST和HEAD。此外還有不少可能出現的合法METHOD,但主要就是這三種。 RESOURCE是指瀏覽者向伺服器請求的文檔,或URL。在這個例子中,瀏覽者請求的是“/”,即網站的首頁或根。大多數情況下,“/”指向DocumentRoot目錄的index.html文檔,但根據伺服器配置的不同它也可能指向其他檔案。 PROTOCOL通常是HTTP,後面再加上版本號碼。版本號碼或者是1.0,或者是1.1,但出現1.0的時候比較多。我們知道,HTTP協議是Web得以工作的基礎,HTTP/1.0是HTTP協議的早期版本,而1.1是最近的版本。當前大多數Web客戶程式仍使用1.0版本的HTTP協議。 
   日誌記錄的第六項資訊是狀態碼。它告訴我們請求是否成功,或者遇到了什麼樣的錯誤。大多數時候,這項值是200,它表示伺服器已經成功地響應瀏覽器的請求,一切正常。此處不準備給出狀態碼的完整清單以及解釋它們的含義,請參考相關資料瞭解這方面的資訊。但一般地說,以2開頭的狀態碼表示成功,以3開頭的狀態碼表示由於各種不同的原因使用者請求被重新導向到了其他位置,以4開頭的狀態碼表示用戶端存在某種錯誤,以5開頭的狀態碼表示伺服器遇到了某個錯誤。 
   日誌記錄的第七項表示發送給用戶端的總位元組數。它告訴我們傳輸是否被打斷(即,該數值是否和檔案的大小相同)。把日誌記錄中的這些值加起來就可以得知伺服器在一天、一周或者一月內發送了多少資料。

本文出自 “吳騰飛” 部落格,請務必保留此出處http://wutengfei.blog.51cto.com/10942117/1906920

Apache日誌解讀

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.