A-A+

Shell应用——日志分析

2016年02月20日 Linux, Shell 暂无评论 阅读 3,608 views 次

系列文章:

1、《Shell应用——主控脚本实现》

2、《Shell应用——系统信息及运行状态获取》

3、《Shell应用——nginx和mysql应用状态分析》

4、《Shell应用——日志分析》

注:本文以nginx为例。

常用Linux日志文件:

一、系统日志

1、/var/log/messages    //系统主日志文件

2、/var/log/secure     //认证、安全日志

3、/var/log/dmesg    //和系统启动相关日志

二、应用服务日志

1、access.log     //nginx访问日志

2、mysqld.log   //mysql运行日志

3、xferlog    //和访问FTP服务器相关

......

三、程序脚本日志

1、开发语言:C、C++、java、PHP

2、框架:Django、MVC、Servlet ......

3、脚本语音:Shell、Python

Nginx的log_format介绍

/var/log/nginx

log_format包含内容查看:

cat /etc/nginx/nginx.conf |grep -A 2 log_format

http状态码介绍(3位数数字)

1**  信息,服务器收到请求,需要请求者继续操作。

2**  成功,操作被成功接受并处理。

3** 重定向,需要进一步的操作以完成请求。eg:301、302、303

4**  客户端错误,请求包含语法错误或无法完成请求。eg:403、404错误

5**  服务器错误,服务器在处理请求的过程中发送了错误。eg:504等

应用日志分享脚本实现——准备

一、本例脚本功能介绍:

1、分析日志中HTTP状态码,在100~200、200~300、300~400、400~500、500以上,这五个区间的请求总条数;

2、针对性的分析日志中HTTP状态码为404、500的请求条数。

二、用Shell分析日志文件

1、查看nginx日志内容的内容

cat /opt/logs/nginx/access.log |awk '{print $1^C

tail -f /opt/logs/nginx/access.log

2、查看哪几个IP请求站点最多

先输入第一列

cat /opt/logs/nginx/access.log |awk '{print $1}'

进行排序,屏蔽相同IP

cat /opt/logs/nginx/access.log |awk '{print $1}' |sort |uniq -c

再进行排序,反序一下,按访问次数由大到小排序

cat /opt/logs/nginx/access.log |awk '{print $1}' |sort |uniq -c |sort -rn|more

3、用正则获取HTTP状态码

cat /opt/logs/nginx/access.log |awk '{print $9}'

这种方式也可以,但并不精确,最好用下面的正则方式获取

cat /opt/logs/nginx/access.log |grep -ioE "HTTP\/1\.[1|0]\"[[:blank:]][0-9]{3}"

分析HTTP状态码在不同区间的请求

123

标签:

给我留言