本文介紹了使用shell腳本對(duì)Nginx日志進(jìn)行切分的示例代碼,分享給大家,具體如下:
1.日志格式
默認(rèn)的日志格式: main
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
如默認(rèn)的main日志格式,記錄這么幾項(xiàng)
遠(yuǎn)程IP- 遠(yuǎn)程用戶(hù)/用戶(hù)時(shí)間 請(qǐng)求方法(如GET/POST) 請(qǐng)求體body長(zhǎng)度 referer來(lái)源信息
http-user-agent用戶(hù)代理/蜘蛛 ,被轉(zhuǎn)發(fā)的請(qǐng)求的原始IP
http_x_forwarded_for:在經(jīng)過(guò)代理時(shí),代理把你的本來(lái)IP加在此頭信息中,傳輸你的原始IP
2.實(shí)現(xiàn)思路
shell+定時(shí)任務(wù)+nginx信號(hào)管理,完成日志按日期存儲(chǔ)
#!/bin/bash
base_path='/usr/local/nginx/logs'
log_path=$(date -d yesterday +"%Y%m")
day=$(date -d yesterday +"%d")
mkdir -p $base_path/$log_path
mv $base_path/access.log $base_path/$log_path/access_$day.log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
3.定時(shí)任務(wù)
Crontab 編輯定時(shí)任務(wù)
01 00 * * * /xxx/path/b.sh 每天0時(shí)1分(建議在02-04點(diǎn)之間,系統(tǒng)負(fù)載小)、
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- shell腳本之nginx自動(dòng)化腳本
- shell腳本定時(shí)統(tǒng)計(jì)Nginx下access.log的PV并發(fā)送給API保存到數(shù)據(jù)庫(kù)
- Shell腳本批量清除Nginx緩存
- nginx日志切割shell腳本
- nginx常用命令放入shell腳本詳解