企業(yè)如何做好業(yè)務(wù)監(jiān)控??
為什么要做業(yè)務(wù)監(jiān)控?
通常情況下,大部分企業(yè)都會(huì)做基礎(chǔ)設(shè)施監(jiān)控,覺(jué)得做好基礎(chǔ)設(shè)施監(jiān)控就可以解決大部分問(wèn)題。至于業(yè)務(wù)方面監(jiān)控,等有人來(lái)說(shuō)了再處理就行。殊不知這種想法會(huì)有諸多隱患:
1、運(yùn)維比業(yè)務(wù)部門(mén)經(jīng)常晚發(fā)現(xiàn)業(yè)務(wù)有問(wèn)題。
因?yàn)闃I(yè)務(wù)有問(wèn)題會(huì)最先爆出來(lái),等到基礎(chǔ)設(shè)施出問(wèn)題往往已經(jīng)過(guò)了幾分鐘了。此時(shí)業(yè)務(wù)可能已經(jīng)焦頭爛額了。
2、由于發(fā)現(xiàn)業(yè)務(wù)問(wèn)題較晚,這個(gè)時(shí)候有相互調(diào)用關(guān)系的業(yè)務(wù)可能也出現(xiàn)了問(wèn)題。
導(dǎo)致業(yè)務(wù)故障定位較困難。如果做了業(yè)務(wù)監(jiān)控,且做到妙極監(jiān)控,那么當(dāng)大量業(yè)務(wù)出現(xiàn)問(wèn)題時(shí),我們就能根據(jù)最先告警的來(lái)判斷是哪個(gè)業(yè)務(wù)故障引起的。
3、危害公司利益和自身前途。
第三點(diǎn)也是最要命的,由于上述兩個(gè)問(wèn)題導(dǎo)致運(yùn)維在業(yè)務(wù)部門(mén)乃至整個(gè)公司留下不良的影響,長(zhǎng)此以往不僅會(huì)給公司帶來(lái)經(jīng)濟(jì)損失,對(duì)自己的前途也是非常不利的。
因此做好業(yè)務(wù)監(jiān)控,可以說(shuō)是每個(gè)運(yùn)維人員必須要完成的一個(gè)任務(wù)。
業(yè)務(wù)監(jiān)控要做哪些?
1、Web站點(diǎn)監(jiān)控
對(duì)公網(wǎng)服務(wù)的Web站點(diǎn),無(wú)論是SAAS的還是在我們自己部署的站點(diǎn)都需要進(jìn)行站點(diǎn)URL監(jiān)控。公網(wǎng)站點(diǎn)監(jiān)控建議使用商業(yè)服務(wù)進(jìn)行監(jiān)控,因?yàn)檫@些服務(wù)通常可以從多個(gè)地域來(lái)檢測(cè)你當(dāng)前站點(diǎn)的訪問(wèn)情況,通常是站點(diǎn)狀態(tài)碼和響應(yīng)速度的監(jiān)控。
對(duì)內(nèi)網(wǎng)服務(wù)的Web站點(diǎn)也需要監(jiān)控,因?yàn)閮?nèi)網(wǎng)是無(wú)法從公網(wǎng)訪問(wèn)的,所以內(nèi)網(wǎng)建議使用自建Prometheus去監(jiān)控站點(diǎn)的狀態(tài)和響應(yīng)速度。
2、健康檢查接口
此處做服務(wù)健康檢查接口監(jiān)控,提供一個(gè)或多個(gè)監(jiān)控API,監(jiān)控應(yīng)用自身狀態(tài)、監(jiān)控應(yīng)用和數(shù)據(jù)庫(kù)連接狀態(tài),監(jiān)控應(yīng)用和中間件連接狀態(tài)。
健康檢查接口建議統(tǒng)一使用/health路徑的接口,如果是三個(gè)接口那么/app_health代表服務(wù)、/db_name_health代表數(shù)據(jù)庫(kù)連接狀態(tài)、/middleware_name_health代表中間件連接狀態(tài)。
單獨(dú)接口返回APP_OK,db_name_OK,middleware_name_OK,多個(gè)接口返回OK表示服務(wù)和數(shù)據(jù)庫(kù)和中間件正常。
有些JAVA的Sprint框架是自帶健康檢查接口的,這些直接使用即可。
3、日志監(jiān)控
首先,所有業(yè)務(wù)日志要接入日志中心。哪些關(guān)鍵字需要做告警?需要項(xiàng)目經(jīng)理和開(kāi)發(fā)負(fù)責(zé)人討論給出。確保有必要的關(guān)鍵字做告警,避免告警的泛濫。
4、鏈路追蹤
鏈路追蹤可以有選擇性的接入,如果業(yè)務(wù)比較簡(jiǎn)單平時(shí)運(yùn)行著也沒(méi)有什么問(wèn)題可以不用接入。一般業(yè)務(wù)如果上下游調(diào)用鏈較多,且業(yè)務(wù)邏輯比較復(fù)雜,同時(shí)會(huì)有大并發(fā)需求,對(duì)響應(yīng)速度要求也比較高的可以接入。
主要給用戶解決找出響應(yīng)時(shí)間較長(zhǎng)的API,并查看是否函數(shù)中存在問(wèn)題。有些商業(yè)的鏈路追蹤工具還可以看到SQL語(yǔ)句的問(wèn)題。這些都可以幫助開(kāi)發(fā)人員更好更快的解決業(yè)務(wù)代碼中的問(wèn)題。
5、大屏監(jiān)控
針對(duì)業(yè)務(wù)大屏,首先我們要考慮哪些業(yè)務(wù)數(shù)據(jù)要放到大屏中?這里建議放業(yè)務(wù)負(fù)責(zé)人或管理層關(guān)心的數(shù)據(jù)。比如:
· 用戶在線人數(shù)。
· 用戶訂單實(shí)時(shí)量數(shù)據(jù)。
這些數(shù)據(jù)能讓業(yè)務(wù)負(fù)責(zé)人或管理層直觀的看到當(dāng)前的業(yè)務(wù)狀況.還可以針對(duì)一些預(yù)估的異常值進(jìn)行告警配置。
如何做好業(yè)務(wù)監(jiān)控
做好業(yè)務(wù)監(jiān)控并不容易,所以這也是很多企業(yè)沒(méi)有做或做的不夠完善的原因。要做好業(yè)務(wù)監(jiān)控得一步步來(lái)。首先,你要有業(yè)務(wù)監(jiān)控其次我們需要對(duì)業(yè)務(wù)監(jiān)控進(jìn)行梳理,確保所有的監(jiān)控項(xiàng)都是有意義的。最后,我們要有業(yè)務(wù)監(jiān)控巡檢和告警處理的流程和機(jī)制,確保所有業(yè)務(wù)監(jiān)控被發(fā)現(xiàn)和及時(shí)處理。
另外,業(yè)務(wù)監(jiān)控并非僅限于上面所描述的5類(lèi),如果一個(gè)企業(yè)有和業(yè)務(wù)相關(guān)的需要被監(jiān)控,且并不再上面描述的類(lèi)型中,都可以通過(guò)一些工具或自定義的手段來(lái)完成定制化的業(yè)務(wù)監(jiān)控需求。
做好業(yè)務(wù)監(jiān)控,我們才能讓運(yùn)維的價(jià)值得到充分的體現(xiàn)。