squbs-18. 管理控制臺(tái)(Admin Console)

squbs管理控制臺(tái)提供了一個(gè)web/JSON接口守伸,關(guān)于squbs和JVM的系統(tǒng)狀態(tài)和統(tǒng)計(jì)信息盯桦。所有JVM與squbs的狀態(tài)和統(tǒng)計(jì)信息通過JMX MXBeans提供。cube通砍,應(yīng)用或組件可以自由的注冊他們自己的監(jiān)控器卑硫。

注意: 迄今為止球昨,squbs管理控制臺(tái)不允許JMX方法執(zhí)行或修改任何設(shè)置尔店。

依賴

通過使用squbs管理控制臺(tái),簡單的添加以下依賴至你的build.sbt文件或Scala構(gòu)建腳本中

  "org.squbs" %% "squbs-admin" % squbsVersion

squbs-admin將會(huì)自動(dòng)檢測主慰。不需要任何API

訪問Bean 信息

squbs-admin使用上下文/adm闹获。單獨(dú)使用/adm會(huì)列出JMX MXBeans的目錄,對應(yīng)的URLs訪問bean如下面的例子所示:

{
  "JMImplementation:type=MBeanServerDelegate" : "http://localhost:8080/adm/bean/JMImplementation:type~MBeanServerDelegate",
  "com.sun.management:type=DiagnosticCommand" : "http://localhost:8080/adm/bean/com.sun.management:type~DiagnosticCommand",
  "com.sun.management:type=HotSpotDiagnostic" : "http://localhost:8080/adm/bean/com.sun.management:type~HotSpotDiagnostic",
  "java.lang:type=ClassLoading" : "http://localhost:8080/adm/bean/java.lang:type~ClassLoading",
  "java.lang:type=Compilation" : "http://localhost:8080/adm/bean/java.lang:type~Compilation",
  "java.lang:type=GarbageCollector,name=PS MarkSweep" : "http://localhost:8080/adm/bean/java.lang:type~GarbageCollector,name~PS%20MarkSweep",
  "java.lang:type=GarbageCollector,name=PS Scavenge" : "http://localhost:8080/adm/bean/java.lang:type~GarbageCollector,name~PS%20Scavenge",
  "java.lang:type=Memory" : "http://localhost:8080/adm/bean/java.lang:type~Memory",
  "java.lang:type=MemoryManager,name=CodeCacheManager" : "http://localhost:8080/adm/bean/java.lang:type~MemoryManager,name~CodeCacheManager",
  "java.lang:type=MemoryManager,name=Metaspace Manager" : "http://localhost:8080/adm/bean/java.lang:type~MemoryManager,name~Metaspace%20Manager",
  "java.lang:type=MemoryPool,name=Code Cache" : "http://localhost:8080/adm/bean/java.lang:type~MemoryPool,name~Code%20Cache",
  "java.lang:type=MemoryPool,name=Compressed Class Space" : "http://localhost:8080/adm/bean/java.lang:type~MemoryPool,name~Compressed%20Class%20Space",
  "java.lang:type=MemoryPool,name=Metaspace" : "http://localhost:8080/adm/bean/java.lang:type~MemoryPool,name~Metaspace",
  "java.lang:type=MemoryPool,name=PS Eden Space" : "http://localhost:8080/adm/bean/java.lang:type~MemoryPool,name~PS%20Eden%20Space",
  "java.lang:type=MemoryPool,name=PS Old Gen" : "http://localhost:8080/adm/bean/java.lang:type~MemoryPool,name~PS%20Old%20Gen",
  "java.lang:type=MemoryPool,name=PS Survivor Space" : "http://localhost:8080/adm/bean/java.lang:type~MemoryPool,name~PS%20Survivor%20Space",
  "java.lang:type=OperatingSystem" : "http://localhost:8080/adm/bean/java.lang:type~OperatingSystem",
  "java.lang:type=Runtime" : "http://localhost:8080/adm/bean/java.lang:type~Runtime",
  "java.lang:type=Threading" : "http://localhost:8080/adm/bean/java.lang:type~Threading",
  "java.nio:type=BufferPool,name=direct" : "http://localhost:8080/adm/bean/java.nio:type~BufferPool,name~direct",
  "java.nio:type=BufferPool,name=mapped" : "http://localhost:8080/adm/bean/java.nio:type~BufferPool,name~mapped",
  "java.util.logging:type=Logging" : "http://localhost:8080/adm/bean/java.util.logging:type~Logging",
  "org.squbs.unicomplex:type=CubeState,name=admin" : "http://localhost:8080/adm/bean/org.squbs.unicomplex:type~CubeState,name~admin",
  "org.squbs.unicomplex:type=Cubes" : "http://localhost:8080/adm/bean/org.squbs.unicomplex:type~Cubes",
  "org.squbs.unicomplex:type=Extensions" : "http://localhost:8080/adm/bean/org.squbs.unicomplex:type~Extensions",
  "org.squbs.unicomplex:type=Listeners" : "http://localhost:8080/adm/bean/org.squbs.unicomplex:type~Listeners",
  "org.squbs.unicomplex:type=ServerStats,listener=default-listener" : "http://localhost:8080/adm/bean/org.squbs.unicomplex:type~ServerStats,listener~default-listener",
  "org.squbs.unicomplex:type=SystemSetting" : "http://localhost:8080/adm/bean/org.squbs.unicomplex:type~SystemSetting",
  "org.squbs.unicomplex:type=SystemState" : "http://localhost:8080/adm/bean/org.squbs.unicomplex:type~SystemState"
}

