超簡單的自動分析web日誌方法

    其實思路很簡單,首先將應用服務器上的web日誌上傳到日誌分析服務器上,再通過日誌服務器上的日誌分析系統對這些日誌進行分析處理,我用的日誌分析系統是AWStats+JAWStats,最後在應用服務上和日誌服務器上建立簡單的批處理腳本,通過系統提供的任務計劃命令建立計劃任務,讓這些腳本在指定的時間自動運行。

   1、用NcFTP client提供的ncftpput命令將應用服務器上的日誌文件上傳到日誌分析服務器上,處理腳本uploadLog.bat:

  1. echo 腳本執行的時間:%date%-%time% >>update-log.log 
  2. echo 初始化必要參數 
  3. rem 用於生產存儲要上傳日誌的的臨時文件夾 
  4. set fileName=%date:~0,4%%date:~5,2%%date:~8,2% 
  5. rem 要上傳日誌的目錄 
  6. set logDir=E:\mylog\W3SVC704085285 
  7. set logDate=0 
  8. rem 壓縮文件所在的目錄 
  9. set zipDir=E:\Program Files\7-Zip 
  10. rem 登錄遠程FTP所需要的設置的參數 
  11. set user=×× 
  12. set pass=×× 
  13. set ftpServerAddress=192.168.×.× 
  14. set rCD=web-log\server1 
  15. set updateFile=%logDir%\%fileName%.zip 
  16. rem 建立臨時文件文件 
  17. if not exist mkdir "%logDir%/%fileName%" 
  18. echo 存放要上傳日誌的臨時文件夾%fileName%已建成>>update-log.log 
  19. rem 將要上傳的日誌文件移到臨時文件夾裏 
  20. forfiles /p %logDir% /m *.log /d -%logDate% /c "cmd /c move @file %logDir%\%fileName%" >>update-log.log 
  21. echo 要上傳的日誌文件已經成功移到臨時文件夾:%fileName%>>update-log.log 
  22. rem 將臨時文件要上傳的日誌文件打包 
  23.  
  24. echo 現在正在將要上傳的日誌打包,請稍等>>update-log.log 
  25. "%zipDir%\7z.exe" a "%logDir%\%fileName%.zip" "%logDir%\%fileName%\*" 
  26. echo 打包完成>>update-log.log 
  27. echo ********************************************************>>update-log.log 
  28. rem 將日誌上傳到遠程服務器 
  29. echo 開始上傳日誌到遠程服務器>>update-log.log 
  30. ncftpput -u %user% -p %pass% %ftpServerAddress% %rCD% %updateFile% 
  31. echo 日誌文件已經成功上傳到遠程服務器>>update-log.log 
  32. echo ************************************************************ 
  33. rem 清楚臨時文件 
  34. echo 正在清除臨時文件...>>update-log.log 
  35. rd /q /s "%logdir%\%fileName%" 
  36. del /q /f "%logdir%\%fileName%.zip" 
  37. echo 臨時文件清理完成 >>update-log.log 
  38. echo 此次上傳日誌完成>>uploadLog.log.log 
  39. echo ************************************************************ 
  40. end 

   2、建立計劃任務,讓uploadLog.bat腳本在每週的週三和週日的23自動執行,在命令行輸入命令:at 23:00 /every:W,Su E:/scripts/uploadLog.bat,也可以用windows提供的圖形界面完成這個設置,這裏就不說明了。

  3、在日誌服務器上建立批處理腳本analyseLog.bat,假設我有應用服務器三臺,分別是server1、server2和server3:

  1. rem 自動分析日誌 
  2. echo 初始化參數 
  3. set domain=**.com 
  4. set zipDir=C:/Program Files/7-Zip 
  5. set awstatsBin=E:/AWStats/wwwroot/cgi-bin 
  6. echo run at %date%-%time%>> analyse.log 
  7.  
  8. for %%j in (sever1 server2 server3) do ( 
  9.    set serverName= %%j 
  10.    echo 正在處理Q:\%%j.%domain%中的日誌。。。 
  11.    for /f %%a in ('dir Q:\%%j.%domain%\*.zip /b') do ( 
  12.        set zipFile=%%~nxa  
  13.        echo 找到文件:!zipFile! 
  14.        "%zipDir%/7z.exe" e Q:\%%j\!zipFile! -oQ:\%%j -y >>analyse.log  
  15.        echo decompression finished... 
  16.        perl %awstatsBin%/awstats.pl -config=%%j.%domain%.com -update -configdir=%awstatsBin%/ -DatabaseBreak=month >>analyse.log 
  17.        echo month method analyise finished 
  18.        perl %awstatsBin%/awstats.pl -config=%%j.%domain%.com -update -configdir=%awstatsBin%/ -DatabaseBreak=day >>analyse.log 
  19.        echo day method analyise finished 
  20.        rem 規定處理過的日誌文件 
  21.        move Q:\%%j.%domain%.com\!zipFile! Q:\%%j.%domain%.com\2012 >>analyse.log 
  22.        move Q:\%%j.%domain%.com\*.log Q:\%%j.%domain%.com\2012 >>analyse.log 
  23.        echo move files finished 
  24. echo !serverName!.%domain%.com-finish@%time%>>analyse.log 
  25. echo  analyse finished.. 
  26. echo *******************************************************>>analyse.log 
  27.  

    4、同樣建立計劃任務,讓analyseLog.bat腳本在每週的週四和週一的23自動執行,在命令行輸入命令:at 23:00 /every:M,Th E:/scripts/analyseLog.bat。

    最後將批處理腳本保護起來,可以將批處理文件加密,或編譯,我是用windows提供的加密方法將腳本加密,簡單方便。到這裏自動化分析web日誌的方法就算完成了。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章