嗨,我已經有一個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