通過(guò)案例學(xué)功能 監(jiān)控寶自定義監(jiān)控功能初探
IT系統(tǒng)千差萬(wàn)別,即便是通用的Java、PHP也會(huì)由于版本的差異,配置和接口存在大同而小異,但往往就是這些小差別,會(huì)對(duì)系統(tǒng)的穩(wěn)定性和性能產(chǎn)生大影響。市面上的IT監(jiān)控產(chǎn)品都只能對(duì)標(biāo)準(zhǔn)應(yīng)用的流行版本進(jìn)行準(zhǔn)確監(jiān)控,對(duì)于分支版本或企業(yè)自己開(kāi)發(fā)的應(yīng)用系統(tǒng)則需要大量的定制開(kāi)發(fā)才能實(shí)現(xiàn)監(jiān)控,而云智慧監(jiān)控寶提供一種簡(jiǎn)單靈活的監(jiān)控手段——自定義監(jiān)控,讓你輕松搞定各種應(yīng)用系統(tǒng)的性能監(jiān)控。
下面就用監(jiān)控寶一個(gè)客戶的案例讓大家認(rèn)識(shí)一下自定義監(jiān)控。
前一段時(shí)間,某著名商業(yè)企業(yè)上線了他們的Tmall系統(tǒng),云智慧監(jiān)控寶為其提供了從服務(wù)器、應(yīng)用服務(wù)和API接口的監(jiān)控服務(wù),除此之外,該企業(yè)還期望通過(guò)交易日志分析了解訂單的狀態(tài)和性能統(tǒng)計(jì),這部分功能并非監(jiān)控寶產(chǎn)品自帶功能,為此云智慧基于監(jiān)控寶自定義監(jiān)控功能進(jìn)行了定制開(kāi)發(fā),來(lái)實(shí)現(xiàn)Tmall系統(tǒng)日志分析和監(jiān)控功能。
監(jiān)控部署方面比較麻煩,因?yàn)門(mén)mall系統(tǒng)是第三方的,非常不愿意我們?nèi)ケO(jiān)控他們,有很多限制條件,比如不允許日志服務(wù)器向外網(wǎng)請(qǐng)求,我們的采集服務(wù)只能請(qǐng)求日志服務(wù)器,但最終都得到了圓滿的解決。
下面就看看我們?cè)趺从米远x監(jiān)控搞定Tmall日志監(jiān)控的。
首先,用Python寫(xiě)了一個(gè)增量日志分析程序,根據(jù)Tmall提供的規(guī)則把企業(yè)所需要的監(jiān)控指標(biāo)數(shù)據(jù)比如訂單總數(shù)、失敗訂單數(shù)、退款訂單數(shù)以及退款失敗訂單數(shù)從第三方的日志文件中讀取出來(lái),并寫(xiě)入我們自己的日志中。
然后,在內(nèi)網(wǎng)采集器中增加了一個(gè)自定義監(jiān)控的插件,來(lái)請(qǐng)求這個(gè)日志分析程序獲得監(jiān)控指標(biāo)數(shù)據(jù)。
最后,在監(jiān)控寶自定義監(jiān)控中增加了一個(gè)監(jiān)控項(xiàng)目,選擇采集器Python本地獲取數(shù)據(jù),實(shí)現(xiàn)了這個(gè)需求。在部署上,內(nèi)網(wǎng)采集器獨(dú)立部署在一臺(tái)能夠訪問(wèn)公網(wǎng)的服務(wù)器上,日志分析程序部署在第三方的日志集中存儲(chǔ)服務(wù)器上。
由于在項(xiàng)目開(kāi)始的時(shí)候,沒(méi)有認(rèn)真研究客戶日志樣例文件和規(guī)則說(shuō)明,所以走了一些彎路,所幸很快校正過(guò)來(lái),把所有規(guī)則三方確認(rèn)后升級(jí)了一版并最終搞定。這里提醒各位做項(xiàng)目的,項(xiàng)目管理控制必要的步驟不能省,債早晚都是要還的。。。
這個(gè)項(xiàng)目是典型的先苦后甜,雖然前期掉了不少坑,但后來(lái)通過(guò)監(jiān)控寶發(fā)現(xiàn)了不少Tmall系統(tǒng)的問(wèn)題,在客戶面前證明了產(chǎn)品的價(jià)值,細(xì)節(jié)涉及隱私,略過(guò)不提。
通過(guò)這個(gè)案例給大家講講監(jiān)控寶自定義監(jiān)控,這是我們產(chǎn)品中藏著的一把瑞士軍刀,但由于這個(gè)功能是免費(fèi)的,所以很多用戶反而不太了解。
那么監(jiān)控寶為什么會(huì)提供這個(gè)功能呢?
監(jiān)控寶靠網(wǎng)站監(jiān)控打開(kāi)了一片天地,后來(lái)增加了服務(wù)器和服務(wù)監(jiān)控,并逐漸支持Apache、Nginx等典型Web應(yīng)用,在這個(gè)過(guò)程中我們發(fā)現(xiàn),即使提供再多的標(biāo)準(zhǔn)服務(wù)也無(wú)法覆蓋廣大用戶不同版本、不同類(lèi)型的應(yīng)用,還有不少中、高級(jí)用戶會(huì)根據(jù)需求自己開(kāi)發(fā)的個(gè)性化應(yīng)用。
對(duì)監(jiān)控來(lái)說(shuō),簡(jiǎn)單說(shuō)就是采集數(shù)據(jù)、分析結(jié)果、給出告警這三個(gè)步驟,而客戶的各類(lèi)個(gè)性化應(yīng)用對(duì)我們來(lái)說(shuō)最難的一點(diǎn)在于數(shù)據(jù)采集。監(jiān)控寶自定義監(jiān)控的工作原理非常簡(jiǎn)單,就是將數(shù)據(jù)采集標(biāo)準(zhǔn)化,我們制定了一個(gè)標(biāo)準(zhǔn)格式的數(shù)據(jù)交換文件。
<pre>
minEnqueueTime:0.0
expiredCount:0
storePercentUsage:0
dequeueCount:906
memoryUsage:96692
consumerCount:3
memoryPercentUsage:0
averageEnqueueTime:14668.775461866415
maxEnqueueTime:1205901.0
dispatchCount:2090
size:92
producerCount:1
enqueueCount:5567
tempPercentUsage:0
</pre>
<pre></pre>是必須有的,minEnqueueTime、expiredCount等這些都是我們定義的監(jiān)控指標(biāo),冒號(hào)之后是對(duì)應(yīng)的指標(biāo)值,這個(gè)文件是通過(guò)界面的方式定義。
定義好這個(gè)規(guī)則之后,剩下的就簡(jiǎn)單了,讓被監(jiān)控的目標(biāo)程序或是應(yīng)用把指標(biāo)寫(xiě)成這種格式的文件,做成一個(gè)可以被http請(qǐng)求到的資源,不斷的把指標(biāo)數(shù)據(jù)值寫(xiě)進(jìn)來(lái)。之后在自定義監(jiān)控中創(chuàng)建監(jiān)控項(xiàng)目,選擇這個(gè)規(guī)則,就可以了。
舉例說(shuō)明:
ActiveMQ 是Apache的開(kāi)源消息總線,如果用自定義監(jiān)控如何實(shí)現(xiàn)ActiveMQ的監(jiān)控需求呢?
第一步,整理出ActiveMQ監(jiān)控的指標(biāo)要求
第二步,寫(xiě)個(gè)程序讀取ActiveMQ的指標(biāo)數(shù)據(jù),這里用到了statistics plugin ,在ActiveMQ中配置一下即可。
<broker …>
<plugins>
<statisticsBrokerPlugin/>
</plugins>
</broker>
配置項(xiàng)灰常簡(jiǎn)單,用java寫(xiě)個(gè)進(jìn)程隔幾秒鐘取一次指標(biāo),代碼比較挫,可以無(wú)視。
主要是看輸出文件位置:"/Users/jason/workspace/tomcat7065/webapps/root/mqkeyindex.html"
在本機(jī)裝個(gè)tomcat,這個(gè)位置就是默認(rèn)的應(yīng)用目錄,mqkeyindex.html就是我們定義的規(guī)則文件。
至此,監(jiān)控指標(biāo)讀取和輸出完畢,這部分工作一般是客戶自己完成,或是云智慧的工程師來(lái)幫客戶以項(xiàng)目方式完成,該企業(yè)的日志分析程序就是類(lèi)似這樣的。
再后面就是監(jiān)控寶自定義監(jiān)控的工作了。
因?yàn)閠omcat在本機(jī),外網(wǎng)訪問(wèn)不到,所以需要安裝一個(gè)采集器,選擇好自定義監(jiān)控插件即可。操作過(guò)程略過(guò)。
非常新鮮,剛剛創(chuàng)建的。
創(chuàng)建一個(gè)自定義監(jiān)控。
規(guī)則是提前建好的,指標(biāo)多創(chuàng)建起來(lái)好麻煩的說(shuō)。
這個(gè)是創(chuàng)建頁(yè)面,這里面的狀態(tài)頁(yè)其實(shí)就是我之前/Users/jason/workspace/tomcat7065/webapps/root/mqkeyindex.html輸出的格式。
這個(gè)規(guī)則是對(duì)照著輸出結(jié)果創(chuàng)建的,而用采集器解決了外網(wǎng)訪問(wèn)不了的問(wèn)題。
上面提到的那家咖啡企業(yè)是采用了“執(zhí)行內(nèi)部文件獲取數(shù)據(jù)”的方式,和這個(gè)方式不太一樣,不過(guò)這是最簡(jiǎn)單和常用的方式。另外,在規(guī)則定義中可以定義圖和線的,
最后給大家看下效果吧。
自定義監(jiān)控功能非常強(qiáng)大的,如果數(shù)據(jù)采集輸出環(huán)節(jié)技術(shù)難度不大的話,可以非??焖俚母愣ㄒ粋€(gè)客戶的特殊監(jiān)控需求,所以很多老用戶都最?lèi)?ài)自定義監(jiān)控功能。接下來(lái)我們會(huì)為您介紹監(jiān)控寶自定義監(jiān)控的詳細(xì)用法,敬請(qǐng)期待。