你的瀏覽器的JSON插件將會(huì)檢測和允許簡單的復(fù)制這些鏈接河哑。按照提供的鏈接避诽,舉個(gè)例子bean org.squbs.unicomplex:type=Cubes 將會(huì)顯示所有的bean細(xì)節(jié)在下面:

{
  "Cubes" : [
    {
      "fullName" : "org.squbs.admin",
      "name" : "admin",
      "supervisor" : "Actor[akka://squbs/user/admin#104594558]",
      "version" : "0.7.1"
    }
  ]
}

Bean URL & 編碼

所有的bean都在路徑 /adm/bean/之下,跟隨在完整的bean對象名稱之后璃谨。這個(gè)bean對象名稱通過如下的轉(zhuǎn)換使它可以通過URL簡單的訪問:

  1. bean名稱中的 =轉(zhuǎn)換為 ~沙庐。
  2. 所有其他的字符被編碼成標(biāo)準(zhǔn)的URL編碼。舉個(gè)例子佳吞,一個(gè)空格將被編碼成%20拱雏。

舉個(gè)例子,為了訪問名稱為java.lang:type=GarbageCollector,name=PS Scavenge的對象底扳,URL的路徑為/adm/bean/java.lang:type~GarbageCollector,name~PS%20Scavenge

監(jiān)聽(Listener)

squbs-admin綁定admin-listener铸抑。默認(rèn)的,這是default-listener的別名衷模。服務(wù)可以重寫Unicomplex配置和重新分配admin-listener別名到其他定義的選擇的監(jiān)聽鹊汛。下面的例子示例了在你的application.conf文件中如何重新分配別名:

定義在Unicomplex的別名

default-listener {
  aliases = [admin-listener]
}

重寫 application.conf的例子

default-listener {
  aliases = []
}

my-listener {
  aliases = [admin-listener]
}

禁止(Exclusions)

在很多情況下,MXBean可能包含敏感信息阱冶,并且不應(yīng)該在admin console展示刁憋。最好的方法是,當(dāng)然木蹬,首先不將這些信息包含在JMX bean中至耻。然而,某些情況下時(shí)間這些bean不由你的組件暴露镊叁,而由第三方組件或類庫尘颓,并且這樣沒有辦法在不修改第三方組件的情況下隱藏這些信息。Exclusion是admin console提供的特性來在JSON中隱藏這些信息晦譬。

配置Exclusions

Exclusion配置在 squbs.admin 疤苹,在你的標(biāo)準(zhǔn)配置文件中 application.conf 中,所見如下:

squbs.admin {
  exclusions = [
    "java.lang:type=Memory",
    "java.lang:type=GarbageCollector,name=PS MarkSweep::init",
    "java.lang:type=GarbageCollector,name=PS MarkSweep::startTime"
  ]
}
  • 要從控制臺(tái)視圖中排除所有的MXBean蛔添,列出禁用bean對象的名稱痰催。
  • 要從MXBean中排除一個(gè)參數(shù)字段,列出排除bean對象的名稱和字段名迎瞧。
    • bean對象名稱和字段名稱通過 ::分隔
    • 在MXBean的任何深度上夸溶,字段名稱用作任何屬性和字段的的過濾器。如果字段名稱匹配提供的名稱凶硅,它將會(huì)排除缝裁。
  • 在同一個(gè)bean中排除多個(gè)字段,可以通過列出beanName::field1, beanName::field2等等實(shí)現(xiàn)足绅。

錯(cuò)誤響應(yīng)

在請求一個(gè)無效的bean對象名稱或在黑名單bean名稱時(shí)會(huì)返回一個(gè) 404 (NotFound)響應(yīng)捷绑。由于安全原因,兩種情況的結(jié)果都是不可區(qū)分的氢妈。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末粹污,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子首量,更是在濱河造成了極大的恐慌壮吩,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件加缘,死亡現(xiàn)場離奇詭異鸭叙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)拣宏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門沈贝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人勋乾,你說我怎么就攤上這事宋下。” “怎么了辑莫?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵杨凑,是天一觀的道長。 經(jīng)常有香客問我摆昧,道長撩满,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任绅你,我火速辦了婚禮伺帘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘忌锯。我一直安慰自己伪嫁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布偶垮。 她就那樣靜靜地躺著张咳,像睡著了一般帝洪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上脚猾,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天葱峡,我揣著相機(jī)與錄音,去河邊找鬼龙助。 笑死砰奕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的提鸟。 我是一名探鬼主播军援,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼称勋!你這毒婦竟也來了胸哥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤赡鲜,失蹤者是張志新(化名)和其女友劉穎烘嘱,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝗蛙,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蝇庭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捡硅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哮内。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖壮韭,靈堂內(nèi)的尸體忽然破棺而出北发,到底是詐尸還是另有隱情,我是刑警寧澤喷屋,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布琳拨,位于F島的核電站,受9級特大地震影響屯曹,放射性物質(zhì)發(fā)生泄漏狱庇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一恶耽、第九天 我趴在偏房一處隱蔽的房頂上張望密任。 院中可真熱鬧,春花似錦偷俭、人聲如沸浪讳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽淹遵。三九已至口猜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間透揣,已是汗流浹背济炎。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淌实,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓猖腕,卻偏偏與公主長得像拆祈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子倘感,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容