小小菜鳥腳本,菜鳥思惟,見諒!!!
linux
1、首先是日誌切割
nginx
#! /bin/bushshell
#######################################################################################服務器
#方法封裝,切割日誌oop
#author:譚家俊 date:2015-08-20 funtion:linux按天分割nginx訪問日誌,而且保3天內的。學習
########################################################################################spa
nginx_log="/usr/local/nginx/logs/access.log" #nginx訪問日誌目錄調試
new_log_path="/usr/local/nginx/logs" #切割後的目錄日誌
today=`date +%Y-%m-%d` #今天的時間日期 io
function sortTheLog(){
rm -rf ${new_log_path}/${today} #刪除一下今天的日誌文件目錄,避免以前手動有產生同樣名字的文件名字
mkdir ${new_log_path}/${today} #建立記錄今天的日誌目錄/usr/local/nginx/logs/2015-08-20(今天是2015-08-20的話)
echo ${new_log_path} #調試信息的輸出
cp -rf ${nginx_log} ${new_log_path}/${today} #將今天的nginx訪問日誌access.log複製到新建的日誌目錄下
echo "" |cat > ${nginx_log} #清空nginx的日誌文件access.log
#這裏是寫一個for循環玩玩而已,打印前3天的日期
for loop in 1 2 3
do
today_n=`date -d "${loop} days ago" +%Y-%m-%d`
echo ${today_n}
done
#for end
//由於是要保留3天的日誌,因此這裏刪除前4天的日誌
days_ago_4=`date -d "4 days ago" +%Y-%m-%d` #前4天的日期
del_path="${new_log_path}/${days_ago_4}" #刪除的路徑
#echo "$del_path"
# read ${new_log_path}/days_ago_4
if [ -d "$del_path" ] #路徑若是存在,則刪除
then
echo ""
rm -rf ${del_path}
else
echo ""
fi
}
sortTheLog 調用方法
2、日誌檢查
#! /bin/bush
##################
#方法封裝
#排查方法 入口:#param1:錯誤代碼前綴(int) #param:錯誤代碼後綴(int) 返回:無
function check(){
flag=0 #while循環入口
end=$2 #輸入參數2,循環結束
start=$1 #輸入參數1,循環開始
while [ $flag -le $end ] #若是start>end,結束循環
do
s=$[$start+${flag}]
state="HTTP/1.1\" ${s}" #遍歷服務器每種錯誤狀態碼,如500,501,502
#echo ${s}
#echo ${state}
#echo `grep "HTTP/1.1\" 404" ${new_log_path}/${today}/access.log | wc -l`
#echo `grep "${state}" ${new_log_path}/${today}/access.log | wc -l` #根據錯誤代碼統計日誌中錯誤行數
error_num=`grep "${state}" ${new_log_path}/${today}/access.log | wc -l` #匹配今天的日誌有沒這種狀態碼的記錄行,有就統計錯誤數量記錄
if [ $error_num -gt 0 ] #大於0,有錯
then
echo "${state} error..."
#echo "服務器有錯誤啦!" | mail -s "發現服務器訪問日誌錯誤代碼" 15986943045@163.com
mail -s "發現服務器訪問日誌錯誤代碼" 15986943045@163.com < ${new_log_path}/${today}/access.log #郵件通知,把錯誤日誌以郵件發送
fi
flag=$[$flag+1]
done
}
#調用排查方法,排查4xx(請求錯誤)
check 400 14
#調用排查方法,5xx(服務器錯誤)
check 500 5
將以上的內容保存成shell腳本,加入定時器便可天天按時自我分割和排查...也算是本身學習的小小例子吧!!!
注意:在作發送郵件的時候,郵箱儘可能不要用qq郵箱,會被攔截收不到的。我用的是163郵箱,並且進行了白名單設置。因此接收郵件挺快。