Monitor Java Application Server ด้วย Zabbix
อ้างอิงจาก clip นี้เลยนะครับ https://www.youtube.com/watch?v=g_0B_NvfX-A&t=277s
ในตอนนี้จะไม่พูดถึงการติดตั้ง zabbix หรือ tomcat นะครับ ถ้ายังไม่เคยทำสามารถไปดู blog ตอนเก่า ๆ ได้ ใน blog นี้จะเริ่มจากที่ได้ทำการติดตั้ง zabbix และมีการ enable jmxremote ที่ตัว tomcat เรียบร้อยแล้ว
การจะให้ zabbix สามารถ monitor Java Application Server ได้เราจะต้องทำการติดตั้ง Zabbix Java gateway ก่อน โดยให้ทำการติดตั้ง zabbix-java-gateway ที่ zabbix server ด้วยคำสั่ง
sudo apt install zabbix-java-gateway
จากนั้นให้ทำการแก้ไข file /etc/zabbix/zabbix_server.conf โดยให้แก้ไขค่าดังนี้
JavaGateway=<ip ของ zabbix server>
JavaGatewayPort=10052
StartJavaPollers=5
และแก้ไข file /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="<ip ของ zabbix server>"
LISTEN_PORT=10052
START_POLLERS=5
หลังแก้ไขเสร็จแล้วให้ทำการ enable server zabbix-java-gateway ด้วยคำสั่ง
systemctl enable zabbix-java-gateway
แล้วทำการ restart service ต่าง ๆ ของ zabbix server อีกครั้ง
systemctl restart zabbix-server zabbix-agent apache2 zabbix-java-gateway
คราวนี้ zabbix server เราก็พร้อมจะ monitor Java Application Server แล้ว
ยกตัวอย่างการตั้งให้ monitor การใช้งาน cpu ของ JVM เราก็เลือกที่ menu “Configuration” แล้วเลือกที่ “Items”
กด Create Item
ตั้งชื่อสิ่งที่เราจะ monitor แล้วเลือก Type เป็น JMX agent แล้วใส่ Key เป็น “jmx[“java.lang:type=OperatingSystem”,ProcessCpuLoad]”
เสร็จแล้วกด Add ก็จะได้รายการ
ลองตรวจสอบข้อมูลโดยไปที่ Monitoring -> Latest data
ลอง click ที่ graph
เนื่องจากเครื่องไม่ได้ทำอะไร การใช้ cpu เลยต่ำไปหน่อย 😄
จะเห็นว่าตอนนี้เราก็สามารถใช้ zabbix ในการ monitor Java Application Server ได้แล้ว
#6 May 2020
เนื่องจากพบว่าหลังจากได้ติดตั้งไปแล้ว ค่า jmx บางตัวแสดงขึ้นมาเป็น “Not Supported” หากท่านใดเจอปัญหาแบบเดียวกันให้ใส่ค่าของ “key” ตามนี้ครับ
ขอยกตัวอย่างจากค่า key นี้
“jmx[“java.lang:type=OperatingSystem”,ProcessCpuLoad]”
การหาค่า key ให้เปิดจากโปรแกรม “jconsole” ซึ่งติดมากับโปรแกรม VisualVM อยู่แล้ว
แล้วทำการ browse ที MBean
จะพบว่าสิ่งที่เราต้องการจะ monitor มีชื่อของ Object (ObjectName) ว่า “java.lang:type=OperationSystem”
ส่วนค่าของ Attribute ที่เราต้องการคือ “ProcessCpuLoad”
รูปแบบของค่า JMX key ที่เราจะใส่ให้กับ zabbix จะเป็นดังนี้
jmx[“<object>”,”<attribute”]
ดังนั้นค่า key ที่เราจะใส่จึงเป็นดังนี้
jmx[“java.lang:type=OperatingSystem”,”ProcessCpuLoad”]
ครับ หากใครเจอปัญหาแบบเดียวกันนี้ก็เปลี่ยนค่า key ใหม่โดยหาจากใน jconsole ได้เองเลยครับ