嗨,我已经有一个WordPress插件
[https://wordpress.org/plugins/strictly-system-check/]Srictly系统检查[1],让我知道当我的服务器/网站出现故障时。服务器负载为2.50,Swap为X,内存使用量为X,页面加载时间过长,当检索期望的页面时检测不到200状态码,页面上没有找到文本,数据库连接过多,查询速度过慢,打开连接,查询没有索引内存使用情况,PHP内存使用情况等等。PERL/PHP解析APACHE访问日志
但是我希望能够解析我的Apache和错误日志文件,并将它们连接在一起,以便更清楚地了解停机时正在发生的事情,例如此页面被命中X次,此IP也触发很多次等等,所以我可以在停机时间去 当服务器负载为3.00并且正在交换到磁盘X RAM并且页面花费了60秒加载,平均查询等待时间为20秒这也是 - IP地址前10位是IP地址(带反向IP &地理位置) - 如果可能的话,前10位引用者是... - 顶级10位NON SERP IP(忽略已知安全BOT IO的列表) - 最后十位错误时间范围内的错误,例如10分钟+/-是
所以我有这些问题(和我是一个PERL小白 - 可以做PHP虽然)]]
-Taking上解析Apache日志文件为例[http://www.leancrew.com/all-this/2013/07/parsing-my-apache-logs/][1]
- 这篇文章能对我只需将PERL脚本直接运行到BASH即可获得结果?
- 我可以将它保存为一个文件,然后构建成按需运行的插件作为调用usage.pl?
原因的困惑是,在顶部,他说,他通过在无天的传递给它如top5log 25 < apache.log
称之为但随后的脚本的例子仅仅是一个糊到BASH
#!的/ usr/bin中/ Python的 3进口重新 4种进口SYS
所以AA新手我怎么把我的新特等PERL脚本和T在什么地方保存母鸡运行它,如何按需运行?
- 如何找到我自己的日志文件格式,因为我没有看到与我使用的通用日志格式相匹配的日志文件格式。
从我的日志文件的一个例子是线
12.201.2.12 - - [25 /月/ 2014:03:20:01 0000]“GET /wp-cron.php?doing_wp_cron HTTP/1.1" 200 26‘ - ’‘StrictlyCron’2971379分之2
我如何找到 一)在我的格式定义(在Apache的配置检查) b)和它涉及到如(Apache的2条线是什么日志文件)
远程IP - [请求日期] [VERB请求的页面/文件] [状态]? [/]/GET/2014/08/somepage-of-mine/HTTP/1.1“200 18956” - “”Mozilla/5.0(compatible; bingbot/2。0; + http://www.bing.com/bingbot.htm)“1/1457264 5.9.40.98 - - [25/Nov/2014:03:23:44 +0000]”GET/2014/11/somepage/HTTP/1.1“200 16653” - “”Mozilla/5.0 (Windows NT 6.0; rv:13.0)Gecko/20100101 Firefox/13.0.1“0/901549
因此,一旦我知道我需要转换的格式已经找到,我只需要修改他的脚本正则表达式,一旦我知道每一段的意思。
# Regex for the Apache common log format.
parts = [
r'(?P<host>\S+)', # host %h
r'\S+', # indent %l (unused)
r'(?P<user>\S+)', # user %u
r'\[(?P<time>.+)\]', # time %t
r'"(?P<request>.*)"', # request "%r"
r'(?P<status>[0-9]+)', # status %>s
r'(?P<size>\S+)', # size %b (careful, can be '-')
r'"(?P<referrer>.*)"', # referrer "%{Referer}i"
r'"(?P<agent>.*)"', # user agent "%{User-agent}i"
]
现在我已经习惯了在大多数语言,但从来没有在PERL也是如此R '“(?P)\ S +)'”使用正则表达式,等同于 R' “()” ',==捕获组OR或者隐藏在'“(和)”' (?P ==商店组? (?P ==通过OR引用组的名称,例如[0]或[2]是否可以通过索引执行? (ΔP。)==组的内容,所以真的“‘()’”
之间“‘和’”一切有一次,我可以重新洗牌要我自己的格式他正则表达式模式,其是不常见的,那么我认为我可以处理其余的代码 - 只需要一些保存和运行.pl或PERL脚本的指针。
此外,如果我可以从我的网络服务器运行SHELL_EXEC什么是运行perl脚本的最佳方式是它的文件名或长行由行分隔的文件,如在示例中?
这看起来像一个很好的脚本,如果我能得到它的工作,看到我没有CGI安全漏洞的AWE Stats。
任何帮助将不胜感激。
感谢
罗布
好的,谢谢,我怎么在我的控制台运行此。我认为我需要首先以某种方式打开perl,然后再复制它,而不像BASH脚本? – MonkeyMagix 2015-01-06 12:50:45