Monitor JBoss ด้วย ZABBIX

Prawit Tangmanopeanchai
2 min readMay 16, 2020

--

16 May 2020

วันนี้มาซ่อมงานครับ เนื่องจากครั้งที่แล้ว

(https://medium.com/@prawit/monitor-java-application-server-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-zabbix-52cc9fd6f3a2)

ได้ทำการติดตั้ง ZABBIX ให้ monitor Tomcat ซึ่งจริง ๆ ก็ใช้กับ JBoss ได้ด้วย แต่เป็น JBoss6/7 พอถึงเวลามาใช้กับ JBoss ที่เป็น version 8 กลับกลายเป็นใช้ไม่ได้ เลยเป็นที่มาของ blog นี้ครับ

สิ่งที่ใช้ในการทำครั้งนี้

  1. ubuntu 18.04 LTS จาก google cloud platform
  2. zabbix version 4.2
  3. WildFly Core 8.0.0.Final สำหรับ blog นี้จะใช้เป็น mode standalone

ส่วนการติดตั้ง WildFly Core 8.0.0.Final ดูได้จาก link นี้ครับ

https://vitux.com/install-and-configure-wildfly-jboss-on-ubuntu/

หลังจากติดตั้งจน JBoss สามารถใช้งานได้แล้ว ขั้นตอนต่อไปก็เป็นการ enable jmxremote ให้กับ JBoss ของเรา โดยให้เข้าไปแก้ไขที่ file

/opt/wildfly/bin/standalone.conf

โดยส่วนแรกที่ต้องแก้ไขคือ

if [ “x$JBOSS_MODULES_SYSTEM_PKGS” = “x” ]; then
JBOSS_MODULES_SYSTEM_PKGS=”org.jboss.byteman”
fi

ให้แก้ไขเป็น

if [ “x$JBOSS_MODULES_SYSTEM_PKGS” = “x” ]; then
JBOSS_MODULES_SYSTEM_PKGS=”org.jboss.byteman,org.jboss.logmanager”
fi

(คือเพิ่ม “org.jboss.logmanager” เข้าไป)

ต่อจากนั้นให้แก้ไขส่วนที่สอง คือ

if [ “x$JAVA_OPTS” = “x” ]; then
JAVA_OPTS=”-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true”
else
echo “JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS”
fi

โดยให้แก้เป็น

if [ "x$JAVA_OPTS" = "x" ]; thenJAVA_OPTS="-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true"JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote=true”JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345”JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.rmi.port=12345”JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.local.only=false”JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false”JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false”JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=<ip of jboss server>"JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/a:/opt/wildfly/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.1.7.Final.jar"JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager"JAVA_OPTS="$JAVA_OPTS -Dsun.util.logging.disableCallerCheck=true"JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/a:/opt/wildfly/modules/system/layers/base/org/wildfly/common/main/wildfly-common-1.4.0.Final.jar"elseecho "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS"fi

** jmxremote port แล้วแต่ว่าแต่ละท่านจะเลือกใช้นะครับ ในนี้เลือกใช้ port หมายเลข 12345 แล้วก็อย่าลืมเปลี่ยน <ip of jboss server> เป็นหมายเลข ip ของเครื่อง jboss server ด้วย

หลังแก้ไขเสร็จเรียบร้อยก็ทำการ start jboss server ขึ้นมาแล้วตรวจสอบสถานะดู

สิ่งที่เห็นคือ

  1. สถานะ active (running) แสดงว่า jboss เราสามารถ start ขึ้นมาทำงานได้ตามปกติ
  2. ตรวจสอบ service port จะเห็นว่า port หมายเลข 12345 ที่เป็น port ของ jmxremote ได้มีการเปิดขึ้นมาพร้อมให้บริการ
  3. java process ที่ start jboss ขึ้นมา จะมี parameter ตามที่เราแก้ไขใน file standalone.conf

จากนั้นก่อนที่เราจะนำไปเพิ่มใน zabbix เราก็ต้องทดสอบก่อนว่าสามารถใช้งานผ่าน jmxremote ได้หรือไม่ โดยจะทดสอบโดยใช้ jconsole หรือ visualvm

ทดสอบด้วย JConsole

ทดสอบด้วย VisualVM

OK…. เมื่อเราทดสอบแล้วว่า jmxremote สามารถใช้งานได้ เราก็นำไปเพิ่มเข้าที่ zabbix ได้แล้วครับ

จะเห็นว่าหลังจากเราเพิ่มเข้าไปใน zabbix แล้ว เราก็จะเห็นค่าต่าง ๆ ขึ้นมาเลยครับ 😄

--

--

Prawit Tangmanopeanchai
Prawit Tangmanopeanchai

Written by Prawit Tangmanopeanchai

Head of Cloud Implementation Unit at gosoft (Thailand)

No responses yet