監(jiān)控指標(biāo)
機(jī)器維度
機(jī)器維度的監(jiān)控指標(biāo)包括CPU撵术、Load逮光、內(nèi)存、網(wǎng)絡(luò)栖秕、IO、磁盤(pán)等相關(guān)指標(biāo)晓避,詳細(xì)指標(biāo)可以參考Liux監(jiān)控命令對(duì)應(yīng)的指標(biāo)數(shù)據(jù):https://linux.cn/article-9373-1.html?pr (主要可以參見(jiàn)top簇捍、vmstat 只壳、free、iostat暑塑、netstat 吼句、iptraf等命令相關(guān)的核心指標(biāo))。
應(yīng)用維度
應(yīng)用維度的監(jiān)控指標(biāo)包括JVM使用情況事格、線程池使用情況:JVM情況主要包括YGC次數(shù)惕艳、時(shí)間,F(xiàn)ullGC次數(shù)驹愚、時(shí)間远搪,新生代老年代占比;線程池情況主要包括的線程池大小逢捺、最大線程數(shù)谁鳍、活躍線程數(shù)、隊(duì)列大小等劫瞳。
服務(wù)維度
服務(wù)維度的監(jiān)控指標(biāo)包括error日志報(bào)錯(cuò)情況倘潜、服務(wù)接口調(diào)用量、耗時(shí)志于、成功率涮因,調(diào)用接口調(diào)用量、耗時(shí)伺绽、成功率养泡,dal層操作調(diào)用量、耗時(shí)憔恳、成功率瓤荔。
外部依賴維度
外部依賴維度主要指應(yīng)用系統(tǒng)常見(jiàn)的外部依賴的監(jiān)控情況,主要包括數(shù)據(jù)庫(kù)钥组、緩存输硝、消息隊(duì)列等,這些一般情況都會(huì)獨(dú)立進(jìn)行部署程梦,對(duì)應(yīng)的機(jī)器監(jiān)控同上面列舉的機(jī)器維度監(jiān)控点把;另外數(shù)據(jù)庫(kù)還需要關(guān)注連接數(shù)、內(nèi)存使用屿附、SQL調(diào)用量郎逃、耗時(shí)、成功率挺份,慢SQL等褒翰;緩存需要關(guān)注調(diào)用量、成功率,命中率优训、內(nèi)存使用等朵你;消息隊(duì)列需要關(guān)注調(diào)用量、成功率揣非,隊(duì)列積壓情況抡医、死信隊(duì)列等
整體監(jiān)控維度
整體上的監(jiān)控指標(biāo)包括可用性監(jiān)控(服務(wù)是否可用)、訪問(wèn)量監(jiān)控(PV/UV)早敬、負(fù)載監(jiān)控(限流忌傻、熔斷情況)、自定義的業(yè)務(wù)監(jiān)控(異常業(yè)務(wù)場(chǎng)景搞监、服務(wù)統(tǒng)計(jì)等)
監(jiān)控系統(tǒng)設(shè)計(jì)
實(shí)現(xiàn)思路
要想實(shí)現(xiàn)完整的監(jiān)控系統(tǒng)設(shè)計(jì)應(yīng)該包括如下幾步:數(shù)據(jù)采集—》數(shù)據(jù)整理存儲(chǔ)—》數(shù)據(jù)展示水孩;
其中數(shù)據(jù)采集可以通過(guò)在機(jī)器上安裝客戶端或者應(yīng)用中引入客戶端方式進(jìn)行采集,應(yīng)用日志可以使用統(tǒng)一的AOP攔截方式進(jìn)行打印腺逛,然后通過(guò)獨(dú)立線程定時(shí)掃描上傳到服務(wù)端荷愕,上傳方式可以使用消息中間件進(jìn)行數(shù)據(jù)傳輸,服務(wù)端消費(fèi)隊(duì)列消息進(jìn)行數(shù)據(jù)的整理存儲(chǔ)棍矛;
監(jiān)控服務(wù)端接收到上送的監(jiān)控?cái)?shù)據(jù)后安疗,應(yīng)該對(duì)數(shù)據(jù)進(jìn)行清洗,然后對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)够委;由于監(jiān)控?cái)?shù)據(jù)會(huì)比較龐雜且是非結(jié)構(gòu)化數(shù)據(jù)荐类,這里最好使用非關(guān)系數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ),并對(duì)數(shù)據(jù)建立合適的索引茁帽,以便于監(jiān)控?cái)?shù)據(jù)的查詢展示玉罐;
監(jiān)控?cái)?shù)據(jù)存儲(chǔ)好后還需要有個(gè)便于監(jiān)控?cái)?shù)據(jù)查看,界面友好的展示系統(tǒng)進(jìn)行數(shù)據(jù)的可視化報(bào)圖表展示潘拨,而且這個(gè)圖表最好可以支持自定義的格式配置吊输。
注意事項(xiàng)
系統(tǒng)監(jiān)控除了常規(guī)監(jiān)控外,還需要支持可配置的監(jiān)控指標(biāo)铁追,例如自定義日志告警季蚂、成功率告警等
數(shù)據(jù)展示除了常規(guī)數(shù)據(jù)展示外,還需要支持自定義的監(jiān)控?cái)?shù)據(jù)展示琅束,例如數(shù)據(jù)的各種組合圖表扭屁、統(tǒng)計(jì)圖表等
分布式系統(tǒng)監(jiān)控發(fā)現(xiàn)問(wèn)題,還需要能夠快速定位涩禀,這個(gè)時(shí)候就需要應(yīng)用有分布式追蹤的實(shí)現(xiàn)料滥,另外日志盡量有統(tǒng)一規(guī)范格式便于解析
具體實(shí)現(xiàn)
現(xiàn)有開(kāi)源的常見(jiàn)監(jiān)控系統(tǒng)實(shí)現(xiàn)有zabbix,ELK(ElasticSearch+Logstash+Kibana )艾船,大眾點(diǎn)評(píng)的CAT葵腹,另外在監(jiān)控快速定位問(wèn)題這塊大廠的實(shí)現(xiàn)有Google的Drapper高每、阿里的鷹眼、京東的hydra礁蔗、Twitter的OpenZipkin觉义,詳細(xì)介紹可見(jiàn)網(wǎng)上博文《各大廠分布式鏈路跟蹤系統(tǒng)架構(gòu)對(duì)比》