您的位置:首页 > 运维架构 > Linux

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

2017-04-21 15:08 344 查看
今天在使用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的信息了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息