2023-06-21 21:27:43 來(lái)源 : 清一色財(cái)經(jīng)
怎么快速定位異常入手,通過(guò)自定義Promtheus的PromQL來(lái)聚焦當(dāng)前業(yè)務(wù)需關(guān)注的異常,另外實(shí)現(xiàn)了H5監(jiān)控大盤(pán)頁(yè)面,提升了在非工作日戶(hù)外無(wú)辦公設(shè)備問(wèn)題定位的能力。
轉(zhuǎn)轉(zhuǎn)B2C技術(shù)部主要負(fù)責(zé)商詳、商列等BFF層核心頁(yè)面業(yè)務(wù),單接口甚至需要開(kāi)線程池并行調(diào)用二十多個(gè)依賴(lài)服務(wù),因此依賴(lài)的服務(wù)以及執(zhí)行線程池的穩(wěn)定性也就成為了B2C關(guān)注的重點(diǎn)。
(資料圖)
那么站在技術(shù)視角看調(diào)用鏈路,會(huì)發(fā)現(xiàn)幾個(gè)特點(diǎn):
CPU使用率高,線程池大量使用RPC調(diào)用多,穩(wěn)定性指望依賴(lài)的服務(wù)方業(yè)務(wù)調(diào)用鏈路較長(zhǎng),無(wú)法精細(xì)化控制本文就針對(duì)如何快速定位常見(jiàn)問(wèn)題,以及后續(xù)日志的進(jìn)一步治理計(jì)劃來(lái)進(jìn)行講解。
目前轉(zhuǎn)轉(zhuǎn)各個(gè)排查問(wèn)題的工具是統(tǒng)一開(kāi)放給公司的所有業(yè)務(wù)使用的,因此每次告警,都需借助統(tǒng)一的平臺(tái)如服務(wù)治理平臺(tái)、Grafana、Log日志平臺(tái)等工具進(jìn)行排查,不完全貼合B2C常見(jiàn)問(wèn)題排查場(chǎng)景,比如上游調(diào)用異常、超時(shí)等問(wèn)題。
B2C技術(shù)部告警定位問(wèn)題會(huì)遇到如下幾個(gè)問(wèn)題:
線上常見(jiàn)告警問(wèn)題無(wú)法快速識(shí)別線上內(nèi)置告警無(wú)法一眼定位出問(wèn)題,需要根據(jù)業(yè)務(wù)新增新的Promtheus PromQL展示調(diào)用服務(wù)超時(shí)、異常榜單。
公司統(tǒng)一平臺(tái)無(wú)法快捷跳轉(zhuǎn)發(fā)生緊急問(wèn)題時(shí),只能從收藏夾中選中公司各個(gè)公用平臺(tái),然后手動(dòng)輸入服務(wù)名稱(chēng)、時(shí)間范圍、粘貼查詢(xún)語(yǔ)句等,效率較低。
戶(hù)外環(huán)境下無(wú)法定位常見(jiàn)問(wèn)題辦公設(shè)備不在身邊時(shí),一旦發(fā)生告警,無(wú)法像在公司一樣方便的打開(kāi)各個(gè)平臺(tái)進(jìn)行問(wèn)題定位。
上面提出了幾個(gè)問(wèn)題,那怎么進(jìn)行監(jiān)控治理呢。比如,怎么快速識(shí)別出問(wèn)題的類(lèi)型?怎么快捷跳轉(zhuǎn)對(duì)應(yīng)的平臺(tái)?以及在戶(hù)外如何進(jìn)行問(wèn)題定位呢?針對(duì)這些問(wèn)題提出了如下解決方案。
總架構(gòu)設(shè)計(jì)圖如下
如圖可拆分為四部分,執(zhí)行步驟為:規(guī)范梳理及調(diào)整 -> 日志收集 -> 日志告警及定位 -> 告警感知
日志收集
Apollo配置中心控制異常+日志打印維度配置。根據(jù)配置屏蔽無(wú)用Exception,并上報(bào)到Promtheus,以Grafana報(bào)表展示。通過(guò)JavaAgent根據(jù)配置的業(yè)務(wù)、類(lèi)、方法級(jí)別攔截日志打印,偽代碼如下。public MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions) { MethodVisitor methodVisitor = super.visitMethod(access, name, descriptor, signature, exceptions); if (STR_V.equals(descriptor) && infoLevel.contains(name)) { // 此處省略。。攔截日志處理邏輯---------- return new LogMethodInsnVisitor(methodVisitor, className, name); } else { return methodVisitor; } }
日志告警及定位
通過(guò)在Promtheus編寫(xiě)自定義PromQL,收集服務(wù)超時(shí)、異常錯(cuò)誤。公司的Promtheus收集告警日志,并回調(diào)B2C業(yè)務(wù)告警服務(wù)接口?;卣{(diào)接口通過(guò)MQ上報(bào)告警消息,B2C告警服務(wù)消費(fèi)處理,組裝成業(yè)務(wù)需要看的數(shù)據(jù)后,通過(guò)企業(yè)微信機(jī)器人進(jìn)行通知。點(diǎn)擊告警前往大盤(pán),會(huì)跳轉(zhuǎn)到指定服務(wù)、時(shí)間范圍的監(jiān)控大盤(pán),含:服務(wù)超時(shí)榜單、服務(wù)異常榜單、全局異常列表以及快捷跳轉(zhuǎn)的工具箱。其中快捷跳轉(zhuǎn)工具箱設(shè)計(jì)原理如下
公司的Log日志平臺(tái)僅支持小時(shí)級(jí)別過(guò)濾,因此我們改在基于grep過(guò)濾,自定義正則表達(dá)式過(guò)濾出特定時(shí)間范圍日志。舉例 16:44~17:14分 過(guò)濾正則例子:\(16:\(4[4-9]\|5[0-9]\):\)\|\(17:\(0[0-9]\|1[0-4]\):\)針對(duì)常規(guī)連接則通過(guò)類(lèi)似{serverName}、{startTimeStamp}、{endTimeStamp}、{ip}等占位符替換機(jī)制獲取快捷跳轉(zhuǎn)鏈接。告警感知
為對(duì)應(yīng)服務(wù)綁定第一負(fù)責(zé)人及其關(guān)聯(lián)的leader聯(lián)系手機(jī)號(hào)。配置化形式針對(duì)指定類(lèi)型告警如調(diào)用依賴(lài)服務(wù)異常,如果超過(guò)一定時(shí)間閾值無(wú)人跟進(jìn)則給服務(wù)第一負(fù)責(zé)人IVR(電話語(yǔ)音呼叫)通知。如果超時(shí)依舊無(wú)人處理則往對(duì)應(yīng)leader進(jìn)行IVR通知。如果有人跟進(jìn),則下次同類(lèi)型告警標(biāo)記為處理人xxx跟進(jìn)中。企業(yè)微信機(jī)器人告警
點(diǎn)擊告警后跳轉(zhuǎn)頁(yè)面
總的來(lái)說(shuō),這里是從怎么快速定位異常入手,通過(guò)自定義Promtheus的PromQL來(lái)聚焦當(dāng)前業(yè)務(wù)需關(guān)注的異常,另外實(shí)現(xiàn)了H5監(jiān)控大盤(pán)頁(yè)面,提升了在非工作日戶(hù)外無(wú)辦公設(shè)備問(wèn)題定位的能力。
世界聚焦:永仁縣農(nóng)信聯(lián)社被罰60萬(wàn):因貸款...
2023-06-21青島通信中心參加“商漁共治 2023”第二次...
2023-06-21中金環(huán)境:公司將積極關(guān)注、布局新興產(chǎn)業(yè)產(chǎn)...
2023-06-21東華科技(002140)6月21日主力資金凈賣(mài)出9...
2023-06-21環(huán)球熱文:渣打集團(tuán)(02888.HK)6月20日斥資...
2023-06-21上海網(wǎng)信辦整治餐飲企業(yè)過(guò)度索取個(gè)人信息問(wèn)題
2023-06-21