apache 访问状态 分析
状态查看:
……
netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}'
netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c
ps -ef | grep httpd | wc -l
返回结果示例:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
查看80端口连接数最多的20个IP
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20 netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A,i}' |sort -rn|head -n20
用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20
查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
找查较多的SYN连接
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more
1.被动方
2.主动方
日志分析:
日志文本的格式
1 2 3 4 5 6 7 8 9 10 11
10.0.7.5 - - [29/Sep/2014:10:45:43 +0800] "GET /images/dlzc.jpg HTTP/1.1" 200 104298 "http://10.0.7.100/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.1.2000 Chrome/30.0.1599.101 Safari/537.36"
以不同背景色来区分日志中的每个字段
1、在apachelog中找出访问次数最多的10个IP:
awk '{print $1}' access_log | sort | uniq -c | sort -nr | head -n 10
awk 首先将每条日志中的IP抓出来,如日志格式被自定义过,可以 -F 定义分隔符和 print指定列;
sort进行初次排序,为的使相同的记录排列到一起;
upiq -c 合并重复的行,并记录重复次数。
sort -nr按照数字进行倒叙排序。
head进行前十名筛选;
2、在apache日志中找到访问最多的页面:
awk '{print $11}' access_log | sed 's/^.*cn\(.*\)\"/\1/g' | sort | uniq -c | sort -rn | head
awk 首先将每条日志中的访问页面抓出来,如日志格式被自定义过,可以 -F 定义分隔符和 print指定列;
sed 's/^.*cn\(.*\)\"/\1/g'
将 .*cn\(.*\)\"
字符串用 \1
字符串替代,末端的g表示在行内进行全局替换,即某行
出现多个要替换字符,则全部替换;
用sed的替换功能将”http://www.a.cn/common/index.php”替换成括号内的内容
”http://www.a.cn(/common/index.php)”
sed
's/^.*cn/(.*/)/"//1/g'
sort进行初次排序,为的使相同的记录排列到一起;
upiq -c 合并重复的行,并记录重复次数;
sort -nr按照数字进行倒叙排序;
3、在apache日志中找出访问次数最多的几个分钟。
awk '{print $4}' access_log | cut -c 14-18 | sort|uniq -c | sort -nr | head
awk 首先将每条日志中的访问页面抓出来
[29/Sep/2014:10:45:43
cut -c 14-18 再次将字符串中 14-18值抓出 10:45
LAST_ACK 8
(即prefork模式下Apache能够处理的并发请求数)
ps -ef | grep httpd | wc -l
返回结果示例:
对连接的IP按连接数量进行排序
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n