Nginx日志统计

1)按每小时切割Nginx访问日志,并且将日志自动上传至FTP服务器;

#!/bin/bash

#auto mv nginx log shell

#by author xiaoming

S_LOG=/usr/local/nginx/logs/access.log

D_LOG=/data/backup/`date +%Y%m%d%H%M`

echo -e "\033[32mPlease wait start cutshell scripts...\033[0m"

sleep 2

if [ ! -d $D_LOG ];then

mkdir -p $D_LOG

fi

mv $S_LOG $D_LOG

kill -USR1 `cat/usr/local/nginx/logs/nginx.pid`

echo"-----------------------------------"

echo "The Nginx log Cutting Successfully"

if [ $? -eq 0 ];then

ftp -n << EOF

open x.x.x.x

useradmin admin

binary         #使用二进制

cd/home/admin  #进入ftp服务器目录

lcd$D_LOG      #进入本地目录

putaccess.log

close

bye

EOF

fi

if [ $? -eq 0 ];then

echo "Put the ftp is successfully"

else

echo "It is not successfully"

fi

2)分析Nginx日志,统计网站的IP、UV、PV及早上9点-10点的访问排前20的URL,并将IP和URL均打印出来;

(1)统计网站的IP

awk ‘{print $1}‘ access_20170804.log | sort| uniq -c | sort -nr | wc -l

统计独立IP:00:00-24:00内相同IP地址只被计算一次,做网站优化的朋友最关心这个

(2)统计网站的UV

awk ‘{print $11}‘ access_20170804.log |sort | uniq -c | sort -nr | wc -l

UV(Unique Visitor):独立访客,将每个独立上网电脑(以cookie为依据)视为一位访客,一天之内(00:00-24:00),访问您网站的访客数量。一天之内相同cookie的访问只被计算1次

(3)统计网站的PV

awk ‘{print $7}‘ access_20170804.log | wc-l

PV(Page View):访问量,即页面浏览量或者点击量,用户每次对网站的访问均被记录1次。用户对同一页面的多次访问,访问量值累计

(4)统计早上9点-10点的访问排前20的URL,并将IP和URL均打印出来

sed -n "/2017:09:00/,/2017:10:00/"paccess_20170804.log | sort | uniq -c | sort -nr | head -20 | awk ‘{print$2,$12}‘

3)自动每天统计Nginx日志,打印访问时间大于5秒的URL,并且把相关信息通过WEB表格线上展示出来,通过浏览器可以访问该数据;
(WEB表格展示内容包括:编号、客户端IP、访问URL、访问状态码、访问时间、备注信息等)

#!/bin/bash

#by author xiaoming

################################

NGINX_FILES=/usr/local/nginx/logs/access_20170804.log

NGINX_HTML=/usr/local/nginx/html/index.html

cat>$NGINX_HTML<<EOF

<html>

<body>

<meta charset="UTF-8">

<center><h1>北京时间:`date+%Y%m%d\ %H:%M`Nginx请求时间</h1></center>

<table border="1">

<tr>

<td>编号</td>

<td>IP Address</td>

<td>Nginx URL</td>

<td>状态码</td>

<td>处理时间</td>

<td>备注信息</td>

</tr>

EOF

i=0

awk ‘{if($NF>5) print $0}‘ $NGINX_FILES>tmp.html

while read line

do

NUM1=`echo $line | awk ‘{print $1}‘`

NUM2=`echo $line | awk ‘{print $11}‘`

NUM3=`echo $line | awk ‘{print $9}‘`

NUM4=`echo $line | awk ‘{print $4}‘ | sed "s/\[//g"`

i=`expr $i + 1`

echo "

<tr>

<td>$i</td>

<td>$NUM1</td>

<td>$NUM2</td>

<td>$NUM3</td>

<td>$NUM4</td>

<td></td>

</tr> " >>$NGINX_HTML

done <tmp.html

cat>>$NGINX_HTML<<EOF

</table>

</body>

</html>

EOF

时间: 2024-11-05 17:33:10

Nginx日志统计的相关文章

Nginx日志统计方案全过程

