天天看點

jmx遠端連接配接阿裡雲伺服器記錄

應用環境
  1. 阿裡雲伺服器:近期雙十一阿裡雲伺服器很便宜是以我買了一個伺服器來自己動手試試看(騰訊雲之前沒看到是以沒考慮)
  2. linux :CentOS7 64
  3. linux :jdk8
  4. linux :activemq
  5. 本地 window jdk8
  6. 使用jconsole進行jmx連接配接
進行activemq配置參考連結
  1. 網絡上有很多activemq的下載下傳安裝,自行百度。如果要進行jmx連接配接,直接啟動bin目錄下的activemq,不需要進去相關linux目錄。
  2. 在/conf目錄下修改activemq.xml 在broker标簽中添加 userJmx=“true” (這個必須配置,官方文檔也有)
  3. 在/conf目錄下修改activemq.xml 的broker标簽下面的 (改動了createConnector為true 還有connectorHost=“120.25.237.138” connectorPort=“11099”)(官方文檔并不是這麼做的,不過我成功了,現在沒時間研究了以後有機會會深入了解的)
    <managementContext>
            <managementContext createConnector="true" connectorHost="120.25.237.138" connectorPort="11099"/>
        </managementContext>
               
  4. 一旦使用jmx監控則會需要用到conf目錄下的jmx.access(記錄賬号的權限)以及jmx.password(記錄賬号密碼).那麼你需要把這兩個檔案通過一下指令設定成隻讀模式,這樣啟動activemq才不會報錯(原本不使用兩個檔案是以就算你不設定也不會報錯)
    chmod -400 /"你的activemq安裝目錄“/conf/jmx.*
               
  5. 修改bin目錄下的activemq啟動檔案。需要在裡面的invoke_start方法裡面添加
    ACTIVEMQ_HOME=/usr/local/activemq
        ACTIVEMQ_BASE=${ACTIVEMQ_HOME}
        ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=11099 -    Dcom.sun.management.jmxremote.ssl=false \-Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_BASE}/conf/jmx.password \-Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_BASE}/conf/jmx.access"
               

    以下代碼(官方文檔也有),當然網上亂七八糟的寫法很多。

    其實結果大同小異,都是啟動jmx 和 設定密碼驗證檔案,以及取消ssl。設定到了就可以了

  6. 由于阿裡雲貌似自己做了安全組管理,是以防火牆作用不大就預設關閉了。是以防火牆的設定都去安全組設定

    在開啟activemq之後,會開啟很多相關的端口,其中有2個額外的随機端口,是jmx連結的關鍵,因為這兩個額外的端口會影響jmx連結,需要在安全組裡面打開這兩個端口。當然,其他相關端口也需要打開的。下面是相關指令

    ps -ef | grep activemq | grep -v grep
     netstat -tunlp | grep  “對應pid”
               
  7. 最後一個很坑的問題:由于阿裡雲伺服器有着2個ip,是以他的hostname預設為私網ip,可是我需要公網通路,是以他的啟動綁定了私網ip導緻無法遠端連結。使用 hostname -i 指令可以檢視。在/etc/hosts檔案中修改hostname,之後啟動,才能正常連接配接。

    重點來了:網上很多人都說修改hosts檔案,沒說為什麼,而且修改的地方其實也不起作用(或者是我了解錯了)。

    下面貼上我的hosts檔案(當然不是7777啦 我自己瞎改改的 不給你看哈哈哈)

    ::1	localhost	localhost.localdomain	localhost6	localhost6.localdomain6
    127.0.0.1	localhost	localhost.localdomain	localhost4	localhost4.localdomain4
    120.25.XXX.XXX	77777777777777777777777	77777777777777777777
               
    很多部落格都說是把127.0.0.1修改成本機ip,可是筆者改了沒作用,最後在這裡找到了靈感網頁連結,然後修改了下面的ip位址(從178.XXX.XXX.XXX到120.25.XXX.XXX)。改完可以進行jmx連結了。筆者也去百度了一下這幾個ip的作用。最後總算是了解了。
總結
  1. 筆者花了很多時間,2、3天把,在弄這件事,本以為不需要很多時間是以想一步到位,最後還是自己虛拟機搭載然後一步步排查問題,果然什麼事情都急不來的,還是應該一步一步來。(搭了虛拟機進度可快多了)
  2. 由于這幾天都在搞linux是以對linux的指令熟悉了不少吧。
番外
  1. 進行java代碼擷取jmx屬性時。可以修改activemq.xml裡面的borker端口的borkername,因為預設為localhost,我是讀取本機ip然後讀取的,是以出錯了,由此記錄。

tomcat

  1. 再/bin目錄下的catalina.sh檔案添加内容(在# ----- Execute The Requested Command -----------------------------------------前添加)

如果設定安全驗證為true後,比如将jdk目錄下的/jdk8/jre/lib/manamger/目錄下面的jmxromate.access 和 jmxromate.password兩個檔案 (分别是權限和密碼)設定為600 ,如果沒有 jmxromate.password 就把 jmxromate.password。temlate變成 jmxromate.password

然後啟動