調整ATS日誌處理機制及相關腳本

    在ATS的嘗試使用中,日誌處理是很重要的一環,我在研究這個時候花了不少精力,首先我們測試用的ATS是5.3.2版本,默認打印的是二進制日誌squid.blog,一天一切割,當然也可以變爲文本日誌,不過ATS自帶的很牛逼的分析traffic_logstats就用不了了,怎麼辦呢?苦思冥想,最後想了個好辦法,打兩套日誌,文本日誌存檔,供我們看,二進制日誌一天一刪除,哈哈,問題圓滿解決。爲了迎合線上的訪問量,日誌設置爲了5分鐘一切割,切割後改名歸檔,同時又爲了縮小存儲空間,定義凌晨3點(訪問量小)開始打包壓縮,再做腳本時發現遇到跨年時會出故障,又再次做了多次優化,目前運行的還是比較健壯的,分享出來,一起研究學習。

    ATS的日誌配置不多說了,以前有介紹,下面是我寫的一個處理腳本:

#!/bin/sh
#writer:gaolixu
BACKUP_PATH="/var/log/ats"
LOG_PATH="/opt/ats/var/log/trafficserver"
yestday=`date -d yesterday +%d`
yestmon=`date -d yesterday +%m`
yestyear=`date -d yesterday +%Y`
testdir(){
BACKUP_DIR=$BACKUP_PATH/$1/$2/$3
if [ ! -d "$BACKUP_DIR" ]
then
        mkdir -p $BACKUP_DIR
        if [ "$?" != "0" ]
        then
          echo "dir error"
                exit
        fi
fi
}
yestzip(){
gzip $BACKUP_PATH/$yestyear/$yestmon/$yestday/*
}
cd $LOG_PATH
ls *.log*old  > /tmp/atslog.tmp
for i in `cat /tmp/atslog.tmp` 
do
  i_time=`echo $i |awk -F'[.|-]' '{print $(NF-2)$(NF-1)}'`
  i_bj=`echo $i |awk -F'[.|-]' '{print $1}'`
  i_year=`echo ${i_time:0:4}`
  i_mon=`echo ${i_time:4:2}`
  i_day=`echo ${i_time:6:2}`
  i_hour=`echo ${i_time:8:2}`
  i_min=`echo ${i_time:11:2}`
  testdir $i_year $i_mon $i_day
  mv $LOG_PATH/$i $BACKUP_DIR/${i_year}-${i_mon}-${i_day}_${i_hour}_${i_min}_${i_bj}.log
  if [ "$i_hour" = "03" -a "$i_min" = "00" ];then
     yestzip
     rm -rf /opt/ats/var/log/trafficserver/squid.blog*
  fi  
done &>/dev/null


本文出自 “奔跑的linux” 博客,請務必保留此出處http://benpaozhe.blog.51cto.com/10239098/1746637

發佈了28 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章