仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2675|回复: 9
打印 上一主题 下一主题

[CentOS(社区)] 给大家带来Apache/Nginx 拜访日记剖析python剧本

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 20:45:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!剧本功效:
剧本采取python2.7编写,用来剖析Apahce的拜访日记


剧本用法:
  1. 剧本名Apache的拜访日记[想要显示的行数]
复制代码

更新:


1.第二版:增长显示指定的行数
2.增长Nginx日记剖析剧本


剧本履行后果以下:



剧本内容以下:
nginx拜访日记剖析剧本
[code]<olclass="dp-pylist-paddingleft-2"><liclass="alt">#!/usr/bin/envpython
#coding=utf-8
<liclass="alt">
#------------------------------------------------------
<liclass="alt">#Name:nginx日记剖析剧本
#Purpose:此剧本只用来剖析nginx的拜访日记
<liclass="alt">#Version:1.0
#Author:LEO
<liclass="alt">#BLOG:http://linux5588.blog.51cto.com
#EMAIL:chanyipiaomiao@163.com
<liclass="alt">#Created:2013-05-07
#Modified:2013-05-07
<liclass="alt">#Copyright:(c)LEO2013
#------------------------------------------------------
<liclass="alt">
importsys
<liclass="alt">importtime

<liclass="alt">#该类是用来打印格局
classdisplayFormat(object):
<liclass="alt">
defformat_size(self,size):
<liclass="alt">格局化流量单元
KB=1024#KB->BB是字节
<liclass="alt">MB=1048576#MB->B
GB=1073741824#GB->B
<liclass="alt">TB=1099511627776#TB->B
ifsize>=TB:
<liclass="alt">size=str(size/TB)+T
elifsize<KB:
<liclass="alt">size=str(size)+B
elifsize>=GBandsize<TB:
<liclass="alt">size=str(size/GB)+G
elifsize>=MBandsize<GB:
<liclass="alt">size=str(size/MB)+M
else:
<liclass="alt">size=str(size/KB)+K
returnsize
<liclass="alt">
#界说字符串格局化
<liclass="alt">formatstring=%-15s%-10s%-12s%8s%10s%10s%10s%10s%10s%10s%10s

<liclass="alt">deftransverse_line(self):
输入横线
<liclass="alt">printself.formatstring%(-*15,-*10,-*12,-*12,-*10,-*10,-*10,-*10,-*10,-*10,-*10)

<liclass="alt">defhead(self):
输入头部信息
<liclass="alt">printself.formatstring%(IP,Traffic,Times,Times%,200,404,500,403,302,304,503)

<liclass="alt">deferror_print(self):
输入毛病信息
<liclass="alt">print
printUsage:+sys.argv[0]+NginxLogFilePath[Number]
<liclass="alt">print
sys.exit(1)
<liclass="alt">
defexecut_time(self):
<liclass="alt">输入剧本履行的时光
print
<liclass="alt">print"ScriptExecutionTime:%.3fsecond"%time.clock()
print
<liclass="alt">
#该类是用来生成主机信息的字典
<liclass="alt">classhostInfo(object):
host_info=[200,404,500,302,304,503,403,times,size]
<liclass="alt">
def__init__(self,host):
<liclass="alt">self.host=host={}.fromkeys(self.host_info,0)

<liclass="alt">defincrement(self,status_times_size,is_size):
该办法是用来给host_info中的各个值加1
<liclass="alt">ifstatus_times_size==times:
self.host[times]+=1
<liclass="alt">elifis_size:
self.host[size]=self.host[size]+status_times_size
<liclass="alt">else:
self.host[status_times_size]+=1
<liclass="alt">
defget_value(self,value):
<liclass="alt">该办法是取到各个主机信息中对应的值
returnself.host[value]
<liclass="alt">
#该类是用来剖析文件
<liclass="alt">classfileAnalysis(object):
def__init__(self):
<liclass="alt">初始化一个空字典
self.report_dict={}
<liclass="alt">self.total_request_times,self.total_traffic,self.total_200,
self.total_404,self.total_500,self.total_403,self.total_302,
<liclass="alt">self.total_304,self.total_503=0,0,0,0,0,0,0,0,0

<liclass="alt">defsplit_eachline_todict(self,line):
朋分文件中的每行,并前往一个字典
<liclass="alt">split_line=line.split()
split_dict={remote_host:split_line[0],status:split_line[8],
<liclass="alt">bytes_sent:split_line[9],}
returnsplit_dict
<liclass="alt">
defgenerate_log_report(self,logfile):
<liclass="alt">读取文件,剖析split_eachline_todict办法生成的字典
forlineinlogfile:
<liclass="alt">try:
line_dict=self.split_eachline_todict(line)
<liclass="alt">host=line_dict[remote_host]
status=line_dict[status]
<liclass="alt">exceptValueError:
continue
<liclass="alt">exceptIndexError:
continue
<liclass="alt">
ifhostnotinself.report_dict:
<liclass="alt">host_info_obj=hostInfo(host)
self.report_dict[host]=host_info_obj
<liclass="alt">else:
host_info_obj=self.report_dict[host]
<liclass="alt">
host_info_obj.increment(times,False)
<liclass="alt">ifstatusinhost_info_obj.host_info:
host_info_obj.increment(status,False)
<liclass="alt">try:
bytes_sent=int(line_dict[bytes_sent])
<liclass="alt">exceptValueError:
<p><spanstyle="padding:0px;margin:0px;border:none;color:#505050;background-color:inherit;">bytes_sent=
透明 该用户已被删除
沙发
发表于 2015-1-16 22:26:18 | 只看该作者

给大家带来Apache/Nginx 拜访日记剖析python剧本

linux鸟哥的私房菜,第三版,基础篇,网上有pdf下的,看它的目录和每章的介绍就行了,这个绝对原创!
板凳
发表于 2015-1-20 19:53:28 | 只看该作者
熟悉并掌握安装Linux,安装是学习的前提。目前较常见的安装方法有二种:
爱飞 该用户已被删除
地板
发表于 2015-1-29 19:23:16 | 只看该作者
当然你不需搭建所有服务,可以慢慢来。自己多动手,不要非等着别人帮你解决问题。
蒙在股里 该用户已被删除
5#
发表于 2015-2-6 03:40:43 | 只看该作者
下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题。
海妖 该用户已被删除
6#
发表于 2015-2-15 17:35:27 | 只看该作者
熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。
因胸联盟 该用户已被删除
7#
发表于 2015-3-4 13:33:06 | 只看该作者
在学习的过程中,我们用的是VM虚拟机,开始时真的不真的该怎么去做,特别是我的是命令窗口界面,别人的是图形界面,我都不知道怎么调过来。
莫相离 该用户已被删除
8#
发表于 2015-3-11 19:56:45 | 只看该作者
然我们对Linux的学习首先是通过对它的产生,发展,到今天仍然在不断完善开始的。
小女巫 该用户已被删除
9#
发表于 2015-3-19 12:51:31 | 只看该作者
熟悉并掌握安装Linux,安装是学习的前提。目前较常见的安装方法有二种:
愤怒的大鸟 该用户已被删除
10#
发表于 2015-3-28 15:44:38 | 只看该作者
我想即使Linux高手也很难快速准确精练的回答你。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-29 01:56

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表