1.登錄測試服務器xxxxxx
xxxxxx
su root輸入xxxx
2.先修改Tomcat的啟動腳本,(linux下為catalina.sh),添加以下內容:
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=xxxx
-Dcom.sun.management.jmxremote.port=8999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
備注:
-Dcom.sun.management.jmxremote.port=8999,是jmxremote使用的端口號,可修改。
-Dcom.sun.management.jmxremote.authenticate=false,表示不需要鑒權,主機+端口號即可監控。
3.重啟tomcat
kill -9 $(ps -ef | grep -i "tomcat" | awk 'NR==1{print $2}')
sh /app/tomcat-xxx/bin/startup.sh (注意路徑以服務器實際路徑為准)
4.windows下運行JAVA_HOME/bin程序
jconsole或jvisualvm
輸入xxx:8999
5.安裝並啟動open-falcon agent(從安裝的server拷貝agent過來,然后啟動服務,114 server也要裝agent)
#新建目錄:mkdir -p /app/open-falcon
#上傳到服務器並解壓
tar xvf agent.tar.gz
#修改/app/open-falcon/agent/conf/cfg.json
heartbeat模塊和transfer模塊下的ip地址,將127.0.0.1:6030和127.0.0.1:8433兩個地址中的127.0.0.1
改成open-falcon的server的IP地址xxx就可以了,端口不需要改。
#啟動服務
nohup /app/open-falcon/agent/bin/falcon-agent -c /app/open-falcon/agent/config/cfg.json &
開啟服務后,機器會開啟1988端口,有防火牆的可以添加防火牆規則,增加1988端口。
#檢查下進程和端口
netstat -antp | grep 1988
ps -ef | grep -i "falcon"
6.jmxmon部署
#cd /app/open-falcon上傳jmxmon包
#解壓:tar xvf jmxmon-v0.0.2.tar
#修改配置jmxmon-v0.0.2/conf.properties
# 需要監聽的本地jmx端口,支持監聽多個端口,多端口用逗號分隔
jmx.ports=8999
# 本地agent的上報url,如果使用open-falcon的默認配置,則這里不需要改變
agent.posturl=http://localhost:1988/v1/push
#啟動服務
sh control start
sh control tail查看日志,或者cat var/app.log以確認程序是否正常啟動
7.falcon-server驗證
http://xxx:9090/ xxx/xxx 搜索主機名
####################################################################################################
參考:http://book.open-falcon.com/zh_0_2/usage/jmx.html
https://github.com/toomanyopenfiles/jmxmon/blob/master/README.md
jmxmon 簡介
jmxmon是一個基於open-falcon的jmx監控插件,通過這個插件,結合open-falcon agent,
可以采集任何開啟了JMX服務端口的java進程的服務狀態,並將采集信息自動上報給open-falcon服務端
主要功能
通過jmx采集java進程的jvm信息,包括gc耗時、gc次數、gc吞吐、老年代使用率、新生代晉升大小、活躍線程數等信息。
對應用程序代碼無侵入,幾乎不占用系統資源。
采集指標
Counters Type Notes
parnew.gc.avg.time GAUGE 一分鍾內,每次YoungGC(parnew)的平均耗時
concurrentmarksweep.gc.avg.time GAUGE 一分鍾內,每次CMSGC的平均耗時
parnew.gc.count GAUGE 一分鍾內,YoungGC(parnew)的總次數
concurrentmarksweep.gc.count GAUGE 一分鍾內,CMSGC的總次數
gc.throughput GAUGE GC的總吞吐率(應用運行時間/進程總運行時間)
new.gen.promotion GAUGE 一分鍾內,新生代的內存晉升總大小
new.gen.avg.promotion GAUGE 一分鍾內,平均每次YoungGC的新生代內存晉升大小
old.gen.mem.used GAUGE 老年代的內存使用量
old.gen.mem.ratio GAUGE 老年代的內存使用率
thread.active.count GAUGE 當前活躍線程數
thread.peak.count GAUGE 峰值線程數
建議設置監控告警項
不同應用根據其特點,可以靈活調整觸發條件及觸發閾值
告警項 觸發條件 備注
gc.throughput all(#3)<98 gc吞吐率低於98%,影響性能
old.gen.mem.ratio all(#3)>90 老年代內存使用率高於90%,需要調優
thread.active.count all(#3)>500 線程數過多,影響性能