jvisualvm 远程监控centos上的elasticsearch碰到的问题

来源:互联网 发布:java什么水平月薪一万 编辑:程序博客网 时间:2024/06/05 22:35

今天在使用jvisualvm 远程监控centos上的elasticsearch碰到了一系列的问题,担心以后忘记了,现在做一个总结
remote 环境:elasticsearch ip:10.10.3.248
local jdk: 1.8
1.jvisualvm 监控远程的的虚拟机需要在远程机器上运行jstatd,所以在10.10.3.248 的java的bin目录下运行jstatd, 如不出意外会出报以下的错:
Could not create remote object
access denied (“java.util.PropertyPermission” “java.rmi.server.ignoreSubClasses” “write”)
java.security.AccessControlException: access denied (“java.util.PropertyPermission” “java.rmi.server.ignoreSubClasses” “write”)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.security.AccessController.checkPermission(AccessController.java:884)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.System.setProperty(System.java:792)
at sun.tools.jstatd.Jstatd.main(Jstatd.java:139)
这时因为没有授权,在java的bin目录下执行vim jstatd.all.policy 然后写入下面的内容,详情参见
http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstatd.html
grant codebase “file:${java.home}/../lib/tools.jar” {
permission java.security.AllPermission;
};
jvisualvm 的官方介绍 参见:http://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/overview_tab.html
然后 :wq保存
然后再运行 ./jstatd -J-Djava.security.policy=jstatd.all.policy 这次应该不会报错了。
2.接下来又有新的问题,这次我在jvisualvm里remote点右键添加10.10.3.248之后又发现cpu没有监控图像,提示’Not supported for this JVM’,这里原来是因为没有在elasticsearch 的启动参数上加上jmx的参数
于是,在elasticsearch的conf/jvm.options里加上下面这几句话
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=6666
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
然后将%java_home%/jre/lib/management/jmxremote.password.template 复制一份为jmxremote.password 然后把该文件的归后两行给去掉注释即可
并且还要给jmxremote.password 授权为只读 chmod 666 jmxremote.password 必须为只读不然会报错的。
即下面这两行前的#号去掉
monitorRole QED
controlRole R&D
3.接下来在jvisualvm里的remote结点10.10.3.248里点右键添加Add Jmx Connection,如下图
这里写图片描述
接下来稍微等一会儿就会出现一个如下图红框所示的jmx连接
这里写图片描述
若接下来仍然不能连接提示:
service:jmx:rmi 无法连接到10.10.3.248 那么请执行hostname -i 检查hostname 如下:
hostname -i
出来的结果必须是本机ip:比如 10.10.3.213 如果结果中有其它的ip如127.0.0.1等,则连接不上,请修改host去掉127.0.0.1
若仍连接不上请关闭防火墙:/bin/systemctl stop iptables.service 我用的是centos7,如果是别的centos6请使用相应版本的关闭防火墙的命令
接下来点击这个jmx连接就会在右边出现熟悉的cpu的信息了。

这里写图片描述

0 0
原创粉丝点击