简单的Web日志分析

简单的Web日志分析,第1张

Web日志分析

以apache为例

访问日志记录过程

apache日志大致分为两类:访问日志和错误日志

访问日志记录的过程:

  • 客户端向web服务器发送请求,请求中包含客户端的IP、浏览器类型(User-Agent)、请示的URL等信息

  • web服务器向客户端返回请示的页面

  • web服务器同时将访问信息和状态信息记录到日志文件中

Apache的访问日志目录在其配置文件中已经定义好了,CentOS中apache的配置文件位置为/etc/httpd/conf/httpd.conf,默认的访问日志存放在/var/log/httpd/access_log

 

访问日志格式分析

apache中访问日志功能由mod_log_config模块提供,以默认的CLF来记录访问日志,如LogFormat "%h%l%u%t %r"

127.0.0.1 - - [13/Apr/2022:23:34:30 +0800] "GET /images/apache_pb.gif HTTP/1.1" 200 4897 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
内容含义
127.0.0.1远程主机IP地址,%h
-占位符,%l
-占位符,%u
13/Apr/2022:23:34:30服务器完成请示处理时间,日/月/年:小时:分:秒:时间,%t
+0800时区
GET请示方法(GET,POST),%r\
/images/apache_pb.gif请示的资源URL
HTTP/1.1协议
200返回状态,%s
1961发送给客户端的总字节数,%b
-此页面的链接地址(Referer),%{Referer}i\
Mozilla/5.0 ...客户端使用的浏览器信息,%{User-Agent}i\

Web日志统计举例

查看访问IP
cat access_log | awk '{print }'

awk '{print $1}' - 每行按空格或TAB分割,输出文本中的第1项,因为在access_log中的IP是第一项,所以这里用$1表示

对IP排序
cat access_log | awk '{print }' | sort

打印每一重复行出现的次数
cat access_log | awk '{print }' | sort | uniq -c

uniq用于检查及删除文本中重复出现的行列,一般与sort结合使用

-c - 在每列旁边显示该行重复出现的次数

 

排序并统计行数
cat access_log | awk '{print }' | sort | uniq -c | sort -rn | wc -l

sort 用于对文本文件内容进行排序,默认以ASCII码的次序排列

-r 以相反的顺序来排序

-n 依照数值的大小排序

wc用于打印文件的文本行数、单词数、字节数等

-l 打印指定文件的文本行数

显示访问前10位的IP地址
cat access_log | awk '{print }' | sort | uniq -c | sort -rn | heade -10

显示指定时间以后的日志
cat access_log | awk '$4>="[10/Apr/2022:01:00:01]"' access_log

找出访问量最大的IP,并封掉
cat access_log | awk '{print }' | sort | uniq -c | sort -rn | more

iptables -I INPUT -s 192.168.1.10 -j DROP

iptables -I INPUT -s 192.168.1.0/24 -j DROP

找出下载最多的文件
cat access_log | awk '( ~/.exe/){print  ""  ""  "" }' | sort -n | uniq -c | sort -nr | head -10

或找出文件大于10MB的文件:

cat access_log | awk '($10 > 10000000 && $7 ~/.exe){print $7}' | sort -n | uniq -c | sort -nr | head -10

简单统计流量
cat access_log | awk '{sum+=}'

统计401访问拒绝的数量
cat access_log | awk '(/401/)' | wc -l

查看某一时间内的IP连接情况
grep "2022:04" access_log | awk '{print }' | sort | uniq -c | sort -nr

Apache错误日志分析

默认的错误日志位置/var/log/httpd/error_log

错误日志记录了服务器运行期间遇到的各种故障,以及一些普通的诊断信息,如服务器启动/关闭的时间

日志文件记录信息级别的高低,控制日志文件记录信息的数量和类型,这是通过LogLevel指令实现的,该指令默认设置的级别是error

级别越高,记录的信息越多,日志量越大

紧急程序等级说明
0emerg出现紧急情况使得该系统不可用,如系统宕机
1alert需要立即引起注意的情况
2crit关键错误,危险情况的警告,由于配置不当所致
3error一般错误
4warn警告信息,不算是错误信息,主要记录服务器出现的某种信息
5notice需要引起注意的情况
6info值得报告的一般消息,如服务器重启
7debug由运行于debug模式的程序所产生的消息

最常见的错误日志文件有两类:

  • 文档错误

    文档错误和服务器应答中的400系列代码对应,最常见的是404错误

  • CGI错误

    CGI程序输出到STDERR(Standard Error,标准错误设备)的所有内容都将直接进入错误日志

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/737063.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存