|
網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機整體,實現(xiàn)資源的全面共享和有機協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數(shù)據(jù)資源、信息資源、知識資源、專家資源、大型數(shù)據(jù)庫、網(wǎng)絡(luò)、傳感器等。 當前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認為是互聯(lián)網(wǎng)發(fā)展的第三階段。 {2} 日志的輪循機制:讓我們關(guān)心一下數(shù)據(jù)源問題:webalizer其實是一個按月統(tǒng)計的工具,支持增量統(tǒng)計:因此對于大型的服務(wù),我可以按天將apache的日志合并后送給webalizer統(tǒng)計。WEB日志是如何按天(比如每天子夜00:00:00)截斷呢? 如果你每天使用crontab:每天0點準時將日志備份成accesserials_log_yesterday mv /path/to/apache/log/accesserials_log /path/to/apache/log/accesserials_log_yesterday 的話:你還需要:馬上運行一下:apache restart 否則:apache會因為的日志文件句柄丟失不知道將日志記錄到哪里去了。這樣歸檔每天子夜重啟apache服務(wù)會受到影響。 比較簡便不影響服務(wù)的方法是:先復制,后清空 cp /path/to/apache/log/accesserials_log /path/to/apache/log/accesserials_log_yesterday echo >/path/to/apache/log/accesserials_log 嚴肅的分析員會這樣做發(fā)現(xiàn)一個問題: 但cp不可能嚴格保證嚴格的0點截斷。加入復制過程用了6秒,截斷的accesserials_log_yesterday日志中會出現(xiàn)復制過程到00:00:06期間的日志。對于單個日志統(tǒng)計這些每天多出來幾百行日志是沒有問題的。但對于多個日志在跨月的1天會有一個合并的排序問題: [31/Mar/2002:59:59:59 +0800] [31/Mar/2002:23:59:59 +0800] [01/Apr/2002:00:00:00 +0800] [01/Apr/2002:00:00:00 +0800] 要知道[01/Apr/2002:00:00:00 這個字段是不可以進行“跨天排序”的。因為日期中使用了dd/mm/yyyy,月份還是英文名,如果按照字母排序,很有可能是這樣的結(jié)果:排序?qū)е铝巳罩镜腻e誤 [01/Apr/2002:00:00:00 +0800] [01/Apr/2002:00:00:00 +0800] [01/Apr/2002:00:00:00 +0800] [01/Apr/2002:00:00:00 +0800] [01/Apr/2002:00:00:00 +0800] [01/Apr/2002:00:00:00 +0800] [01/Apr/2002:00:00:00 +0800] [31/Mar/2002:59:59:59 +0800] [31/Mar/2002:59:59:59 +0800] [31/Mar/2002:23:59:59 +0800] [31/Mar/2002:59:59:59 +0800] [31/Mar/2002:23:59:59 +0800] 這些跨天過程中的非正常數(shù)據(jù)對于webalizer等分析工具來說簡直就好像是吃了一個臭蟲一樣,運行的結(jié)果是:它可能會把前一個月所有的數(shù)據(jù)都丟失!因此這樣的數(shù)據(jù)會有很多風險出現(xiàn)在處理上月最后一天的數(shù)據(jù)的過程中。 問題的解決有幾個思路: 1 事后處理: 所以一個事后的處理的方法是:用grep命令在每月第1天將日志跨月的日志去掉,比如: grep -v "01/Apr" accesserials_log_04_01 > accesserials_log_new 修改SORT后的日志:所有跨天的數(shù)據(jù)去掉。也許對日志的事后處理是一個途徑,雖然sort命令中有對日期排序的特殊選項 -M(注意是:大寫M),可以讓指定字段按照英文月份排序而非字母順序,但對于apache日志來說,用SORT命令切分出月份字段很麻煩。(我嘗試過用 "/"做分割符,并且使用“月份” “年:時間”這兩個字段排序)。雖然用一些PERL的腳本肯定可以實現(xiàn),但最終我還是放棄了。這不符合系統(tǒng)管理員的設(shè)計原則:通用性。 并且你需要一直問自己:有沒有更簡單的方法呢?還有就是將日志格式改成用TIMESTAMP(象SQUID的日志就沒有這個問題,它的日志本身就是使用TIMESTAMP做時間時間戳的),但我無法保證所有的日志工具都能識別你在日期這個字段使用了特別的格式。 2 優(yōu)化數(shù)據(jù)源: 最好的辦法還是優(yōu)化數(shù)據(jù)源。將數(shù)據(jù)源保證按天輪循,同一天的日志中的數(shù)據(jù)都在同一天內(nèi)。這樣以后你無論使用什么工具(商業(yè)的,免費的)來分析日志,都不會因為日志復雜的預(yù)處理機制受到影響。 首先可能會想到的是控制截取日志的時間:比如嚴格從0點開始截取日志,但在子夜前1分鐘還是后一分鐘開始截取是沒有區(qū)別的,你仍然無法控制一個日志中有跨2天記錄的問題,而且你也無法預(yù)測日志歸檔過程使用的時間。 因此必須要好好考慮一下使用日志輪循工具的問題,這些日志輪循工具要符合: 1 不中斷WEB服務(wù):不能停apache=>移動日志=>重啟apache 2 保證同一天日志能夠按天輪循:每天一個日志00:00:00-23:59:59 3 不受apache重啟的影響:如果apache每次重啟都會生成一個新的日志是不符合要求的 4 安裝配置簡單 網(wǎng)絡(luò)的神奇作用吸引著越來越多的用戶加入其中,正因如此,網(wǎng)絡(luò)的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術(shù)都需要適時應(yīng)勢,對應(yīng)發(fā)展,這正是網(wǎng)絡(luò)迅速走向進步的催化劑。 |
溫馨提示:喜歡本站的話,請收藏一下本站!