#java爬蟲gecco監控來了,再也不裸奔 ##爬蟲爲何要監控 gecco是一個十分簡單易用的java開源爬蟲框架,同時也一個款擁有很好擴展性的框架,目前已經有:html
結合spring的插件gecco-springjava
結合htmlunit的插件gecco-htmlunitgit
結合reids的插件gecco-reidsgithub
在開發爬蟲時,因爲要對不少網站和連接進行抓取,並對抓取下來的網站進行內容的抽取。大量的連接下載和內容抽取若是沒有監控,很難發現問題。特別是對於主題爬蟲,須要抽取頁面的具體內容,若是網站改版務必要能儘快的發現並修正,gecco爬蟲框架在完成了基本的框架和必要的插件的實現後,將重點放在了監控的開發上。redis
對擴展開放,對修改關閉的開閉原則一致是gecco框架的基本設計原則。gecco爬蟲的監控模塊一樣基於該原則,基於jmx協議,使用aop模式。spring
##監控指標 ###爬蟲基本信息安全
-
刷新基本信息:exec/com.geccocrawler.gecco:name=gecco/monitorapp
-
讀取基本信息:read/com.geccocrawler.gecco:name=gecco框架
{ Interval: 5000,//抓取間隔時間ms StartTime: "2016-03-20 20:34:11",//抓取開始時間 ThreadCount: 1,//爬蟲線程數量 StarUrlCount: 8//初始url數量 }
###下載監控網站
-
獲取當前正在抓取的全部域名:exec/com.geccocrawler.gecco:name=downloader/hosts
-
獲取某個域名的下載監控信息:exec/com.geccocrawler.gecco:name=downloader/statistics/xx.xx.com
-
讀取下載監控信息:read/com.geccocrawler.gecco:name=downloader
Statistics: "{ "exception":8,//該域名抓取異常的數量,主要是超時等異常 "serverError":0,//該域名返回500,404等錯誤信息的數量 "success":3263//成功抓取數量 }", Host: "xx.xx.com"//域名
###內容抽取監控
-
刷新內容抽取監控信息:exec/com.geccocrawler.gecco:name=render/refresh
-
獲取內容抽取監控信息:read/com.geccocrawler.gecco:name=render
Statistics: "{ "xx.xx.com":0,//域名xx.xx.com的網站內容抽取的異常數量 "yy.yy.com":0//域名yy.yy.com的網站內容抽取的異常數量 }"
##jmxutils和jolokia ###jmxutils gecco的監控使用了jmxutils這個開源的mbean註解框架。在之前的開發工做中要麼就用原生的動態mbean,要麼是使用spring的jmx註解框架。原生的動態mbean寫起來太繁瑣,spring的jmx註解框架使用起來仍是很方便的,可是如今spring感受有些重。jmxutils這個框架很輕量,使用方法能夠參考https://github.com/martint/jmxutils。 ###jolokia Jolokia是一個利用JSON經過Http實現JMX遠程管理的開源項目。具備快速、簡單等特色。除了支持基本的JMX操做以外,它還提供一些獨特的特性來加強JMX遠程管理如:批量請求,細粒度安全策略等。也就是說jmx的mbean能夠經過http來訪問不須要在啓動java時配置那麼多參數。只須要新增一個servlet:
<servlet> <servlet-name>jolokia-agent</servlet-name> <servlet-class>org.jolokia.http.AgentServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>jolokia-agent</servlet-name> <url-pattern>/jmx/*</url-pattern> </servlet-mapping>
這樣應用中的mbean就能輕鬆控制和訪問。jolokia還提供了java客戶端和js客戶端來訪問mbean,具體的使用方法和權限控制能夠查看jolokia的官方文檔https://jolokia.org/reference/html/index.html