背景
分布式系統(tǒng)使用的技術(shù)組件(nginx,reids,mq,db....)
基于高可用的考慮,還需要部署多個(gè)結(jié)點(diǎn)等。
需要對(duì)分布式系統(tǒng)的運(yùn)行狀況進(jìn)行準(zhǔn)時(shí)實(shí)的監(jiān)控。
方案
主要參考主流的分布式系統(tǒng)監(jiān)控平臺(tái)的方案,再結(jié)合自己應(yīng)用的考慮。決定采用以下方案:
flume+rocketmq+storm+redis+elasticsearch
flume
主要用于系統(tǒng)結(jié)點(diǎn)或應(yīng)用結(jié)點(diǎn)的日志信息的收集。
rocketmq
主要用于歸集flume收集的日志信息,放在各自的主題或隊(duì)列中。
storm
從rocketmq中獲取日志信息,對(duì)日志信息進(jìn)行統(tǒng)計(jì)分析。
elasticsearch
從rocketmq中獲取日志信息,對(duì)日志信息創(chuàng)建全文索引。
主要用于收集集群環(huán)境下應(yīng)用系統(tǒng)中業(yè)務(wù)日志中的關(guān)鍵日志信息,方便系統(tǒng)維護(hù)人員通過關(guān)鍵字檢索日志信息。
實(shí)施
后面將會(huì)介紹如何實(shí)現(xiàn)對(duì)系統(tǒng)資源和應(yīng)用結(jié)點(diǎn)的監(jiān)控。
大致思路如下:
通過系統(tǒng)的計(jì)劃任務(wù)(crontab),執(zhí)行shell腳本 ,腳本會(huì)生成系統(tǒng)資源或應(yīng)用結(jié)點(diǎn)的監(jiān)控?cái)?shù)據(jù)信息日志文件。
通過flume監(jiān)測日志文件的變化,當(dāng)有新的日志信息產(chǎn)生,將信息推送到rocketmq對(duì)應(yīng)的主題隊(duì)列中。
通過storm運(yùn)行rocketmq的消息消費(fèi)端,監(jiān)測主題最新的數(shù)據(jù)信息,并對(duì)數(shù)據(jù)流進(jìn)行實(shí)時(shí)分析。
通過storm的時(shí)候分析,將分析結(jié)果存儲(chǔ)到redis中,方便運(yùn)維人員查詢。
*備注:該應(yīng)用場景暫時(shí)沒有使用到elasticsearch