3. ActiveMQ監(jiān)控數(shù)據(jù)獲取 | 網(wǎng)站搭建學(xué)習(xí)筆記

對ActiveMQ自帶的網(wǎng)頁監(jiān)控一向不是很滿意,借著學(xué)習(xí)VueJS的機會考慮重構(gòu)一下窄刘。不過首先要解決的是vueJS如何獲取數(shù)據(jù)的問題窥妇。

ActiveMQ為外部提供了很多種broker狀態(tài)獲取方式,我已知的就有4種:

  1. 直接訪問頁面娩践,http扒到以后解析
  2. ActiveMQ web-console右側(cè)有提供xml活翩,可以訪問http://localhost:8161/admin/xml/queues.jsp來獲取隊列消息烹骨,還能修改jsp頁面來讓一個頁面包含更多的信息,獲取到解析就好
  3. AMQ的JMX接口材泄,使用java編程訪問JMX接口獲取就行
  4. AMQ自帶了jolokia沮焕,雖然本質(zhì)上也是jmx,但是提供了http方式的數(shù)據(jù)獲取

既然有http的方式拉宗,那用nodejs+vue的模式當(dāng)然是直接用第4種方法啦峦树。先看看這個接口返回的是什么,我在本地搭了個AMQ旦事,訪問http://localhost:8161/api/jolokia/read/org.apache.activemq:brokerName=localhost,type=Broker可以獲取到

{"timestamp":1515227214,"status":200,
"request":{"mbean":"org.apache.activemq:brokerName=localhost,type=Broker","type":"read"},
"value":{"BrokerId":"ID:HuangZhengdeMacBook-Air.local-58307-1515208245575-0:1",
"TemporaryQueueSubscribers":[],
"DynamicDestinationProducers":[],
"TemporaryQueues":[],
"MemoryPercentUsage":0,
"TemporaryTopicProducers":[],
"MemoryLimit":668309914,
"TotalConnectionsCount":0,
"Queues":[{"objectName":"org.apache.activemq:brokerName=localhost,destinationName=test.,destinationType=Queue,type=Broker"},
{"objectName":"org.apache.activemq:brokerName=localhost,destinationName=test,destinationType=Queue,type=Broker"}],
"StoreLimit":16963110607,
……(篇幅有限就不全打印了魁巩,弄換行很累)

可以看到返回的是一個json格式的數(shù)據(jù)。前兩天看到了reqwest可以用來獲取http返回姐浮,所以我們新建一個broker.vue組件來獲取broker的數(shù)據(jù):

<template>
  <p>{{ this.info }}</p>
</template>

<script>
    import reqwest from 'reqwest'
    export default {
      name: 'brokers',
      props: {
        broker: {
          default: 'localhost'
        }
      },
      data: function () {
         return {
            info: []
         }
      }
      mounted: function () {
        this.getData()
      },
      methods: {
        var self = this
        getData: function () {
          reqwest({
           // 這里有個坑谷遂,MQ搭建的時候BrokerName要指定成與IP相關(guān)的
            url: 'http://' + this.broker + ':8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=MQ_' + this.broker,
            type: 'json',
            method: 'get',
            success: function (resp) {
              self.info = resp
              console.log(self.info)
            }
          })
        }
      }
    }
</script>

可以看到這個組件的主要作用就是接收上層傳來的broker參數(shù),而后用broker參數(shù)獲取全量的amq數(shù)據(jù)卖鲤。
而后整理一下我們的需求肾扰,對AMQ的監(jiān)控來說,我們希望輸入一個IP就可以獲得整個集群的信息扫尖,因此我們需要從單個broker信息中先提取出集群內(nèi)所有的broker地址白对。麻煩的是json數(shù)據(jù)中并不想queue和topic數(shù)據(jù)那樣直觀給出所有的network連接。但是我們可以注意到由于集群默認(rèn)的demandForwardBridge的特性换怖,可以從對AcitveMQ.Advisory.Consumer.>這個topic的訂閱者上獲取到與當(dāng)前這個IP連接的都有誰甩恼,也就是集群內(nèi)所有正常的連接啦。
獲取集群所有IP的主要部分可以這樣寫沉颂,考慮放到一個新的組件里去条摸。

<ol>
  <li v-for="n in info.value.TopicSubscribers">
    <span>{{ getNetwork(n.objectName) }}</span>
  </li>
</ol>
<script>
export default {
  methods: {
    getNetwork: function (str) {
      return str.split(',')[1].spilt('=')[1].split('_')[2]
    }
  }
}
</script>

寫到這里我梳理了一下這個網(wǎng)站的架構(gòu),應(yīng)該是這樣的:
1铸屉、 主頁面輸入一個IP地址钉蒲,點擊按鈕后獲取這個IP的broker信息,讀取出所有與其連接的MQ
2彻坛、點擊隊列顷啼、主題、集群昌屉、連接等頁面钙蒙,可以看到當(dāng)前這個IP的具體信息
3、點擊匯總頁面间驮,可以看到這個集群的所有信息的匯總

這周在折騰環(huán)境學(xué)習(xí)vue和reqwest上踩了比較多的坑躬厌,下周按照這個思路設(shè)計出頁面吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末竞帽,一起剝皮案震驚了整個濱河市扛施,隨后出現(xiàn)的幾起案子鸿捧,更是在濱河造成了極大的恐慌,老刑警劉巖疙渣,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匙奴,死亡現(xiàn)場離奇詭異,居然都是意外死亡昌阿,警方通過查閱死者的電腦和手機饥脑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來懦冰,“玉大人灶轰,你說我怎么就攤上這事∷⒏郑” “怎么了笋颤?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長内地。 經(jīng)常有香客問我伴澄,道長,這世上最難降的妖魔是什么阱缓? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任非凌,我火速辦了婚禮,結(jié)果婚禮上荆针,老公的妹妹穿的比我還像新娘敞嗡。我一直安慰自己,他們只是感情好航背,可當(dāng)我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布喉悴。 她就那樣靜靜地躺著,像睡著了一般玖媚。 火紅的嫁衣襯著肌膚如雪箕肃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天今魔,我揣著相機與錄音勺像,去河邊找鬼。 笑死错森,一個胖子當(dāng)著我的面吹牛咏删,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播问词,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嘀粱!你這毒婦竟也來了激挪?” 一聲冷哼從身側(cè)響起辰狡,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體察署,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡葵擎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了幕庐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吆倦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坐求,我是刑警寧澤蚕泽,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站桥嗤,受9級特大地震影響须妻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜泛领,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一荒吏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧渊鞋,春花似錦绰更、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至员辩,卻和暖如春盒粮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奠滑。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工丹皱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宋税。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓摊崭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親杰赛。 傳聞我的和親對象是個殘疾皇子呢簸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,665評論 2 354