nginx日志计算带宽

概述

nginx的日志中记录了$body_bytes_sent 字段,表示发送给客户端的字节数(不包括响应头的大小),通过计算该字段,然后乘以合理的TCP和HTTP损耗,就可以得出带宽的值。

实现方法

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
#get date
DATE=`date +%d/%b/%Y:%H:%M -d "2 min ago"`

TOTALBYTE1=`grep "$DATE" /data/nginxlog/aaa.com.log |awk '{print $11}' | cut -d '[' -f2|cut -d ']' -f1 | grep -v - | awk '{sum+=$1} END {printf ("%.2f\n",sum*8/60/1024/1024*1.09)}' `

TOTALBYTE2=`grep "$DATE" /data/nginxlog/bbb.log |awk '{print $11}' | cut -d '[' -f2|cut -d ']' -f1 |grep -v -| awk '{sum+=$1} END {printf ("%.2f\n",sum*8/60/1024/1024*1.09)}' `
#TCP损耗+9%,最终单位是Mbps
echo "aaa.com : $TOTALBYTE1 Mbps"
echo "bbb.com: $TOTALBYTE2 Mbps"
Donate