国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

基于jmx 實(shí)現(xiàn)異常指標(biāo)監(jiān)測(cè)實(shí)踐

IT那活兒 / 2585人閱讀
基于jmx 實(shí)現(xiàn)異常指標(biāo)監(jiān)測(cè)實(shí)踐

點(diǎn)擊上方“IT那活兒”公眾號(hào),關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了!!! 


  

我們?cè)谌粘_\(yùn)維工作,往往需要對(duì)基于java開發(fā)的組件的重要性能指標(biāo)進(jìn)行實(shí)時(shí)監(jiān)測(cè)與告警,而實(shí)現(xiàn)監(jiān)測(cè)手段用的最多的還是基于jmx(Java Management Extensions)來實(shí)現(xiàn)。

JMX是管理Java的一種擴(kuò)展,用于定義了應(yīng)用程序以及網(wǎng)絡(luò)管理和監(jiān)控的體系結(jié)構(gòu)、設(shè)計(jì)模式、應(yīng)用程序接口以及服務(wù),通過jmx這種機(jī)制可以方便的管理、監(jiān)控正在運(yùn)行中的Java程序,常用于管理線程,內(nèi)存,日志Level,服務(wù)重啟,系統(tǒng)環(huán)境等。

常用部署使用jmx 監(jiān)測(cè)主要是分為如下幾種方式:

1. jvm部署代理agent(主動(dòng)方式):  

JVM 啟動(dòng)時(shí)指定參數(shù),通過 javaagent 的形式運(yùn)行監(jiān)測(cè)程序依賴包,因?yàn)楸O(jiān)測(cè)依賴包跟jvm本身是部署在一起,是通過在進(jìn)程內(nèi)讀取jvm運(yùn)行時(shí)的性能數(shù)據(jù),實(shí)時(shí)將metrics 性能數(shù)據(jù)暴露出來,本質(zhì)上在本機(jī)上利用jmx協(xié)議監(jiān)測(cè)實(shí)現(xiàn),如jmx_exporter/apm(pinpoint/skywalking) /自研agent程序等

2. 開啟jmx遠(yuǎn)程訪問(被動(dòng)方式):

JVM 啟動(dòng)時(shí)指定參數(shù),暴露 JMX 的 RMI 接口,第三方工具調(diào)用 RMI 獲取 JVM 運(yùn)行時(shí)狀態(tài)數(shù)據(jù),常用jconsole/jvisualvm/zabbix等

3. 在自己程序里面自行實(shí)現(xiàn)jmx 自帶MXBean管理接口,讀取性能指標(biāo)信息。 




jmx監(jiān)測(cè)實(shí)例


 

不同客戶環(huán)境不一樣,所采取方式都有所不同,本文以tomcat 8.5.x+jdk1.8監(jiān)測(cè)為例,實(shí)踐利用開啟jmx遠(yuǎn)程訪問的方式, 獲取核心指標(biāo),檢驗(yàn)核心指標(biāo)告警可行性。

1. 核心指標(biāo)

梳理影響業(yè)務(wù)性能的部份關(guān)鍵指標(biāo),用于規(guī)則告警,實(shí)時(shí)發(fā)現(xiàn)應(yīng)用的性能問題。

2. 測(cè)試程序

編寫異常測(cè)試場(chǎng)景程序,檢驗(yàn)利用jmx方式是否能撲獲到異常。

3. 開啟jmx遠(yuǎn)程訪問

打開tomcat/bin/catalina.sh文件,在現(xiàn)有的shell 文件里面的shift與touch "$CATALINA_OUT"的中間,新增以下內(nèi)容:

 

重啟tomcat 服務(wù),利用ps -ef|grep tomcat 檢查參數(shù)是否生效。

4. 異常場(chǎng)景檢測(cè)

1)下載cmdline-jmxclient-0.10.3.jar工具,用于抓取jmx的mbean信息。

http://crawler.archive.org/cmdline-jmxclient/cmdline-jmxclient-0.10.3.jar

2)使用方法

java -jar cmdline-jmxclient-0.10.3.jar --help

Usage: java -jar cmdline-jmxclient.jar USER:PASS HOST:PORT [BEAN] [COMMAND]

說明:如果jmx未開啟用戶名與密碼訪問,需要用- 進(jìn)行替代,而幫助里面。

3)查看服務(wù)器所有Mbeans的信息

java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:10990

mbeans有很多,我們通常重點(diǎn)關(guān)注如下bean即可。

4)場(chǎng)景一:  線程池滿  

告警規(guī)則:ThreadCount=maxThreads 代表線程池已滿。

5)場(chǎng)景二:堆內(nèi)存使用率

告警規(guī)則:

  • l堆內(nèi)存使用/堆內(nèi)存最大分配>0.95 需要告警;

  • l非堆內(nèi)存使用/非堆內(nèi)存最大分配>0.95 需要告警;

  • l元空間使用/元空間最大分配>0.95 需要告警。

6)場(chǎng)景三:死鎖線程

運(yùn)行造成死鎖程序案例,造成多個(gè)線程之間互相等待,形成了死鎖現(xiàn)象。

