Linux下Nginx日志分析
来源:互联网 发布:软通动力java笔试题 编辑:程序博客网 时间:2024/06/18 12:39
Access logs
以nginx默认的日志格式为例:
$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"
各字段的含义分别是:
$remote_addr
请求者IP$remote_user
HTTP授权用户,如果不使用Http-based认证方式,其值为空[$time_local]
服务器时间戳"$request"
HTTP请求类型(如GET,POST等)+HTTP请求路径(不含参数)+HTTP协议版本$status
服务器返回的状态码(如200,404,5xx等)$body_bytes_sent
服务器响应报文大小,单位byte"$http_referer"
referer字段值"$http_user_agent"
User Agent字段
以下列举常用的日志分析命令
根据状态码进行请求次数排序
cat access.log | cut -d '"' -f3 | cut -d ' ' -f2 | sort | uniq -c | sort -r
输出样例:
210433 200 38587 302 17571 304 4544 502 2616 499 1144 500 706 404 355 504 355 301 252 000 9 403 6 206 2 408 2 400
或者使用awk:
awk '{print $9}' access.log | sort | uniq -c | sort -r
上例显示有704次404请求,接下来是如何找到这些请求的URL
awk '($9 ~ /404/)' access.log | awk '{print $7}' | sort | uniq -c | sort -r
输出样列:
21 /members/katrinakp/activity/2338/19 /blogger-to-wordpress/robots.txt14 /rtpanel/robots.txt
接下来考虑如果找到这些请求的IP地址,使用命令:
awk -F\" '($2 ~ "/wp-admin/install.php"){print $1}' access.log | awk '{print $1}' | sort | uniq -c | sort -r
输出样例:
14 50.133.11.24812 97.106.26.24411 108.247.254.3710 173.22.165.123
php后缀的404请求(通常是嗅探)
awk '($9 ~ /404/)' access.log | awk -F\" '($2 ~ "^GET .*\.php")' | awk '{print $7}' | sort | uniq -c | sort -r | head -n 20
按URL的请求数排序
awk -F\" '{print $2}' access.log | awk '{print $2}' | sort | uniq -c | sort -r
url包含XYZ:
awk -F\" '($2 ~ "ref"){print $2}' access.log | awk '{print $2}' | sort | uniq -c | sort -r
1,查看apache进程:
ps aux | grep httpd | grep -v grep | wc -l
2,查看80端口的tcp连接:
netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l
3,通过日志查看当天ip连接数,过滤重复:
cat access_log | grep "20/Oct/2008" | awk '{print $2}' | sort | uniq -c | sort -nr
4,当天ip连接数最高的ip都在干些什么(原来是蜘蛛):
cat access_log | grep "20/Oct/2008:00" | grep "122.102.7.212" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
5,当天访问页面排前10的url:
cat access_log | grep "20/Oct/2008:00" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
6,用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr
<pre>
接着从日志里查看该ip在干嘛:
<pre lang="php">
cat access_log | grep 122.102.7.212| awk '{print $1"\t"$8}' | sort | uniq -c | sort -nr | less
7,查看某一时间段的ip连接数:
grep "2006:0[7-8]" www20060723.log | awk '{print $2}' | sort | uniq -c| sort -nr | wc -l
通过日志查看当天ip连接数,过滤重复
cat access.log | grep "20/Mar/2011" | awk '{print $3}' | sort | uniq -c | sort -nr
当天访问页面排前10的url:
cat access.log | grep "20/Mar/2011" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
找出访问次数最多的10个IP
awk '{print $3}' access.log |sort |uniq -c|sort -nr|head
找出某天访问次数最多的10个IP
cat /tmp/access.log | grep "20/Mar/2011" |awk '{print $3}'|sort |uniq -c|sort -nr|head
当天ip连接数最高的ip都在干些什么:
cat access.log | grep "10.0.21.17" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
找出访问次数最多的几个分钟
awk '{print $1}' access.log | grep "20/Mar/2011" |cut -c 14-18|sort|uniq -c|sort -nr|head
- Linux下Nginx日志分析
- Linux Nginx日志分析
- linux下awstats配合jawstats分析nginx日志
- linux下 Nginx日志分割
- linux 下 nginx 日志分割
- linux下使用awk,wc,sort,uniq,grep对nginx日志进行分析和统计
- linux下使用awk,wc,sort,uniq,grep对nginx日志进行分析和统计
- linux下使用awk,wc,sort,uniq,grep对nginx日志进行分析和统计
- Linux下分析日志常用命令
- Linux下,nginx如何切割访问日志?
- Linux下nginx生成日志自动切割
- Linux下Nginx如何切割访问日志?
- Linux下Nginx如何切割访问日志?
- Linux下nginx日志自动切割
- Linux下nginx日志每天定时切割
- awk分析nginx日志
- nginx错误日志分析
- awstats分析nginx日志
- Qt编译中工程文件Pro的语法
- MyBATIS中的插件原理和应用
- 紫金桥飞信接口--让短信报警摆脱资费的束缚
- UVA 题目10943 How do you add?(DP,整数拆分)
- bootstrap菜单、按钮及导航学习笔记5-15导航(基础样式)
- Linux下Nginx日志分析
- hibernate-session接口
- MongoDB配置参数详解
- 享受知识饕餮盛宴,尽在2016年课程安排
- Android 中 LayoutInflater 的用法小结
- Java并行编程(parallel programming) 2
- 高斯过程分类原理
- 网络防火墙系统的实现(一)
- Ueditor富编辑器第二次打开的时候会渲染失败