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`
微信扫描下方的二维码阅读本文
正文完