一、概述
隨著現(xiàn)代信息系統(tǒng)越來越龐大,機器數(shù)量呈現(xiàn)指數(shù)級增長,信息系統(tǒng)運維對平臺化服務(wù)能力要求越來越高,建立有效的監(jiān)控體系準(zhǔn)確及時發(fā)現(xiàn)系統(tǒng)運行中出現(xiàn)的問題,對于保障應(yīng)用系統(tǒng)穩(wěn)定運行具有重要意義。為提升生產(chǎn)問題感知及響應(yīng)能力,通常會配置各種類型的監(jiān)控,本文從單類型監(jiān)控、業(yè)務(wù)交易之間聚合監(jiān)控、業(yè)務(wù)交易與基礎(chǔ)資源聚合監(jiān)控等方面介紹監(jiān)控常用技術(shù)方法,供讀者進行參考學(xué)習(xí)。
![]()
二、單類型監(jiān)控
單類型監(jiān)控是指使用單一類型技術(shù)進行應(yīng)用系統(tǒng)監(jiān)控,常用的監(jiān)控方法包括Ajax請求報文響應(yīng)報文監(jiān)控、業(yè)務(wù)日志監(jiān)控、頁面內(nèi)容監(jiān)控、業(yè)務(wù)數(shù)據(jù)監(jiān)控、基礎(chǔ)資源監(jiān)控。
![]()
方面對幾種監(jiān)控類型詳細(xì)介紹:
1、Ajax監(jiān)控:通過第三方監(jiān)控平臺定時發(fā)送業(yè)務(wù)交易請求,并對響應(yīng)報文進行斷言的方法驗證交易的正確性。
方法1:http狀態(tài)碼監(jiān)控。對http請求的狀態(tài)碼進行判斷,是否符合預(yù)期結(jié)果,各類http狀態(tài)碼含義如下,我們僅需要配置狀態(tài)碼斷言即可判斷交易是否正常。
![]()
示例:
Request URL:https://msg.csdn.net/v1/web/message/view/unread
Request Method:POST
Status Code:200
方法2:http響應(yīng)報文監(jiān)控。http狀態(tài)碼監(jiān)控可以監(jiān)控交易報文是否正常響應(yīng),但是無法判斷交易邏輯是否正常,對http報文響應(yīng)報文具體內(nèi)容進行監(jiān)控,可以彌補該問題。通過判斷http響應(yīng)報文中具體字段的值對交易進行監(jiān)控。
示例:ajax響應(yīng)報文中包含如下信息,則可以對message字段的值進行監(jiān)控。
message:"success"
status:true
適用場景:適用于對http協(xié)議響應(yīng)報文、響應(yīng)碼進行監(jiān)控。
2、日志監(jiān)控:日志監(jiān)控是對應(yīng)用系統(tǒng)運行過程中產(chǎn)生的日志進行監(jiān)控。以log4j為例,日志級別包括ALL、TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF,其中ALL是打印所有日志,OFF是所有日志都不打印,為了排查系統(tǒng)運行問題,通常開發(fā)人員根據(jù)需要會打點一定的日志,但是如果loglevel配置的太低,則會打印過多的日志信息,從而影響系統(tǒng)性能。
日志監(jiān)控通常可以基于ERROR、FATAL類日志打印進行監(jiān)控。開發(fā)人員在業(yè)務(wù)邏輯中進行相應(yīng)的判斷,并打印錯誤日志,例如:Log.error(“123456”);監(jiān)控平臺可以抓取系統(tǒng)中打印的錯誤日志,并基于正則表達(dá)式判斷是否符合異常告警條件。符合告警規(guī)則,則進行郵件、短信等告警。
日志告警可以精準(zhǔn)獲取異常告警的代碼位置,從而便于進行問題分析。
![]()
適用場景:適用于系統(tǒng)開發(fā)人員在代碼的關(guān)鍵邏輯中打點了日志信息時使用。
3、網(wǎng)頁監(jiān)控:對于DOC類型的請求,可以通過發(fā)送請求報文,對響應(yīng)頁面html內(nèi)容設(shè)置監(jiān)控,判斷響應(yīng)頁面內(nèi)容是否包含指定的內(nèi)容,網(wǎng)頁內(nèi)容監(jiān)控是指監(jiān)控網(wǎng)頁標(biāo)題、網(wǎng)頁關(guān)鍵詞、網(wǎng)頁描述、出站鏈接等內(nèi)容信息進行監(jiān)控。
使用方式:通過提取網(wǎng)頁內(nèi)容做為監(jiān)控的對象,對比與上一次監(jiān)測記錄的變化情況,例如:。
頁面監(jiān)控配置流程:
![]()
適用場景:具有前端頁面的系統(tǒng)可以采用該方法進行頁面內(nèi)容監(jiān)控。
4、數(shù)據(jù)監(jiān)控:通過定時執(zhí)行數(shù)據(jù)庫sql腳本或者數(shù)據(jù)分析,驗證具有關(guān)聯(lián)性的表是否出現(xiàn)不受控制的異常數(shù)據(jù)記錄,數(shù)據(jù)內(nèi)容監(jiān)控可以發(fā)現(xiàn)業(yè)務(wù)邏輯異常造成的數(shù)據(jù)問題,并及時提供給運營人員進行后續(xù)處理,以應(yīng)對數(shù)據(jù)不一致對用戶產(chǎn)生的影響。
數(shù)據(jù)監(jiān)控分類如下:
數(shù)據(jù)監(jiān)控配置流程:
![]()
適用場景:對于熟悉數(shù)據(jù)表邏輯關(guān)系及不同表中字段之間邏輯關(guān)系時可以使用該方法。
5、資源監(jiān)控:對于CPU、內(nèi)存、硬盤等基礎(chǔ)資源的監(jiān)控,并設(shè)置閾值,對于分機房類應(yīng)用系統(tǒng),可以按照機房分別配置資源監(jiān)控,可以及時發(fā)現(xiàn)底層資源故障,提示系統(tǒng)運維人員及時進行資源擴容或者問題排查,具體重要的意義。
通常當(dāng)CPU、內(nèi)存利用率超過80%時,系統(tǒng)性能將逐步出現(xiàn)瓶頸,從而會嚴(yán)重影響用戶使用體現(xiàn),因此可以設(shè)置CPU、內(nèi)存等使用率超過80%時進行告警;對于數(shù)據(jù)庫服務(wù),可以對數(shù)據(jù)庫的連接數(shù)、表空間、系統(tǒng)日志等信息進行監(jiān)控;對于磁盤、網(wǎng)絡(luò)設(shè)置可以監(jiān)控IO速率的參數(shù)以發(fā)現(xiàn)相關(guān)問題。
但基礎(chǔ)資源監(jiān)控?zé)o法具體判斷具體是哪些業(yè)務(wù)造成的資源問題,以及對哪些業(yè)務(wù)造成的影響比較大,結(jié)合其他監(jiān)控方法可以達(dá)到更好的效果。
幾種監(jiān)控方法對比:
![]()
適用場景:對于依賴的底層資源的服務(wù)可以采用這種監(jiān)控方法。
三、聚合類型監(jiān)控
1、交易調(diào)用鏈路聚合監(jiān)控
對于系統(tǒng)之間調(diào)用較為復(fù)雜的業(yè)務(wù)場景,僅僅通過單系統(tǒng)的監(jiān)控難以具體定位到故障節(jié)點。交易接口之間聚合監(jiān)控是指對已經(jīng)建立的具有調(diào)用關(guān)系的接口監(jiān)控項建立綁定關(guān)系,從而根據(jù)調(diào)用鏈路上各個節(jié)點的執(zhí)行結(jié)果判斷業(yè)務(wù)系統(tǒng)群的可用性情況及故障節(jié)點。
如下圖所示,A系統(tǒng)的一個業(yè)務(wù)交易trans1,調(diào)用B系統(tǒng)的交易和C系統(tǒng)的交易,B系統(tǒng)又會調(diào)用D系統(tǒng)交易。在這種場景下,僅僅對A系統(tǒng)業(yè)務(wù)交易進行監(jiān)控,發(fā)生告警后,無法準(zhǔn)備判斷A、B、C、D 4個系統(tǒng)中哪個系統(tǒng)發(fā)生了故障,造成業(yè)務(wù)交易無法執(zhí)行成功,需要開發(fā)人員根據(jù)交易鏈條逐個判斷分析,大大增加了系統(tǒng)問題分析的難度。
![]()
使用交易調(diào)用鏈路聚合監(jiān)控方法,拿A系統(tǒng)trans1交易這個場景來說,對A、B、C、D 4個系統(tǒng)分別配置監(jiān)控案例mA、mB、mC、mD,并建立鏈路綁定關(guān)系(mA->mB、mB->mD、mB->mC)。這樣在系統(tǒng)發(fā)生告警后,可以根據(jù)A、B、C、D 4個系統(tǒng)監(jiān)控交易執(zhí)行情況,迅速找到故障節(jié)點。
A系統(tǒng)Trans1交易監(jiān)控案例綁定關(guān)系:
![]()
優(yōu)勢:能夠快速找到故障節(jié)點,降低故障分析復(fù)雜程度。因為交易監(jiān)控之間建立了綁定關(guān)系:mA->mB->mD、mB->mC,當(dāng)mA、mB、mC、mD4個監(jiān)控項按照一定頻率執(zhí)行時并獲取到對應(yīng)的執(zhí)行結(jié)果后,可以根據(jù)根據(jù)交易之間的綁定關(guān)系判斷故障節(jié)點。例如:
某時間節(jié)點:mD執(zhí)行成功,mB執(zhí)行失敗,mA執(zhí)行失敗,可以判斷是由于mB交易執(zhí)行失敗造成mA執(zhí)行失敗,從而提升問題處置效率。
缺點:配置復(fù)雜程度高,需要清楚交易調(diào)用鏈路,并分別配置監(jiān)控案例,并建立綁定關(guān)系。
適用場景:對于交易鏈路比較復(fù)雜,難以判斷問題故障具體出在什么位置的情況下建議增加使用該方法監(jiān)控。
2.業(yè)務(wù)監(jiān)控與資源監(jiān)控聚合
隨著信息系統(tǒng)復(fù)雜程度和可靠性要求的不斷提高,信息系統(tǒng)的部署架構(gòu)也越來越復(fù)雜。信息系統(tǒng)的部署會采用多地區(qū)多機房的部署方式,從而根據(jù)用戶所在區(qū)域訪問不同的后臺服務(wù),以提升系統(tǒng)響應(yīng)能力。業(yè)務(wù)監(jiān)控與資源監(jiān)控聚合是指將業(yè)務(wù)交易監(jiān)控與資源級監(jiān)控建立綁定關(guān)系,并根據(jù)各個監(jiān)控項的執(zhí)行結(jié)果進行聚合分析,從而判斷系統(tǒng)故障節(jié)點的監(jiān)控方法。
![]()
業(yè)務(wù)交易的可用性與基礎(chǔ)資源是緊耦合的關(guān)系,基礎(chǔ)資源的故障或性能瓶頸會嚴(yán)重影響業(yè)務(wù)交易的運行。通過業(yè)務(wù)交易監(jiān)控?zé)o法準(zhǔn)備定位到具體哪些基礎(chǔ)資源故障引起。例如業(yè)務(wù)交易訪問失敗,可能是因為服務(wù)器停機、機器無法正常響應(yīng)請求等問題造成。具體哪個資源故障造成業(yè)務(wù)交易無法正常執(zhí)行卻無法判斷。
通過將業(yè)務(wù)交易監(jiān)控和基礎(chǔ)資源監(jiān)控進行綁定聚合可以有效解決該問題。例如我們的業(yè)務(wù)系統(tǒng)已經(jīng)配置了業(yè)務(wù)監(jiān)控m1、tomcat服務(wù)器監(jiān)控m2、數(shù)據(jù)庫服務(wù)器監(jiān)控m3三個監(jiān)控配置,通過建立監(jiān)控項m1、m2、m3的綁定關(guān)系(如下圖所示),當(dāng)發(fā)生基礎(chǔ)資源造成的業(yè)務(wù)交易報錯后,可以迅速找到問題原因以進行問題響應(yīng)。
![]()
適用場景:對于業(yè)務(wù)交易依賴底層資源,底層資源故障會造成部分業(yè)務(wù)交易報錯的情況下可以使用該種監(jiān)控方法。
四、總結(jié)
本文首先介紹了幾種單應(yīng)用系統(tǒng)環(huán)境監(jiān)控方法及主要技術(shù),包括ajax請求響應(yīng)報文監(jiān)控,日志監(jiān)控、基礎(chǔ)資源監(jiān)控、業(yè)務(wù)數(shù)據(jù)監(jiān)控、頁面內(nèi)容監(jiān)控、高級腳本監(jiān)控,并分析了這幾種技術(shù)的主要使用場景,之后對業(yè)務(wù)交易聚合監(jiān)控、業(yè)務(wù)交易與基礎(chǔ)資源監(jiān)控方法進行了介紹,希望給測試人員、應(yīng)用環(huán)境運維人員、監(jiān)控平臺建設(shè)者提供一定的參考,提升信息系統(tǒng)運維服務(wù)能力。
最后:在我的V:atstudy-js,可以免費領(lǐng)取一份10G軟件測試工程師面試寶典文檔資料。以及相對應(yīng)的視頻學(xué)習(xí)教程免費分享!其中包括了有基礎(chǔ)知識、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫、抓包工具專題、接口測試工具、測試進階-Python編程、Web自動化測試、APP自動化測試、接口自動化測試、測試高級持續(xù)集成、測試架構(gòu)開發(fā)測試框架、性能測試、安全測試等。
![]()
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.