注意:cmdline-jmxclient提供操作獲取線程信息的方法,按提供的命令參數(shù),在實(shí)踐過程老是報(bào)錯(cuò),網(wǎng)上及官網(wǎng)也沒有搜索到解決方案(https://webarchive.jira.com/browse/HER-1630),目前只能通過編寫代碼來實(shí)現(xiàn)。

long[] ids = threadMXBean.getAllThreadIds();

for (long id : ids) {

   ThreadInfo threadInfo = threadMXBean.getThreadInfo(id);

   System.out.println(threadInfo.getBlockedCount());

   System.out.println(threadInfo.getBlockedTime());

   System.out.println(threadInfo.getWaitedCount());

   System.out.println(threadInfo.getWaitedTime());

}

死鎖線程數(shù)量:3

  • 線程:Thread-40正在等待,線程:Thread-8持有的鎖;

  • 線程:Thread-8正在等待,線程:Thread-7持有的鎖;

  • 線程:Thread-7正在等待,線程:Thread-8持有的鎖。

告警規(guī)則:

  • l死鎖線程數(shù)量>0 需要告警。

7)場(chǎng)景四:內(nèi)存溢出

將tomcat jvm 堆大小調(diào)小并且設(shè)置內(nèi)存溢出時(shí)自動(dòng)生成headdump文件,設(shè)置成 -Xms10m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError ,運(yùn)行造批量生成對(duì)像測(cè)試程序。

存在現(xiàn)象:

  • ljmx  沒有一個(gè)專門指標(biāo)來說明如獲取是否產(chǎn)生了oom 文件;

  • l會(huì)存在進(jìn)程oom 情況下但堆內(nèi)存使用比率并沒有占滿的現(xiàn)象所以內(nèi)存溢出不能完全依賴這個(gè)條件。

告警規(guī)則:

  • l掃描日志關(guān)鍵字OutOfMemoryError  存在就告警;

  • l當(dāng)監(jiān)測(cè)到full gc 次數(shù)在短時(shí)間內(nèi)有明顯增長(zhǎng)時(shí)需要告警。

8)jndi連接池滿場(chǎng)景

告警規(guī)則:

  • ljndi活動(dòng)連接數(shù)=jndi最大連接數(shù)需告警。

9)其它場(chǎng)景

告警規(guī)則:

  • ltomcat進(jìn)程CPU使用率需要根據(jù)業(yè)務(wù)實(shí)際情況配置對(duì)應(yīng)告警閥值;

  • l打開文件數(shù)句柄/最大打開文件數(shù)句柄>0.95 需要告警。

小結(jié):利用jmx 監(jiān)測(cè)并不能完全解決日常監(jiān)測(cè)場(chǎng)景所面對(duì)的問題,需結(jié)合日志關(guān)鍵字提升異常監(jiān)測(cè)的準(zhǔn)確性。


END



本文作者:暨景書

本文來源:IT那活兒(上海新炬王翦團(tuán)隊(duì))

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/129475.html

相關(guān)文章

  • 基于阿里云HiTSDB搭建工業(yè)物聯(lián)網(wǎng)平臺(tái)實(shí)踐

    摘要:摘要基于阿里云全面的物聯(lián)網(wǎng)云計(jì)算與大數(shù)據(jù)技術(shù)搭建云端的企業(yè)能源管理物聯(lián)網(wǎng)平臺(tái)實(shí)現(xiàn)能耗數(shù)據(jù)采集統(tǒng)計(jì)分析平衡調(diào)度節(jié)能優(yōu)化等全面的能源管控協(xié)同平臺(tái)。平臺(tái)架構(gòu)邊緣計(jì)算采集的工業(yè)數(shù)據(jù)上傳到阿里云的物聯(lián)網(wǎng)套件,中間經(jīng)過了協(xié)議的可靠傳輸。 摘要: 基于阿里云全面的物聯(lián)網(wǎng)、云計(jì)算與大數(shù)據(jù)技術(shù)搭建云端的企業(yè)能源管理物聯(lián)網(wǎng)平臺(tái)實(shí)現(xiàn)能耗數(shù)據(jù)采集、統(tǒng)計(jì)分析、平衡調(diào)度、節(jié)能優(yōu)化等全面的能源管控協(xié)同平臺(tái)。是企業(yè)生...

    beanlam 評(píng)論0 收藏0
  • 你應(yīng)當(dāng)知道的7個(gè)Java工具

    摘要:如果應(yīng)用發(fā)生了內(nèi)存泄漏問題,就會(huì)進(jìn)行檢測(cè)生成報(bào)告,并且提供切實(shí)可行的方案去掉這個(gè)問題。主要特性實(shí)時(shí)的內(nèi)存泄漏檢測(cè)和告警一份包含時(shí)間,內(nèi)存大小,速度以及泄漏事件的重要級(jí)別的報(bào)告。 在這篇文章中我們決定收集制作一個(gè)關(guān)于這類工具的簡(jiǎn)略名單,他們中的大多數(shù)工具只是最近推出的。其中一些工具是為Java定制的,但也有一些是支持其他語(yǔ)言。但對(duì)于Java項(xiàng)目而言,他們都是非常好的,并且擁有同一個(gè)愿景:...

    Pandaaa 評(píng)論0 收藏0
  • 使用Prometheus+Alertmanager告警JVM異常情況

    摘要:,負(fù)責(zé)抓取存儲(chǔ)指標(biāo)信息,并提供查詢功能,本文重點(diǎn)使用它的告警功能。,負(fù)責(zé)將告警通知給相關(guān)人員。配置的告警觸發(fā)規(guī)則使用超過最大上限的機(jī)時(shí)間超過秒分鐘分鐘時(shí)間在最近分鐘里超過配置連接,配置。 原文地址 在前一篇文章中提到了如何使用Prometheus+Grafana來監(jiān)控JVM。本文介紹如何使用Prometheus+Alertmanager來對(duì)JVM的某些情況作出告警。 本文所提到的腳本可...

    lushan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<