一、什么是應(yīng)用級監(jiān)控系統(tǒng)
所謂應(yīng)用級監(jiān)控,也有被稱做應(yīng)用監(jiān)控、交易監(jiān)控、業(yè)務(wù)監(jiān)控。與傳統(tǒng)的面向服務(wù)器、網(wǎng)絡(luò)、操作系統(tǒng)、數(shù)據(jù)庫等系統(tǒng)級監(jiān)控相區(qū)別的是,應(yīng)用級監(jiān)控更關(guān)注從應(yīng)用角度來進(jìn)行監(jiān)控,包括對應(yīng)用程序(應(yīng)用進(jìn)程、端口、應(yīng)用隊列等)、交易處理(交易量、交易耗時、交易成功率、返回碼等)、業(yè)務(wù)處理(業(yè)務(wù)統(tǒng)計、業(yè)務(wù)體驗)等方面的監(jiān)控。
二、為什么要有應(yīng)用級監(jiān)控系統(tǒng)
????在傳統(tǒng)的運(yùn)維中,由于開放式平臺標(biāo)準(zhǔn)化產(chǎn)品的特點(diǎn),通過使用IBM tivoli、HP OpenView、Oracle EM等標(biāo)準(zhǔn)化的商用監(jiān)控產(chǎn)品,數(shù)據(jù)中心能夠方便快捷地實(shí)現(xiàn)面向主機(jī)、服務(wù)器、網(wǎng)絡(luò)、存儲、環(huán)境動力、操作系統(tǒng)、數(shù)據(jù)庫、中間件等標(biāo)準(zhǔn)化軟硬件產(chǎn)品的監(jiān)控,并實(shí)現(xiàn)了各個專業(yè)的監(jiān)控事件和容量性能數(shù)據(jù)的集中展現(xiàn)和處理。
????但是近年來,隨著用戶體驗要求的不斷增強(qiáng),傳統(tǒng)這種標(biāo)準(zhǔn)軟硬件產(chǎn)品的系統(tǒng)級監(jiān)控工具,已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足高標(biāo)準(zhǔn)下的運(yùn)維要求了。這是因為:
1)很多故障發(fā)生時,在基礎(chǔ)服務(wù)層面并未明顯體現(xiàn)出來。比如說業(yè)務(wù)在使用系統(tǒng)時,發(fā)現(xiàn)有交易或業(yè)務(wù)處理非常緩慢,但監(jiān)控系統(tǒng)并沒有收到關(guān)于操作系統(tǒng)、網(wǎng)絡(luò)、數(shù)據(jù)庫、中間件等層面的自動報警。
2)系統(tǒng)級監(jiān)控缺少對各業(yè)務(wù)應(yīng)用交易的運(yùn)行情況(交易量、成功率、平均響應(yīng)時間等)的監(jiān)控,難以全面、準(zhǔn)確、及時地掌握業(yè)務(wù)應(yīng)用系統(tǒng)的運(yùn)行情況。
3)系統(tǒng)級監(jiān)控?zé)o法自動發(fā)現(xiàn)應(yīng)用拓?fù)潢P(guān)系和交易訪問路徑,并以此為基礎(chǔ)實(shí)現(xiàn)故障應(yīng)用系統(tǒng)的自動定位
4)系統(tǒng)級監(jiān)控?zé)o法將操作系統(tǒng)、中間件、數(shù)據(jù)庫、存儲、網(wǎng)絡(luò)、環(huán)境動力等IT基礎(chǔ)設(shè)施專業(yè)事件與各應(yīng)用系統(tǒng)的業(yè)務(wù)交易或系統(tǒng)交易事件關(guān)聯(lián)起來進(jìn)行自動故障樹分析。
上述系統(tǒng)級監(jiān)控的缺陷,導(dǎo)致了IT運(yùn)維中專業(yè)事件處理量大、業(yè)務(wù)影響分析困難、故障根源定位慢、故障節(jié)點(diǎn)難以自動隔離恢復(fù)等問題。相比于系統(tǒng)級監(jiān)控,應(yīng)用級監(jiān)控更貼近用戶和業(yè)務(wù),更能夠在第一時間反映出用戶體驗、業(yè)務(wù)使用和交易處理的真實(shí)情況,是在系統(tǒng)級監(jiān)控基礎(chǔ)上的進(jìn)一步發(fā)展和提升。
三、如何建設(shè)應(yīng)用級監(jiān)控系統(tǒng)
與系統(tǒng)級監(jiān)控一樣,應(yīng)用級監(jiān)控只是一個統(tǒng)稱,前面也提到了,應(yīng)用級監(jiān)控包含了對應(yīng)用程序(應(yīng)用進(jìn)程、端口、應(yīng)用隊列等)、交易處理(交易量、交易耗時、交易成功率、返回碼等)、業(yè)務(wù)處理(業(yè)務(wù)統(tǒng)計、業(yè)務(wù)體驗)等多方面、多指標(biāo)、多維度的監(jiān)控。針對不同的需求,有不同的實(shí)現(xiàn)思路、方法和工具。因此,建設(shè)一個應(yīng)用級監(jiān)控系統(tǒng),首先需要考慮的是我們的監(jiān)控需求、想要監(jiān)控的對象和實(shí)現(xiàn)的監(jiān)控目標(biāo)到底是什么,然后才能有針對性的建設(shè)應(yīng)用級監(jiān)控系統(tǒng)。需求不明確,不能針對性地選擇實(shí)現(xiàn)方法和工具,最終得到的結(jié)果肯定與預(yù)期是大相徑庭的。
從應(yīng)用級監(jiān)控的實(shí)現(xiàn)方式上,可以分為如下幾大類:
1)在服務(wù)端實(shí)現(xiàn)的應(yīng)用級監(jiān)控
服務(wù)端旁路:部署定位后通過SPAN,TAP旁路應(yīng)用訪問流量進(jìn)行Sniffer,解析網(wǎng)絡(luò)報文后再進(jìn)行各類TCP協(xié)議分析和性能采集(NPM)。它的優(yōu)點(diǎn)是非侵入式,對生產(chǎn)影響最小,缺點(diǎn)是難以適配多種協(xié)議,無法定位到問題代碼等。運(yùn)維部門方便推廣使用,能獲得服務(wù)及應(yīng)用、交易級別的監(jiān)控。使用服務(wù)器端旁路進(jìn)行應(yīng)用監(jiān)控的典型產(chǎn)品是天旦公司的BPC。
應(yīng)用服務(wù)器端代理:通過在應(yīng)用代碼中埋點(diǎn)來實(shí)現(xiàn)性能監(jiān)控BCI(ByteCode
Instrumentation)技術(shù)。優(yōu)點(diǎn)是可實(shí)現(xiàn)代碼級的監(jiān)控,缺點(diǎn)是它是侵入式的,對性能有輕微影響,可以實(shí)現(xiàn)代碼級的監(jiān)控,效果依賴開發(fā)部門的支持。使用應(yīng)用服務(wù)器端代理的典型產(chǎn)品包括DynaTrace、聽云等。
應(yīng)用日志分析:通過對文本的應(yīng)用日志進(jìn)行實(shí)時的采集,提煉出需要的各個字段和記錄,進(jìn)行加工、清洗、分析、計算等,實(shí)現(xiàn)精確到秒級的應(yīng)用級監(jiān)控功能。優(yōu)點(diǎn)是非侵入式,只收集和分析日志,對生產(chǎn)影響小,缺點(diǎn)是監(jiān)控的詳細(xì)程度依賴于應(yīng)用日志中記錄的內(nèi)容,有時需要對應(yīng)用日志進(jìn)行適應(yīng)性改造。使用日志分析的典型產(chǎn)品包括splunk、日志易等,開源工具方面有ELK。
數(shù)據(jù)庫流水分析:通過監(jiān)控工具連接到數(shù)據(jù)庫流水表,定時抽取流水表中的記錄導(dǎo)入到工具平臺中,再對流水記錄進(jìn)行處理,實(shí)現(xiàn)應(yīng)用級監(jiān)控功能。優(yōu)點(diǎn)是流水表記錄已經(jīng)是格式化的數(shù)據(jù),比較方便分析和計算;缺點(diǎn)是數(shù)據(jù)抽取可能會對源系統(tǒng)有一定的性能影響,且實(shí)時性上會有分鐘級的延時。
2)在客戶端實(shí)現(xiàn)的應(yīng)用級監(jiān)控
主動模擬撥測:主動式、客戶端監(jiān)控。主要通過在部署客戶端部署自動化的監(jiān)測工具,進(jìn)行網(wǎng)頁或網(wǎng)站的可用性和性能監(jiān)測。適合于網(wǎng)絡(luò)帶來的問題,更適合互聯(lián)網(wǎng)應(yīng)用。比如博睿公司提供的網(wǎng)絡(luò)監(jiān)測服務(wù)。
頁面插入代碼:被動式、客戶端監(jiān)控。主要通過在客戶端瀏覽器插入JavaScript代碼以采集最終用戶的性能體驗,W3C推出了Web性能API標(biāo)準(zhǔn),現(xiàn)在已經(jīng)可以做大非常細(xì)粒度的監(jiān)控。侵入式,需要在瀏覽器上嵌入代碼,是被動監(jiān)控方式。
客戶端插件采集:因為移動端應(yīng)用有多種方式,原生應(yīng)用、Hybrid App以及Web App,因此監(jiān)控的方式也多樣化,有通過手機(jī)瀏覽器自動撥測、嵌入SDK、HTML5頁面內(nèi)插件、JSBridge等方式。
四、優(yōu)秀的應(yīng)用級監(jiān)控產(chǎn)品推薦
由于應(yīng)用級監(jiān)控的范圍很廣,且由于應(yīng)用的非標(biāo)準(zhǔn)化特點(diǎn),市場上也沒有一個產(chǎn)品能夠涵蓋應(yīng)用級監(jiān)控的方方面面。這里推薦幾款適合做應(yīng)用級監(jiān)控的產(chǎn)品。這些產(chǎn)品各有特定的用途,在建設(shè)應(yīng)用級監(jiān)控系統(tǒng)時,可根據(jù)用戶自身的需求選用合適的產(chǎn)品和工具:
1、splunk:日志分析類的工具的頂級產(chǎn)品。可以通過對應(yīng)用日志進(jìn)行實(shí)時的采集,提煉出需要的各個字段,進(jìn)行加工、清洗、分析、計算等,實(shí)現(xiàn)精確到秒級的應(yīng)用級監(jiān)控功能。
2、ELK:開源的用于日志分析的工具,功能與splunk相似,對于數(shù)據(jù)量大、實(shí)時性要求高的監(jiān)控系統(tǒng),需要與Hadoop、Spark、Flume等大數(shù)據(jù)開源組件結(jié)合起來使用。
3、BPC:網(wǎng)絡(luò)旁路流量分析工具。通過對網(wǎng)絡(luò)報文的收集和解析,能夠深入進(jìn)行應(yīng)用層的分析,實(shí)現(xiàn)交易在整條鏈路上的端到端的分析和監(jiān)控,當(dāng)交易發(fā)生異常或緩慢時快速發(fā)現(xiàn)具體是由哪個節(jié)點(diǎn)引起的。還能獲得交易量、交易耗時、成功率、響應(yīng)率、返回碼、流水號等關(guān)鍵交易和業(yè)務(wù)指標(biāo)數(shù)據(jù)。
4、DynaTrace:全棧式監(jiān)測,包括模擬可用性監(jiān)測、真實(shí)用戶監(jiān)測、移動應(yīng)用分析、業(yè)務(wù)交易、應(yīng)用性能管理、代碼級可視化、深度應(yīng)用監(jiān)測等,對應(yīng)用環(huán)境中的運(yùn)營狀況進(jìn)行深入分析。不僅能實(shí)時跟蹤從真實(shí)用戶行為到應(yīng)用性能的所有相關(guān)指標(biāo)、以可視化方式呈現(xiàn),深入到每一個單個交易。