指定時間段增量統計nginx日志不同接口的訪問量:
#!/bin/bash
#此腳本用於統計nginx日志當前時間15分鍾之內不同接口(URL)的訪問量統計
LOG=/usr/local/nginx/logs/interface.access.log
TMP=/tmp/url.tmp
URLSTATS=/var/log/interface_urlstats.log
RECEIVERS="test1@test.com test2@test.com"
#刪除臨時統計文件
[ -f $TMP ] && rm -fr $TMP
for i in `seq 15`
do
d=`date +%d/%h/%Y:%H:%M -d "$i minutes ago"`
#將每個時間段的URL進行統計並追加到臨時文件
awk -v b="$d" '{if ($4 ~ b)a[$7]++}END{for(i in a)printf("%-42s %-d\n", i,a[i])}' $LOG >> $TMP
done
#將匯總到臨時文件的URL統計進行匯總
if [ -s $TMP ];then
awk '{a[$1]+=$2;}END{for(i in a)printf("%-42s %-d\n", i,a[i])}' $TMP | sort -nr -k2 > $URLSTATS
mail -s "$(date +%F-%H:%M) 15分鍾的URL訪問量統計" "$RECEIVERS" <$URLSTATS
else
echo "需要統計的時間段日志文件沒有被成功處理"