本文主要记录下给予python的nginx日志统计过程,主要原因是最近系统经常遭到未知程序的疯狂爬数据,虽然做了防爬机制,但是还是必须要找出是哪些IP访问次数比较多.想到的办法就是通过分析ngxin日志,从而找出这些IP排行即可.具体方案的操作步骤包括: ngxin日志每日切割功能: 设置ngxin的日志格式: 编写python代码在每日切割之前统计下access.log中的IP访问次数并将统计结果录入MongoDB: 编写web查询MongoDB进行统计. 一.nginx日志每日切割功能 该功

nginx 日志统计接口每个小时访问量

指定时间段增量统计nginx日志不同接口的访问量: #!/bin/bash#此脚本用于统计nginx日志当前时间15分钟之内不同接口(URL)的访问量统计LOG=/usr/local/nginx/logs/interface.access.logTMP=/tmp/url.tmpURLSTATS=/var/log/interface_urlstats.logRECEIVERS="[email protected] [email protected]"#删除临时统计文件[ -f $TMP

shell 分析 nginx 日志统计

1.统计ip访问量前10的 ip地址 cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 10 2.查看当天ip访问量统计 cat access.log  |grep "21/Apr/2016" |awk '{print $1}'|sort|uniq -c|sort -nr 3.查看访问前10的页面统计 cat access.log | grep "21/Apr/2016"

elk容器化实践(Nginx日志统计)

1.在管理机上运行docker swarm init --advertise-addr 192.168.204.1352.在节点机上运行(加入集群)docker swarm join \--token SWMTKN-1-48w6yubnwxpbboqo296es90r7snmru0q2dnwmthq1i7a6qlom9-8xuklnbfys5vdcx3pkyf4u3ha \192.168.204.135:23773.在管理机上运行(Nginx 集群)docker service create -

使用awstats分析nginx日志

1.awstats介绍 本文主要是记录centos6.5下安装配置awstats,并统计nginx访问日志 1.1 awstats介绍 awstats是一款日志统计工具,它使用Perl语言编写,可统计的日志类型包括appache,nginx,ftp,mail等,awstats对nginx日志统计非常详细,如统计项 按参观时间:  按月历史统计   按日期统计   按星期   每小时浏览次数 按参观者:  国家或地区   城市   IP   最近参观日期   无法反解译的IP地址   搜索引擎网站

Nginx日志切割及常用统计脚本

1,编辑脚本 进入到/usr/local/nginx/logs日志目录下,新建一个脚本,添加下面内容.指定好日志目录路径,日志文件名称和pid的文件,最后kill -USR1信号用来告知应用程序重载配置文件 vim log.sh #!/bin/bash logs_path="/usr/local/nginx/logs/" mv ${logs_path}www_mrliangqi.log ${logs_path}www_mrliangqi$(date -d "yesterday

Perl统计nginx日志信息并分析每个小时的数据

#!/usr/bin/perl # name: logcalc.pl # calc the amount of access url use strict; use warnings; use diagnostics; use File::Basename; my ($arg, $arg_only); my $FILE; my ($year, $month, $day, $mon); my ($time, $method, $url); my ($amount, $hour, $key, $va

统计nginx日志

1.根据访问IP统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l 2.统计访问URL统计PV awk '{print $7}' access.log|wc -l 3.查询访问最频繁的URL awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more 4.查询访问最频繁的IP awk '{print $1}' access.log|sort | uniq -c |sor

切分Nginx日志,完成网站访问量的自动统计

如果你的网站通过 Nginx 代理,那么本文将为你提供一个自动统计网站访问量的方案. 方案在实现步骤上,一个分为三步: 1. 运行 shell 脚本,移动 Nginx 日志到指定文件夹,并运行 Python 脚本: 2. 执行 Python 脚本,统计有效的 IP 访问量 3. 设置 crontab 定时任务. 一.shell 脚本 通过 Nginx 配置文件,查看监听端口的日志文件,并移动到指定的路径. 然后运行 Python 脚本,执行处理 Nginx 日志文件的 Python 脚本. sh