Shell应用——日志分析
系列文章:
1、《Shell应用——主控脚本实现》
2、《Shell应用——系统信息及运行状态获取》
3、《Shell应用——nginx和mysql应用状态分析》
注:本文以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