12,带宽统计
复制代码 代码示例:
cat apache.log |awk '{if($7~/GET/) count++}END{print "client_request="count}'
cat apache.log |awk '{BYTE+=$11}END{print "client_kbyte_out="BYTE/1024"KB"}'
13,统计对象数量及对象平均大小
复制代码 代码示例:
cat access.log |awk '{byte+=$10}END{ print byte/NR/1024,NR}'
cat access.log |awk '{if($9~/200|30/)COUNT[$NF]++}END{for( a in COUNT) print a,COUNT[a],NR,COUNT[a]/NR*100"%"}
14,取5分钟日志
复制代码 代码示例:
if [ $DATE_MINUTE != $DATE_END_MINUTE ] ;then #则判断开始时间戳与结束时间戳是否相等START_LINE=`
sed -n "/$DATE_MINUTE/=" $APACHE_LOG|head -n1` #如果不相等,则取出开始时间戳的行号,与结束时间戳的行号
#END_LINE=`sed -n "/$DATE_END_MINUTE/=" $APACHE_LOG|tail -n1`
END_LINE=`sed -n "/$DATE_END_MINUTE/=" $APACHE_LOG|head -n1`sed -n "${START_LINE},${END_LINE}p" $APACHE_LOG > $MINUTE_LOG ##通过行号,取出5分钟内的日志内
容 存放到 临时文件中
GET_START_TIME=`sed -n "${START_LINE}p" $APACHE_LOG|awk -F '[' '{print $2}' |awk '{print $1}'|
sed 's#/# #g'|sed 's#:# #'` #通过行号获取取出开始时间戳
GET_END_TIME=`sed -n "${END_LINE}p" $APACHE_LOG|awk -F '[' '{print $2}' |awk '{print $1}'|sed
's#/# #g'|sed 's#:# #'` #通过行号获取结束时间戳
15,蜘蛛分析
查看是哪些蜘蛛在抓取内容
复制代码 代码示例:
/usr/sbin/tcpdump -i eth0 -l -s 0 -w - dst port 80 | strings | grep -i user-agent | grep -i -E 'bot|crawler|slurp|spider'
第三部分,网站日分析2(Squid篇)
按域统计流量
复制代码 代码示例:
zcat squid_access.log.tar.gz| awk '{print $10,$7}' |awk 'BEGIN{FS="[ /]"}{trfc[$4]+=$1}END{for
(domain in trfc){printf "%st%dn",domain,trfc[domain]}}'
第四部分,数据库篇
1,查看数据库执行的sql
复制代码 代码示例:
/usr/sbin/tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | egrep -i 'SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL'
第五部分,系统Debug分析篇
1,调试命令
复制代码 代码示例:
strace -p pid
2,跟踪指定进程的PID
复制代码 代码示例:
gdb -p pid
好了,就介绍这些吧,内容已经很丰富了,建议大家自我消化下,多多练习。希望这些shell脚本,对于大家日常的运维监控,日志分析有一定的帮助。
脚本学堂,祝大家学习进步。