人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統 > 網絡技術教程 > 詳細頁面

多服務器的日志合并統計(3)

多服務器的日志合并統計(3)

更新時間:2021-05-09 文章作者:未知 信息來源:網絡 閱讀次數:

網絡技術是從1990年代中期發展起來的新技術,它把互聯網上分散的資源融為有機整體,實現資源的全面共享和有機協作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數據資源、信息資源、知識資源、專家資源、大型數據庫、網絡、傳感器等。 當前的互聯網只限于信息共享,網絡則被認為是互聯網發展的第三階段。
首先考慮了apache/bin目錄下自帶的一個輪循工具:rotatelogs 這個工具基本是用來按時間或按大小控制日志的,無法控制何時截斷和如何按天歸檔。

  然后考慮logrotate后臺服務:logrotate是一個專門對各種系統日志(syslogd,mail)進行輪循的后臺服務,比如SYSTEM LOG,但其配置比較復雜,放棄,實際上它也是對相應服務進程發出一個-HUP重啟命令來實現日志的截斷歸檔的。

  在apache的FAQ中,推薦了經過近2年發展已經比較成熟的一個工具cronolog:安裝很簡單:


  configure=>make=> make install



  他的一個配置的例子會讓你了解它有多么適合日志按天輪循:對httpd.conf做一個很小的修改就能實現:


  TransferLog "|/usr/sbin/cronolog /web/logs/%Y/%m/%d/access.log"
  ErrorLog "|/usr/sbin/cronolog /web/logs/%Y/%m/%d/errors.log"



  然后:日志將寫入


  /web/logs/2002/12/31/access.log
  /web/logs/2002/12/31/errors.log



  午夜過后:日志將寫入


  /web/logs/2003/01/01/access.log
  /web/logs/2003/01/01/errors.log



  而2003 2003/01 和 2003/01/01 如果不存在的話,將自動創建

  所以,只要你不在0點調整系統時間之類的話,日志應該是完全按天存放的(00:00:00-23:59:59),后面日志分析中:[31/Mar/2002:15:44:59這個字段就和日期無關了,只和時間有關。

  測試:考慮到系統硬盤容量,決定按星期輪循日志

  apache配置中加入:


  #%w weekday
  TransferLog "|/usr/sbin/cronolog /path/to/apache/logs/%w/accesserials_log"



  重啟apache后,除了原來的CustomLog /path/to/apche/logs/accesserials_log繼續增長外,系統log目錄下新建立了 3/目錄(測試是在周3),過了一會兒,我忽然發現2個日志的增長速度居然不一樣!

  分別tail了2個日志才發現:

  我設置CustomLog使用的是combined格式,就是包含(擴展信息的),而TransferLog使用的是缺省日志格式,看了apache的手冊才知道,TransferLog是用配置文件中離它自己最近的一個格式作為日志格式的。我的httpd.conf里寫的是:


  LogFormat ..... combined
  LogFormat ... common
  ...
  CustomLog ... combined
  TransferLog ...



  所以TrasferLog日志用的是缺省格式,手冊里說要讓TRANSFER日志使用指定的格式需要:


  LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i""
  TransferLog "|/usr/local/sbin/cronolog /path/to/apache/logs/%w/accesserials_log"



  重啟,OK,日志格式一樣了。

  這樣的設置結果其實是同時在logs目錄下分別記錄2個日志accesserials_log和%w/accesserials_log,能不能只記錄%w/下的日志那?

  查apache手冊,更簡單的方法:直接讓CustomLog輸出到cronolog歸檔日志,并且還能指定格式。


  CustomLog "|/usr/local/sbin/cronolog
    /path/to/apache/logs/%w/accesserials_log" combined



  最后是一個日志同步的問題。

  任務:每天凌晨找到前1天的日志,另存一個文件準備發送到服務器上。

  比如我要保留前1周的日志:每天復制前1天的日志到指定目錄,等待日志服務器來抓取:


  /bin/cp /path/to/logs/`date -v-1d +%w`/accesserials_log
     /path/to/sync/logs/accesserials_yesterday



  在FREEBSD上使用以下命令


  date -v-1d +%w



  注釋:
  -v-1d: 前1天,而在LINUX上這個選項應該是date -d yesterday
  +%w: weekday,由于使用的都是標準時間函數庫,所有工具中的WEEKDAY定義都是一樣的 0-6 => 周日-周六

  注意:寫到CRONTAB里的時候"%"前面需要加一個""轉義:每天0點5分進行一次日志歸檔


  5 0 * * * /bin/cp /path/to/logs/`date -v-1d +%w`/accesserials_log
   /path/to/for_sync/logs/accesserials_yesterday



  首次開始cronolog日志統計是周3,一周以后日志又將輪循回3/accesserials_log

  但這次日志是追加到3/accesserials_log還是重新創建一個文件呢?>>accesserials_log or >accesserials_log?

  我測試的結果是日志將被追加:


  [01/Apr/2002:23:59:59 +0800]
  [01/Apr/2002:23:59:59 +0800]
  [08/Apr/2002:00:00:00 +0800]
  [08/Apr/2002:00:00:00 +0800]



  肯定是不希望每次日志還帶著上周的數據的并重復統計一次的(雖然對結果沒影響),而且這樣%w/下的日志不是也越來越多了嗎?

  解決方法1 把每天的cp改成mv

  解決方法2 每天復制完成后:刪除6天以前的accesserials_log日志


  find /path/to/apache/logs -name accesserials_log -mtime +6 -exec rm -f {};



  多保留幾天的日志還是有必要的:萬一日志分析服務器壞了一天呢?

總結:

  1 用 cronolog 干凈,安全地輪循日志

  2 用 sort -m 排序合并多個日志

參考資料:

  日志分析統計工具:
  http://directory.google.com/Top/Computers/Software/
    Internet/Site_Management/Log_Analysis/

  Apche的日志設置:
  http://httpd.apache.org/docs/mod/mod_log_config.html

  apache的日志輪循:
  http://httpd.apache.org/docs/misc/FAQ.html#rotate

  cronolog:http://www.cronolog.org


網絡的神奇作用吸引著越來越多的用戶加入其中,正因如此,網絡的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術都需要適時應勢,對應發展,這正是網絡迅速走向進步的催化劑。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 赣榆县| 长治市| 洛隆县| 保德县| 防城港市| 黎平县| 高青县| 宁河县| 绥滨县| 阿拉尔市| 吉木乃县| 泊头市| 财经| 安福县| 泽州县| 辽宁省| 灵寿县| 建瓯市| 孙吴县| 墨竹工卡县| 崇信县| 拜泉县| 绥化市| 东阳市| 仲巴县| 洛隆县| 平凉市| 和政县| 永兴县| 永安市| 江陵县| 梓潼县| 淳化县| 丰宁| 图木舒克市| 新余市| 曲周县| 新邵县| 通化县| 自贡市| 铁岭市|