日志分析   取出访问最多的IP,URL,以及五分钟内的访问流量

日志分析!

对最近五分钟的日志进行分析,取出访问最多的IP,URL,以及五分钟内的访问流量

#!/bin/sh

name=`cat /etc/salt/minion | grep "^id" | awk ‘{print $2}‘`
ipaddr=`/sbin/ifconfig | grep "inet addr" | egrep -v "10\.|127\." | awk  -F‘[: ]+‘ ‘{print $4}‘`
#LogPath=‘/usr/local/tengine/logs/‘

##日志的时间格式。
function Time(){
    FileTime=`head -1 $Logfile |awk -F"[[ / :]" ‘{print "["$5"/"$6"/"$7}‘`
    start_time=${FileTime}:`date -d "6 mins ago" +%H:%M`
    #now_time=${FileTime}:`date  +%H:%M`
}

##取得指定最新时间内的日志,并进行分析
function IpUrlFlow(){
    Time
    path="/tmp/backup/log"
    [ ! -d $path/flow/ ] && mkdir -p $path/flow
    file="$path/${Logfile}.time.log"
    FileIp="$path/${Logfile}.IP.log"
    FileUri="$path/${Logfile}.uri.sort.log"
    FileIpStat="$path/${Logfile}.flow.sort.log"
    FileStat="$path/flow/${Logfile}.flow.log"
    #取出直接时间内的日志
    #awk -v start_time=$start_time -v now_time=$now_time  ‘{if ($4>start_time &&  $4<now_time) print $0 }‘ ${Logfile} > $file
    awk -v start_time=$start_time -v now_time=$now_time  ‘{if ($4>start_time) print $0 }‘ ${Logfile} > $file
        if [  -s $file ]
        then
            #对取出的日志进行统计,取出访问次数最多的ip以及次数
            awk ‘{S[$1]++}END{for(n in S) print S[n]"      "n }‘  $file  |sort -rn |head -20  > ${FileIp}
            #awk ‘{S[$1]++}END{for(n in S) print S[n]"      "n }‘  $file  |sort -rn |head -20  > ${FileIpStat}
            #对取出的日志进行统计,取出访问次数最多的URI以及次数
            awk ‘{S[$7]++}END{for(n in S) print S[n]"      "n }‘  $file  |sort -rn |head -20  > ${FileUri}
            #awk ‘{S[$7]++}END{for(n in S) print S[n]"      "n }‘  $file  |sort -rn |head -20  >> ${FileIpStat}
            #对取出的日志进行统计,取出访问流量最多的ip以及流量大小,单位M
            awk ‘{S[$1]=+$10}END{for(n in S) print S[n]"      "n }‘ $file |sort -rn|head -20 |awk ‘{a=$1/1024/1014}{print a " M          "$2}‘ >${FileIpStat}
            #awk ‘{S[$1]=+$10}END{for(n in S) print S[n]"      "n }‘ $file |sort -rn|head -20 |awk ‘{a=$1/1024/1014}{print a " M          "$2}‘ >>${FileIpStat}
        
            #整合到一个文件!
            echo -e "IP_start" > ${FileStat}
            cat ${FileIp} >> ${FileStat}
            echo -e "IP_end\n"  >> ${FileStat}
            echo -e "URL_start"  >> ${FileStat}
            cat ${FileUri} >> ${FileStat}
            echo -e "URL_end\n"  >> ${FileStat}
            echo -e "Flow_star"  >> ${FileStat}
            cat ${FileIpStat} >> ${FileStat}
            echo -e "Flow_end\n"  >> ${FileStat}
        fi
}

#Ip
function main(){
    cd ${LogPath}
    for Logfile in `ls acce*`
    do
        if [ ! -s ${Logfile} ]
        then
             echo ${Logfile}
        else
            Ip
        fi
           
    done

}
main

###############################################################################
###############################################################################
###############################################################################
#!/bin/sh

name=`cat /etc/salt/minion | grep "^id" | awk ‘{print $2}‘`
ipaddr=`/sbin/ifconfig | grep "inet addr" | egrep -v "10\.|127\." | awk  -F‘[: ]+‘ ‘{print $4}‘`
LogPath=‘/usr/local/tengine/logs/‘
#filelog=‘access_www.log‘
#Logfile="${LogPath}${filelog}"

function Time(){
    FileTime=`head -1 $Logfile |awk -F"[[ / :]" ‘{print "["$5"/"$6"/"$7}‘`
    start_time=${FileTime}:`date -d "6 mins ago" +%H:%M`
    now_time=${FileTime}:`date  +%H:%M`

    #echo $FileTime $start_time $now_time
}

function Ip(){
    Time
    path="/script/shell/gaogd/LogAnalyze/log"
    [ ! -d $path/flow ] && mkdir -p $path/flow
    file="$path/${Logfile}.time.log"
    #FileIp="$path/${Logfile}.IP.log"
    #FileUri="$path/${Logfile}.uri.sort.log"
    #FileIpStat="$path/${Logfile}.stat.sort.log"
    FileStat="$path/flow/${Logfile}.Statistics.log"
    awk -v start_time=$start_time -v now_time=$now_time  ‘{if ($4>start_time &&  $4<now_time) print $0 }‘ ${Logfile} > $file
        if [  -s $file ]
        then    
            echo -e "IP_start" > ${FileStat}
            awk ‘{S[$1]++}END{for(n in S) print S[n]"      "n }‘  $file  |sort -rn |head -20 >> ${FileStat}
            echo -e "IP_end\n"  >> ${FileStat}
            echo -e "URL_start"  >> ${FileStat}
            awk ‘{S[$7]++}END{for(n in S) print S[n]"      "n }‘  $file  |sort -rn |head -20  >> ${FileStat}
            echo -e "URL_end\n"  >> ${FileStat}
            echo -e "Flow_star"  >> ${FileStat}
            awk ‘{S[$1]=+$10}END{for(n in S) print S[n]"      "n }‘ $file |sort -rn|head -20 |awk ‘{a=$1/1024/1014}{print a " M          "$2}‘ >>${FileStat}
            echo -e "Flow_end\n"  >> ${FileStat}
        else
            if [  -s ${FileStat} ]
            then
                mv ${FileStat} /tmp
            fi
        fi
}

