nginx常用日志分析命令 运维人员必备
常用日志分析命令 1、总请求数 wc -l access.log |awk '{print $1}' 2、独立IP数 awk '{print $1}' access.log|sort |uniq |wc -l 3、每秒客户端请求数 TOP5 awk -F'[ []' '{print $5}' access.log|sort|uniq -c|sort -rn|head -5 4、访问最频繁IP Top5 awk '{print $1}' access.log|sort |uniq -c | sort -rn |head -5 5、访问最频繁的URL TOP5 awk '{print $7}' access.log|sort |uniq -c | sort -rn |head -5 6、响应大于10秒的URL TOP5 awk '{if ($12 > 10){print $7}}' access.log|sort|uniq -c|sort -rn |head -5 7、HTTP状态码(非200)统计 Top5 awk '{if ($13 != 200){print $13}}' access.log|sort|uniq -c|sort -rn|head -5 8、分析请求数大于50000的源IP的行为 awk '{print $1}' access.log|sort |uniq -c |sort -rn|awk '{if ($1 > 50000){print $2}}' > tmp.txt for i in $(cat tmp.txt) do echo $i >> analysis.txt echo "访问行为统计" >> analysis.txt grep $i access.log|awk '{print $6}' |sort |uniq -c | sort -rn |head -5 >> analysis.txt echo "访问接口统计" >> analysis.txt grep $i access.log|awk '{print $7}' |sort |uniq -c | sort -rn |head -5 >> analysis.txt echo -e "\n" >> /root/analysis/$Ydate.txt done 注:如果源IP来自代理服务器,应将第一条命令过滤地址改为$http_x_forwarded_for地址 awk '{print $NF}' access.log|sort |uniq -c |sort -rn|awk '{if ($1 > 50000){print $2}}' > tmp.txt
快速杀死所有nginx进程
// 通过 killall 命令 killall nginx // 通过 pkill 命令,类似于 pgrep + kill pkill nginx // 通过先查找再 kill 的方式 ps -ef | grep nginx | grep -v grep | awk '{print $2}' | xargs kill -9 // 用 cut -c 来截取指定位置的字符串 ps -ef | grep nginx | grep -v grep | cut -c 11-15 | xargs kill -9 // 通过 pgrep 指令,根据名字找出所有包含该名字的进程号 pgrep nginx | xargs kill -9 // 通过 pidof 指令,根据进程全名找出进程号 pidof nginx | kill -9 // 除了管道符的方式,也可以用命令替换,这样就不用通过 xargs 转换参数了 kill -9 `pgrep nginx`