日志分析

一、 应急背景

日志量过大,说明里面可能有扫描、**、爬虫等等操作,那么先提取出出现次数最多前几位IP,分析是否有以上行为。


二、日志分割

一般的编辑器无法直接打开大文件文本,如超过4个G大的log文本 。那么该如何做?直接拖到linux主机下用cat vim等相关命令加载,但是加载速度太慢,在此不做推荐。下面介绍利用shell下的split命令切割log文件。

split [-bl] file [prefix]  

split命令参数说明:

-b, 按大小进行切分。可以指定单位BB,KB,MB。-l, 按行数进行切分。
-d, 使用数字后缀。
-a, 指定后缀的长度。
prefix:分割后产生的文件名前缀。

这里我要分割1.log(大小为1个G左右)文件,分成每份300MB,并且前缀为file+三位的数字后缀,那么对应的命令是:

split -b 300MB 1.log -d -a 3 file

日志分析日志分析这里只做演示,其实1个G的文件,直接cat加载后进行后续操作简单些~比如剔除操作啥的。

二、日志剔除

我们可以看到日志的格式为酱紫的~ 也算符合常规的格式。日志分析那么想要统计IP出现次数,就需要将每行 – - 之后的所有内容替换为空,使用命令为:

cat 1.log | sed -e 's/ - -.*//g' > out1.log

sed命令参数说明:

-e  以选项中指定的script来处理输入的文本文件(常用于正则表达式)
s   替换指定字符
g   替换每一行内的所有匹配
.*  表示后面任意长度的任意字符

我们打开剔除后的文件out1.log

日志分析三、日志排序

杂乱无章的日志IP,得将其排序后才能方便阅读。

使用sort命令如下:

sort out1.log > out2.log

打开out2.log,发现已经按照IP的ASCII排序

日志分析

当然,也可以不用排序直接进行统计,只是为了演示~

四、日志统计

从这里开始,就可以对日志进行统计,附上python脚本:

本python脚本适用于常见格式的web日志。如格式不同,则需要自己修改使用。

提取出出现次数大于1000的IP。

日志分析

日志分析发现有两个IP的次数大于5000次,得重点关注下。

五、日志去重

如果想要将上述的日志排序后的结果进行去重,那么使用如下命令:

sort -u out2.log > out3.log

打开out3.log后:

日志分析已经去重完毕。