统计linux nginx访问次数及并发连接数

https://www.cnblogs.com/shiqing-zhang/articles/14888827.html

 

访问量统计

1.根据访问IP统计UV

awk '{print $1}' access.log|sort | uniq -c |wc -l

2.统计访问URL统计PV

awk '{print $7}' access.log|wc -l

3.查询访问最频繁的URL

awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more

4.查询访问最频繁的IP

awk '{print $1}' access.log|sort | uniq -c |sort -n -k 1 -r|more

5.根据时间段统计查看日志

cat access.log| sed -n '/14/Mar/2015:21/,/14/Mar/2015:22/p'|more

6.查看Web服务器进程连接数:

netstat -antp | grep 80 | grep ESTABLISHED -c

7.查看Web服务器(Nginx Apache)的并发请求数及其TCP连接状态:

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

参数说明:
CLOSED:无连接是活动的或正在进行
ESTABLISHED:正常数据传输状态
TIME_WAIT:处理完毕,等待超时结束的请求数
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉

 

-----------------------脚本模板

 

#!/bin/bash
#分析nginx日志,等到一些关键信息
#nginx日志格式
# log_format main '"$remote_addr" | "$time_local"| "$request" |'
# '"$status" | "$body_bytes_sent" | "$bytes_sent" |"$http_referer" |'
# '"$http_user_agent" | "$request_time" | "$upstream_addr"|"$upstream_response_time"|"$upstream_status" ';

#基本信息
nginx_log=/nginx/logs/access.log
tmp_analysis_log=/tmp/analysis.log
tomcat01=192.186.100.11:8080
tomcat02=192.168.100.12:8080
#获取前1分钟的时间格式
date_time=`date '+%d/%b/%Y:%k:%M' -d '-1 min'`
grep "$date_time" $nginx_log > $tmp_analysis_log
#统计
#总请求数
total_requests=`cat $tmp_analysis_log |wc -l`
#独立ip个数
ip_number_uniq=`cat $tmp_analysis_log | awk -F'|' '{print $1}'|uniq|wc -l`
#get请求个数
get_requerst_number=`cat $tmp_analysis_log |grep -w 'GET'|wc -l`
#post请求个数
post_requerst_number=`cat $tmp_analysis_log |grep -w 'POST'|wc -l`
#其他请求个数
other_requerst_number=`cat $tmp_analysis_log |grep -v -w 'POST'|grep -v -w 'GET'|wc -l`

#接口数
adasPlat_port_number=`cat $tmp_analysis_log |grep '/port/' |wc -l`

#负载到不同IP的次数
tomcat_ip_01=`cat $tmp_analysis_log |grep "$tomcat01" |wc -l`
tomcat_ip_02=`cat $tmp_analysis_log |grep "$tomcat02" |wc -l`
#tomcat后端统计
upstream_time_sum=0
upstream_time_max=0
upstream_time_min=1000000
byte_sent_sum=0
while read line;
do
upstream_time=`echo "$line" |awk -F'"' '{print $22}'`
#tomcat后端响应时长最大值,最小值寻找
if [[ $upstream_time > $upstream_time_max ]];then
upstream_time_max=$upstream_time
fi
if [[ $upstream_time < $upstream_time_min ]];then
upstream_time_min=$upstream_time
fi
#tomcat后端响应时长总时长
upstream_time_sum=$[${upstream_time_sum} + ${upstream_time}]
#总流量统计
byte_sent=`echo "$line" |awk -F'"' '{print $12}'`
byte_sent_sum=$[$byte_sent_sum + $byte_sent]
done < $tmp_analysis_log
byte_sent_sum02=`echo "scale=3;${byte_sent_sum}/1024" | bc |awk '{printf "%.3f",$0}'`

upstream_time_avg=`echo "scale=3;${upstream_time_sum}/${total_requests}" |bc |awk '{printf "%.3f",$0}'`
echo "总时长 $upstream_time_sum s"
echo "平均时长 $upstream_time_avg s"
echo "最小时长 $upstream_time_min s"
echo "最大时长 $upstream_time_max s"
echo "流量大小 $byte_sent_sum02 kb"

posted on   四海骄阳  阅读(2567)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
历史上的今天:
2021-08-19 linux防火墙配置
2021-08-19 Linux运维之防火墙之firewalld的管理
2021-08-19 CentOS 7 firewalld 配置详解 (转)

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

了解更多