首页 > 技术文章 > nginx常用运维日志分析命令

caidingyu 2019-11-27 19:55 原文

 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`

  

 

推荐阅读