jstatd--收集遠程主機信息

     命令jstatd是一個RMI服務端程序,它的做用至關於代理服務器,創建本地計算機與遠程監控工具的通訊。jstatd服務器將本級的Java應用程序信息傳遞到遠程計算機。
java

    當咱們直接打開jstatd服務器可能會拋出訪問拒絕的異常。
安全

    wKiom1i2eoegU8NgAAEus_P_fYU446.png-wh_50

    這是因爲jstatd程序沒有足夠的權限所致。可使用java的安全策略,爲其分配相應的權限,下面代碼爲jstatd分配了最大的權限,將其保存在jstatd.all.policy文件中:
服務器

            grant codebase "file:/usr/java/jdk1.8.0_25/lib/tools.jar" {tcp

                     permission java.security.AllPermission;ide

            };工具

    wKioL1i2e2Oyq4WfAACXbePcv9A537.png-wh_50


    而後使用如下命令再次開啓jstatd服務器
測試

    jstatd -J-Djava.security.policy=jstatd.all.policy  spa

    服務器啓動成功。-J參數是一個公共的參數,如jps、jstat等命令均可以接受這個參數。因爲jps、jstat命令自己也是Java應用程序,-J參數能夠爲jps等命令自己設置其java虛擬機參數
.net

    默認狀況下,jstatd將在1099端口開啓RMI服務器。
代理

    [root@zhw lib]# ss -lntup|grep 1099

      tcp    LISTEN     0      50        *:1099                  *:*                   users:(("jstatd",pid=14542,fd=14))

   接下來咱們就能夠在另外一個機器上來查看本機的信息了。(咱們規定這個服務器的域名爲 dev.kidcares.cn)

   當咱們測試時,出下下面的錯誤。

    [root@zhw lib]# jstat -gcutil 24252@dev.kidcares.cn:1099

    Remote Exception attaching to rmi://24252@dev.kidcares.cn:1099

後來查詢資料得知:

jstatd能夠經過 內部 rmi和外部rmi 註冊,除了在啓動參數中加入權限意外,也必須加入Java.rmi.server.hostname=101.200.157.115 ,不然會出現 Remote Exception attaching to rmi://24252@101.200.157.115, 緣由跟jconsole同樣,服務端傳過來的IP地址爲 hostname -i的值,因此不必定是101.200.157.115

完整的jstatd啓動選項爲  

jstatd -J-Djava.rmi.server.hostname=101.200.157.115  -J-Djava.security.policy=jstatd.all.policy

再次執行:

[root@zhw lib]# jstat -gcutil 24252@dev.kidcares.cn:1099

  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   

  0.00  62.09  80.24  32.11  98.09  98.45     67    3.402     2    2.912    6.314

相關文章
相關標籤/搜索