awk的常用操作场景以及工作中涉及到的一些场景实例
2014-04-15 21:19
441 查看
废话不多说,直接上这个实例:
一. 统计apache日志单ip访问请求数排名:
假设apache日志内容access.log内容为:
一般的做法是:
一直在思考 统计IP最多的数的意义何在?
其实,一般单个IP访问数量过百,就值得怀疑了,如果短时间内上万PV访问,说明就不正常了,可以采取相应的处理手段,比如封掉此IP,此法要慎重,否则,可能会有误封问
题,因为,国内的大多数公司还是NAT上网的,出口一个IP。
二. 统计服务器当前单IP连接数最大的IP地址前十
使用netstat -an >>test.log 可以将连接到服务器的一些基本信息重定向到文本文件中,假设内容如下:
使用awk可以统计出ESTABLISHED的一些IP的链接信息:
两种案例的反思:
对于命令结果中,单IP结尾的数大的,可以认为是不正常的访问。如 121.31.42.148 100 ,表示一个IP有100个连接
一般来说可以怀疑不正常,当网站压力大时,可以考虑限制或封掉这些冒似非法IP,当然,也不排除,企业里多个用户用一个出口IP访问。
壮士扼腕,有时也是必须的,否则,可能网站整体影响更大,甚至瘫痪。有时,各种搜索引擎的爬虫是很疯狂的,通过本例及上面的案例,我们可以再负载IO高时,能够进行临
时应对,当然,这不是长久的方法,优化网络和服务器,部署大规模集群服务器才是较好的解决之道。
我们可以使用awk进行简单地统计线上服务器的一些负载,保证服务器的高效运行。
一. 统计apache日志单ip访问请求数排名:
假设apache日志内容access.log内容为:
10.0.0.41 - - [03/Dec/2010:23:27:01 +0800] "HEAD /checkstatus.jsp HTTP/1.0" 200 - 10.0.0.43 - - [03/Dec/2010:23:27:01 +0800] "HEAD /checkstatus.jsp HTTP/1.0" 200 - 10.0.0.42 - - [03/Dec/2010:23:27:01 +0800] "HEAD /checkstatus.jsp HTTP/1.0" 200 - 10.0.0.46 - - [03/Dec/2010:23:27:02 +0800] "HEAD /checkstatus.jsp HTTP/1.0" 200 - 10.0.0.42 - - [03/Dec/2010:23:27:02 +0800] "HEAD /checkstatus.jsp HTTP/1.0" 200 - 10.0.0.47 - - [03/Dec/2010:23:27:02 +0800] "HEAD /checkstatus.jsp HTTP/1.0" 200 - 10.0.0.41 - - [03/Dec/2010:23:27:02 +0800] "HEAD /checkstatus.jsp HTTP/1.0" 200 - 10.0.0.47 - - [03/Dec/2010:23:27:02 +0800] "HEAD /checkstatus.jsp HTTP/1.0" 200 - 10.0.0.41 - - [03/Dec/2010:23:27:03 +0800] "HEAD /checkstatus.jsp HTTP/1.0" 200 - 10.0.0.46 - - [03/Dec/2010:23:27:03 +0800] "HEAD /checkstatus.jsp HTTP/1.0" 200 -
一般的做法是:
[root@localhost /]# awk '{print $1}' access.log|sort|uniq -c |sort -rn -k1 3 10.0.0.41 2 10.0.0.47 2 10.0.0.46 2 10.0.0.42 1 10.0.0.43
一直在思考 统计IP最多的数的意义何在?
其实,一般单个IP访问数量过百,就值得怀疑了,如果短时间内上万PV访问,说明就不正常了,可以采取相应的处理手段,比如封掉此IP,此法要慎重,否则,可能会有误封问
题,因为,国内的大多数公司还是NAT上网的,出口一个IP。
二. 统计服务器当前单IP连接数最大的IP地址前十
使用netstat -an >>test.log 可以将连接到服务器的一些基本信息重定向到文本文件中,假设内容如下:
Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local AddressForeign AddressState tcp00 124.123.3.79:80219.85.194.23:12004SYN_RECV tcp00 124.123.3.77:80183.8.74.57:3276SYN_RECV tcp00 124.123.3.77:80124.236.0.214:63191SYN_RECV tcp00 124.123.3.77:80121.31.42.148:2338TIME_WAIT tcp01023 124.123.3.77:8061.178.184.222:62683FIN_WAIT1 tcp00 124.123.3.77:80222.79.242.74:7416TIME_WAIT tcp04839 124.123.3.77:80121.31.42.148:30638FIN_WAIT1 tcp00 124.123.3.77:80183.10.154.60:37282TIME_WAIT tcp01 124.123.3.77:8059.49.174.176:26913CLOSING tcp00 124.123.3.77:80121.31.42.148:1787TIME_WAIT tcp0174 124.123.3.77:80183.8.74.57:1165CLOSING
使用awk可以统计出ESTABLISHED的一些IP的链接信息:
netstat -an|grep EST|awk-F '[ :]+' '{++S[$6]} END {for (key in S) print "ip:"key"----->",S[key]}'|sort -rn -k2 注意,这里过滤的是已经建立连接的的连接,即状态ESTABLISHED。
两种案例的反思:
对于命令结果中,单IP结尾的数大的,可以认为是不正常的访问。如 121.31.42.148 100 ,表示一个IP有100个连接
一般来说可以怀疑不正常,当网站压力大时,可以考虑限制或封掉这些冒似非法IP,当然,也不排除,企业里多个用户用一个出口IP访问。
壮士扼腕,有时也是必须的,否则,可能网站整体影响更大,甚至瘫痪。有时,各种搜索引擎的爬虫是很疯狂的,通过本例及上面的案例,我们可以再负载IO高时,能够进行临
时应对,当然,这不是长久的方法,优化网络和服务器,部署大规模集群服务器才是较好的解决之道。
我们可以使用awk进行简单地统计线上服务器的一些负载,保证服务器的高效运行。
相关文章推荐
- 涉及数据包的一些操作 的常用工具以及库
- mysql常用字符串操作函数大全,以及实例
- Postgresql常用的表字段操作语句以及其他一些SQL语句
- mysql常用字符串操作函数大全,以及实例
- 关于es6的一些常用关键字以及set与数组的操作
- 关于过去工作的一些总结:常用sql语句以及数据库查询优化
- mysql常用字符串操作函数大全,以及实例
- mysql常用字符串操作函数大全,以及实例
- CRecordset类的常用成员函数 成员变量 以及操作实例
- 通过实例讲解AWK一些基本操作
- sql T_sql 关于字符串的一些常用操作实例
- CRecordset类的常用成员函数 成员变量 以及操作实例
- STL vector 一些常用的操作总结 以及 程序运行对应的结果
- jquery validate自定义扩展实例,以及一些常用验证
- mysql常用字符串操作函数大全,以及实例
- sed和awk入门以及vim常用操作
- File操作一些常用场景
- mysql常用字符串操作函数大全,以及实例
- bitmap的一些常用操作:读图片文件、图片缩放和旋转、将图片二进制转化为bitmap,以及图片加密,解密
- sed和awk入门以及vim常用操作