#Ip
function main(){
    cd ${LogPath}
    for Logfile in `ls acce*`
    do
        if [ ! -s ${Logfile} ]
        then
            echo ${Logfile}
        else
            Ip
        fi
           
    done

}
main
时间: 2024-10-13 11:48:26

日志分析   取出访问最多的IP,URL,以及五分钟内的访问流量的相关文章

阿里云服务器ECS Linux系统分析nginx或apache当天访问最多的IP

Linux 系统查询 nginx 或 apache 当天访问最多的 IP 方法,以一键安装包为例可以执行如下命令: cat /alidata/log/nginx/access/testweb.log |grep `date "+%d/%b"`|awk '{print $1}'|sort |uniq -c |sort -rn 注意:其中 /alidata/log/nginx/access/testweb.log 部分需要替换为实际的路径和文件.

日志分析统计PV UV 独立IP

pv一般都是统计指定页面的点击量,这里用首页来计算 grep "/index.php" /var/log/nginx/access.log | wc -l uv是统计指定页面上真是访问的用户,也就是说同一ip 不管点击多少次都算一个uv grep "/index.php" /var/log/nginx/access.log | awk '{print $1}'| sort | uniq | wc –l 独立ip是统计不管用户点击那个url只要有浏览,就算一个独立ip

Awk使用及网站日志分析

Awk使用及网站日志分析 Awk简介 概述 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk. awk程序的报告生成能力通常用来从大文本文件中提取数据元素并将它们格式化成可读的报告.最完美的例子是格式化日志文件.awk程序允许从日志文件中只过滤出你想要看

【运维小分享】Apache日志分析命令汇总

很多像我这样刚入门的小菜鸟,不知道日常怎么对自己的网站的日志进行分析,得出谁访问过我网站,访问什么,响应效果如何等等,在这里我对相关基础分析命令作个总结,大家可以参考一下&给修改意见. 在讲分析命令之前,首先要明确日志格式,每个人的格式不一定一样,如果与我的格式不一样则分析命令的列数号要作对应调整 141.10.225.94 - - [09/Dec/2016:15:42:45 +0800] "GET /wp-content/uploads/2016/12/56.jpg HTTP/1.1&

seci-log 1.03 日志分析软增加web日志分析

日志分析软件的升级了,我们在上次十种告警(非上班时间访问,非上班地点访问,密码猜测,账号猜测,账号猜测成功.敏感文件操作告警和高危命令操作,主机扫描,端口扫描,非法外联)的基础上有增加了sql注入,xss攻击,路径遍历,webshell,网站敏感文件访问,和cc攻击告警. Sql注入 下面的告警都是从Web服务器日志中产生的,web服务器日志格式支持Apache的NCSA日志格式,包括NCSA普通日志格式(CLF)和NCSA扩展日志格式(ECLF)两类.默认apache,tomcat分别就是这两

当日志文件中的时间与主机时间不同步时,怎么监控每隔五分钟检测一次日志文件是否出自按某个关键字?

今有需求:需要监控每隔五分钟检测一次日志文件是否出自按某个关键字.利用过滤全部的日志信息 虽然可以过滤出来关键字告警,但是修复后,依然还是会报警,存在局限性,所以需要使用以下办法来实现需求. 本想循环获取5分钟内的时间戳,然后从日志文件中grep这个时间端的信息,然后再获取关键字,但是通过查看日志文件发现时间戳与主机时间不同步,所以,这种方法不可取.那么怎么获取最近五分钟的日志信息,再过滤关键字呢?思索了很久,又有了新思路.将现在的文件日志重定向到一个新的文件里面 cat /var/log/xx

python分析nginx日志的ip,url,status

Python 脚本如下: #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'lvnian' #!/usr/bin env python # coding: utf-8 import MySQLdb as mysql import sys, os db = mysql.connect(user="root",passwd="[email protected]",db="intest",

iptables+rsyslog(syslog)+logrotate访问日志分析

最近,因为相应的业务需求需要对服务器的相应服务做访问分析,在做之前大致思考了下,可以利用iptables的log日志功能用来做相应的日志分析,在此就以做ssh端口访问做日志分析来简单讲解下,在实际生产环境下也可以根据实际情况调整,可以用来做WEB服务等等的相应的访问日志分析. 首先,在使用日志分析之前最重要的就是iptables的log功能,至于iptables中的log功能使用 也很简单,在开启后会把日志写入/var/log/messages内核日志中,而iptables的日志功能使用的几个参

公有云厂商DDoS防护产品竞品分析——内含CC的一些简单分析,貌似多是基于规则,CC策略细粒度ip/url//ua/refer

公有云厂商DDoS防护产品竞品分析 from:http://www.freebuf.com/articles/network/132239.html 行文初衷 由于工作关系,最近接触了很多云上用户,对抗D产品做了一下用户调研,有些想法想和大家分享一下.首先,从数据分析角度上,看一下抗D安全业务需求,然后站在产品经理的角度上,从用户体验的五要素战略层.范围层.结构层.框架层.表现层方面深度解析市面的云厂商的抗D产品.最后,站在攻击者的角度上看看攻防双方博弈的手段. 安全业务需求 1.前言 任何安全