怎樣的監(jiān)控,才真正說明系統有問題?架構師之路關注共 2610字,需瀏覽 6分鐘 ·2020-12-07 00:29 監(jiān)控不告警,系統就一定沒有問題么?怎樣的監(jiān)控,才真正說明系統有問題?今天和大伙聊聊多維度立體化監(jiān)控。?什么是多維度立體化監(jiān)控?不同公司或多或少有一些自動化監(jiān)控手段,例如:(1)http接口監(jiān)控;(2)log關鍵字監(jiān)控;(3)操作系統,進程,端口;(4)http狀態(tài)碼;(5)服務存活性;(6)接口處理時間;(7)RPC接口監(jiān)控;(8)用戶層面監(jiān)控;?如果只監(jiān)控一個或少數幾個維度:(1)監(jiān)控到異常時,基本確信系統出現了問題;(2)反過來,沒有監(jiān)控到異常,不能確信系統沒有問題;?例如:(1)監(jiān)控到操作系統CPU100%,系統大概率出現了問題,但CPU正常,并不能說明系統正常,例如tomcat掛了,CPU肯定是正常的,但操作系統監(jiān)控卻探測不到,于是需要進程,端口,存活性等其他監(jiān)控予以輔助;(2)進程,端口監(jiān)控到異常,系統大概率出現了問題,但進程在運行,端口在監(jiān)聽,并不能說明系統正常,例如程序死鎖,進程和端口是正常的,于是需要接口處理時間等其他監(jiān)控予以輔助;(3)接口處理時間監(jiān)控到超時,系統大概率出現了問題,但接口處理時間不超時,并不能說明系統正常,例如數據庫掛了,數據庫連接拿不到,服務層每個接口都很快返回,并不超時;?這里的觀點是:單維度監(jiān)控易漏報,多維度立體化監(jiān)控才是監(jiān)控平臺的根本之道。?前文介紹的兩篇:《如何在12個小時,搞定http監(jiān)控?》《如何在12個小時,搞定日志監(jiān)控?》在設計上都講究通用+可擴展。接下來介紹的四個維度的監(jiān)控,在設計上也是看重“通用”“非侵入性”,即被監(jiān)控的站點和服務無需任何埋點,無需任何修改,被監(jiān)控模塊的負責人無需配合做任何事情,就能全方位cover住。?維度一,如何進行操作系統,進程,端口監(jiān)控?監(jiān)控需求:(1)系統的網絡是否被打滿,磁盤是否有空間,CPU是否繁忙,內存是否用完,負載值是否過高,JVM是否正常;(2)服務進程是否運行;(3)監(jiān)聽端口是否正常;(4)機器間是否聯通;?常見方案一:zabbix搞運維的都懂,不展開細聊了,聊多了怕被罵。?常見方案二:shell寫一些非常簡單的腳本,就能夠獲取到網絡、磁盤、CPU、內存、load、JVM的信息,在配合一些閾值的配置,就能實現超出閾值告警的功能。如果配合集群信息管理服務,通過ps, netstat, telnet等命令,也能快速實現進程,端口,連通性的簡易監(jiān)控。?實現要點:(1)重點考慮擴展性,可配置性,非侵入性;(2)集群信息管理服務(或者,集群信息配置文件);?維度二,如何進行404狀態(tài)碼監(jiān)控?監(jiān)控需求:監(jiān)控http異常狀態(tài)碼。?監(jiān)控方案:nginx日志統一監(jiān)控如果實現了http接口統一監(jiān)控,404監(jiān)控的必要性并不是這么強,但畢竟實現簡單,整一個通用的花不了多少時間。?在聊存活性監(jiān)控,接口處理時間監(jiān)控之前,多說幾句系統架構,如果實現了框架與組件的統一,統一監(jiān)控會省非常多的力氣。上圖是一個典型的互聯網分層架構圖:(1)最上游是APP和browser;(2)反向代理層是nginx,統一http404狀態(tài)碼監(jiān)控就實現在這一層;(3)web層,假設自研了web-framework;(4)service層,假設自研了service-framework,web層會通過RPC-client調用service;(5)數據層db,假設自研了Daojia-DAO組件調用db;(6)緩存層cache,假設自研了Daojia-KV組件調用cache;?D-DAO和D-KV兩個組件并沒有大伙想的復雜,初期只是簡單的封裝了一層而已。?維度三,如何進行服務存活性監(jiān)控?監(jiān)控需求:進程和端口的監(jiān)控,只能保證進程在,端口在,但并不能確定服務是否能響應請求,需要確定服務“活著”。?監(jiān)控方案:ping-pong式監(jiān)控,在站點框架,服務框架層面統一實現,提供keepalive接口:(1)在框架層面就可以實現ping-pong接口;(2)監(jiān)控中心通過集群信息管理服務(或者是配置文件)獲取集群類型(web/service),集群IP列表;(3)監(jiān)控中心統一往集群發(fā)送內置的ping-pong請求;?強調兩點:(1)如果開源框架不提供ping-pong接口,可以二次開發(fā)(要慎重,任何開源框架的二次開發(fā),都是大坑的開始);(2)統一集群信息管理服務,或者,統一集群信息管理配置文件,真的很重要,是技術體系統一的基石;?維度四,如何進行接口執(zhí)行時間監(jiān)控?監(jiān)控需求:(1)http站點接口有沒有超時;(2)RPC服務接口有沒有超時;(3)db訪問有沒有超時;(4)cache訪問有沒有超時;(5)除了超時,還要監(jiān)控同一個接口的執(zhí)行時間有沒有同比、環(huán)比的大幅度波動,例如:一個接口平均響應時間是100ms,突然有一天增加到300ms,即使沒有超時,也有理由懷疑接口出現了問題;?監(jiān)控方案:框架組件統一上報(如上圖1,2,3,4)。(1)在web-framework里,對所有http接口進行數據上報,可以上報url,參數,執(zhí)行時間等核心數據;(2)在service-framework里,對所有RPC接口進行數據上報,可以上報接口,參數,執(zhí)行時間等核心數據;(3)在DAO里,對所有數據庫SQL訪問進行數據上報,可以上報sql,參數,執(zhí)行時間等核心數據;(4)在KV-client里,對所有cache訪問進行數據上報,可以上報key,執(zhí)行時間等核心數據;統一上報是思路,具體上報細節(jié),是通過flume刷日志,還是storm/spark實時流處理,都可以。?總結監(jiān)控是一個技術活:(1)監(jiān)控平臺的思路是多維度立體化監(jiān)控;(2)“統一操作系統、http404,服務存活性,接口處理時間”等四大類統一監(jiān)控的設計核心是“非侵入性”,不需要任何人配合修改,就能實現諸多功能的技術平臺,才是好技術平臺;(3)統一集群信息管理服務,統一人員信息管理服務,統一告警策略服務(或者配置文件),是統一技術體系的基石;架構師之路-分享技術思路思路比結論更重要,希望大家有收獲。調研貴司的監(jiān)控,涵蓋了哪些方面? 瀏覽 65點贊 評論 收藏 分享 手機掃一掃分享分享 舉報 評論圖片表情視頻評價全部評論推薦 每日傾聽 | 怎樣才算真正的努力?核桃AI0Netflix是怎樣做系統監(jiān)控的?極客挖掘機0Netflix 怎樣做系統監(jiān)控?公眾號程序猿DD0怎樣才自由怎樣才自由0erp系統是怎樣的,有沒有人告知下?怎么說呢,ERP系統就是一個為企業(yè)提供決策、計劃、控制與經營業(yè)績評估的全方位和系統化的管理平臺,打個比喻,ERP是企業(yè)的大腦和神經系統,負責新聞的收集,處理,指揮。也可以說ERP就是企業(yè)的一面鏡子,讓企業(yè)的流程可見、可控。市面上性價比比較高的系統,有智邦國際ERP,可幫助企業(yè)管理規(guī)范化,提高企業(yè)的管理水平;提高員工的作業(yè)效率;降低企業(yè)的運營成本幫助企業(yè)決策;降低庫存占用和積壓風險 ,降低應收賬款占用和壞賬風險以及降低企業(yè)整體運營成本。有問題有問題0有問題!公子龍0AsuraTeam-Monitor功能強大的監(jiān)控系統Monitor是一個功能強大、靈活的監(jiān)控系統。系統安裝簡單,配置簡單,相比zabbix,nagios,cacti,小米監(jiān)控等都使用相當簡單。只需要會寫腳本,語言不限就可以實現任意監(jiān)控需求。它具有以下特AsuraTeam-Monitor功能強大的監(jiān)控系統Monitor是一個功能強大、靈活的監(jiān)控系統。系統安裝簡單,配置簡單,相比zabbix, nagio怎樣才算情深怎樣才算情深0點贊 評論 收藏 分享 手機掃一掃分享分享 舉報