經過對Nginx訪問日誌進行分析便可。nginx
#!/bin/bash function define() { ori_log_path="/var/log/nginx/abc.access.log" tmp_log_path="/var/log/nginx/5min_abc.access.log" date_stamp=`date -d "-5min" +%Y:%H:%M:%S` day_stamp=`date +%d` } function gather() { awk -F '[/ "\[]' -vnstamp="$date_stamp" -vdstamp="$day_stamp" '$7>=nstamp && $5==dstamp' ${ori_log_path} > ${tmp_log_path} log_num=`cat ${tmp_log_path} | wc -l` request_time=`awk '{print $(NF-1)}' ${tmp_log_path} | awk '{sum+=$1}END{print sum}'` ave_request_time=`echo | awk "{print ${request_time}/${log_num}}" ` rm -f /var/log/nginx/5min_abc.access.log } function output() { echo "abc aver request time is ${ave_request_time}" echo "abc request total is ${log_num}" } function main() { define gather output } main
腳本很簡單,今天須要用,就寫出來記錄在這裏了。就是鎖定最近5分鐘的訪問日誌,經過整理其內容,獲取到日誌條目數和相應時間的總數,計算便可。
bash
我這裏的日誌格式,倒數第二列是相應時間。
ide