Linux记录-JMX监控JAVA进程

1.下载

下载地址:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html,下载jmx_remote-1_0_1_03-ri.zip和jmx-1_2-ri.zip。

2.上传jmx-java.zip并解压到$JAVA_HOME/jre/lib/ext下

3.修改xxx.sh
加入
export JAVA_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=10.203.12.64"
找到nohup java xxx 然后改为
nohup java ${JAVA_OPTS}

4.重启服务
sh xxx stop
ps -ef | grep java
kill -9 (jps | grep -i "IdeProvider" | awk ‘NR==1{print $1}‘)
sh xxx start

5.安装并启动open-falcon agent(从安装的server拷贝agent过来,然后启动服务,xxx 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地址xxxxxx就可以了,端口不需要改。
#启动服务
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
#cp conf.example.properties conf.properties
#修改配置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://xxxx: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 线程数过多,影响性能

原文地址:https://www.cnblogs.com/xinfang520/p/10481632.html

时间: 2024-09-30 10:53:55

Linux记录-JMX监控JAVA进程的相关文章

Zabbix 通过 JMX 监控 java 进程

参考: [ JMX monitoring ] [ Zabbix Java gateway ] [ JMX Monitoring (Java Gateway) not Working ] 这里会说明通过 JMX 监控 java 进程的配置过程以及需要注意的问题. 本文在 zabbix 已经安装好的基础之上展开. 如果使用 zabbix_proxy , 配置完全一致, 只需要打开zabbix_proxy 对 java app server 有所有端口的访问权限即可. 环境说明 基本环境 OS: Ce

利用VisualVm和JMX远程监控Java进程

自Java 6开始,Java程序启动时都会在JVM内部启动一个JMX agent,JMX agent会启动一个MBean server组件,把MBeans(Java平台标准的MBean + 你自己创建的MBean)注册到它里面,然后暴露给JMX client管理.简单来说就是每个Java程序都可以通过JMX来被JMX client管理,而且这一切都是自动发生的.而VisualVm就是一个JMX Client. VisualVm能够自动发现本机的Java进程,如果要监控远程主机上的Java进程则需

linux内存不足导致java进程被kill掉

记得之前在国内现金贷贷超放量时,后台java进程莫名奇妙就没了, 查看 /var/log/message 出现如下日志,标明,Linux 系统自身把 Java 进程杀掉了 Jun 28 02:58:27 hilife-dev001 kernel: Out of memory: Kill process 14561 (java) score 52 or sacrifice child 当 Linux 系统内存不足时,系统会把当前系统占用系统内存过高的进程当做流氓进程,然后系统发出信号将这个流氓进程

使用visualvm远程监控java进程(以hadoop进程为例)

(一)下载安装 1.下载visualvm 在官网上下载即可,有mac版 2.工具-插件,选择感兴趣的插件进行安装 此时若本地有运行java进程,则在本地那里已经可以进行监控分析 (二)远程服务器配置 1.在任意目录建立文件jstatd.all.policy,内容如下: grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; }; 2.运行jstad服务 n

LINUX配置JMX监控tomcat7

1) 正常安装JDK和Tomcat 配置环境变量(此步略过) 2) 配置JMX访问文件     # cd $CATALINA_HOME/conf/     # cp $JAVA_HOME/jre/lib/management/jmxremote.password.template jmxremote.password     # chmod 700 jmxremote.password    (一定注意这个文件默认是不可写的)     # vi $CATALINA_HOME/conf/jmxre

Windows/Linux环境下查看Java进程ID方法

如果启动多个Java程序,因所有Java程序都在JVM中运行,进程管理器会出现多个java.exe,但如何确定某个Java程序与进程中java.exe是对应的呢? 可以使用Java自带的VisualVM工具实现,在Windows的CMD控制台或者Linux终端下执行"jvisualvm"命令进入Java VisualVM工作台. 鼠标双击左侧树形进程列表中某一进程(PID即为进程ID),在弹出窗口右下方点击"系统属性"选项卡,向下拖动滚动条到底部,查看"u

shell脚本--监控java进程存活脚本

#!/bin/bash base_dir=/opt war_processor="tomcat" jar_processor="manager-server.jar platform-server.jar platform-item.jar platform-shop.jar platform-task.jar platform-trade.jar platform-user.jar" IP_ADDR=`ifconfig |grep inet|awk -F &quo

zabbix 通过jmx监控java中间件

tomcat添加:JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345  -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.128.46.23" weblogic

Java进程监控

目录 1.引言 2. 程序启停, 为进程自定义项目名称 3. 操作系统判断 4. 获取进程信息 5. 内存,CPU信息 6. 堆内存信息 7. 端口信息 8. 线程信息 9. MXBean使用样例 9.1 根据pid获取jvm对象 9.2 根据jvm对象获取jmx服务 9.3. 使用MXBean代理获取具体管理工具 9.4 访问MXBean demo 9.6 demo ?最近项目需要对Java进程,堆栈信息,内存,cpu等资源的消耗进行监控,借鉴了git已有的轮子JPOM java项目管理系统和