nginx 로그 가 데이터베이스 에 삽입 되 어 전단 분석 처 리 를 진행 합 니 다.

2280 단어 셸 스 크 립 트
1 분 전 nginx 로 그 를 데이터베이스 에 가 져 옵 니 다.
#!/bin/bash
#        nginx   ,     
user=admin
password=12345
nginx_dir=/nginx/logs/access.log
date_time=`date '+%d/%b/%Y:%k:%M' -d '-1 min'`
date_now=`date '+%Y-%m-%d'`

grep "$date_time" $nginx_dir | while read line
do
 #       ,          
        eval $(echo "$line" |awk -F'|' '{printf("remote_addr=%s;status=%s;body_bytes_sent=%s;bytes_sent=%s;http_referer=%s;request_time=%s;upstream_addr=%s;upstream_respone_time=%s;upstream_status=%s",$1,$4,$5,$6,$7,$9,$10,$11,$12);}')
        locat_time=`echo $line|awk -F'[|:" "]' '{print $3":"$4":"$5}'`
        #request_method=`echo "$line"|awk -F'|' '{print $3}' |awk -F' ' '{print $1}'`
        request_method=`echo $line|awk -F[\|" "] '{print $4}'`
        #request=`echo "$line"|awk -F'|' '{print $3}' |awk -F' ' '{print $2}'`
        request=`echo $line|awk -F[\|" "] '{print $5}'`
        #http_user_agent=`echo "$line"|awk -F'|' '{print $8}' |awk -F[\(\)]+ '{print $2}'`
        http_user_agent=`echo $line|awk -F[\|\(\)] '{print $9}'`

        /user/bin/mysql -u$user -p$password -e "INSERT INTO nginx_table (remote_addr,date_now,locat_time,request_method,request,status,body_bytes_sent,bytes_sent,http_referer,http_user_agent,request_time,upstream_addr,upstream_respone_time,upstream_status) VALUES ('$remote_addr','$date_now','$locat_time','$request_method','$request','$status','$body_bytes_sent','$bytes_sent','$http_referer','$http_user_agent','$request_time','$upstream_addr','$upstream_respone_time','$upstream_status');"

done
echo "fininsh"
nginx_table 표 는 데이터베이스 에 새로 만 들 고 위 에 데이터 베 이 스 를 삽입 하 는 필드 에 대응 합 니 다.
그리고 이 스 크 립 트 를 1 분 에 한 번 씩 실행 하 는 crontab 를 추가 합 니 다.1 분 동안 nginx 로 그 를 데이터베이스 에 삽입 하여 전단 분석 처 리 를 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기