Hiển thị các bài đăng có nhãn zabbix. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn zabbix. Hiển thị tất cả bài đăng

Thứ Sáu, 11 tháng 1, 2019

Zabbix Check Java JMX






ZABBIX MONITORING JAVA JMX

    


Contents
Sơ đồ hoạt động của Zabbix JMX.. 2
Phần 1: Cài đặt Tomcat + Enable JMX.. 2
Phần 2: Cài đặt và setting Zabbix-Server. 4
Phần 3: Bảo mật JMX.. 6
Phần 4: Fix lỗi template Tomcat7/8 của zabbix not-support. 8



tuanduong122


Sơ đồ hoạt động của Zabbix JMX



Ở bài hướng dẫn này chúng ta sẽ sử dụng ở phía client là : tomcat web-server và enable jmx lên (với các tiến trình chạy trên nền java khác cũng tương tự).
[Zabbix-server --- Zabbix Java gateway --- Tomcat JMX]

Phần 1: Cài đặt Tomcat + Enable JMX

Cài đặt java
# tar -xvzf jdk-8u181-linux-x64.tar.gz
# chown -R root.root jdk1.8.0_181
# mv jdk1.8.0_181 /opt/

Setting môi trường java
# alternatives --install /usr/bin/java java /opt/jdk1.8.0_181/bin/java 2
# alternatives --config java
# alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_181/bin/jar 2
# alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_181/bin/javac 2
# alternatives --install /usr/bin/javaws javaws /opt/jdk1.8.0_181/bin/javaws  2
# alternatives --set jar /opt/jdk1.8.0_181/bin/jar
# alternatives --set javac /opt/jdk1.8.0_181/bin/javac
# alternatives --set javaws /opt/jdk1.8.0_181/bin/javaws
# java –version

Cài đặt Tomcat
Tải tomcat tại đường dẫn https://tomcat.apache.org/download-80.cgi
# tar -xvzf apache-tomcat-8.5.37.tar.gz
# mv apache-tomcat-8.5.37 /opt/tomcat

Setting tomcat bật JMX
# vim /opt/tomcat/bin/setenv.sh
#Set Heap Memory Commnit and Max
export CATALINA_OPTS="$CATALINA_OPTS -Xms1024m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx3096m"

#Enable JMX with no authenticaion
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote \
 -Dcom.sun.management.jmxremote.port=12345 \
 -Dcom.sun.management.jmxremote.authenticate=false \
 -Dcom.sun.management.jmxremote.ssl=false \
 -Djava.rmi.server.hostname=192.168.80.134"
IP 192.168.80.134 chính là ip của client.
Start tomcat
# cd /opt/tomcat/bin
# ./startup.sh
# tail -n 1000 /opt/tomcat/logs/*
# netstat -apln | grep 12345
tcp        0      0 :::12345                    :::*                        LISTEN      1553/java

Ta có thể tải jconsole.jar về để check real-time (Yêu cầu cài đặt java jdk để mở trên window https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html )






  



Phần 2: Cài đặt và setting Zabbix-Server


Cài đặt thêm zabbix-gateway-java trên zabbix-server
# yum install zabbix-java-gateway

Thêm config
[root@zabbix-server opt]# vim /etc/zabbix/zabbix_server.conf
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5

[root@ zabbix-server opt]# vim /etc/zabbix/zabbix_java_gateway.conf
LISTEN_PORT=10052
START_POLLERS=5

Restart zabbix-server và zabbix-gateway java
# /etc/init.d/zabbix-server restart
# /etc/init.d/zabbix-java-gateway restart

# ps aux | grep java
zabbix     2212  0.0  0.2 168920  3388 ?        S    21:03   0:00 /usr/sbin/zabbix_server: java poller #1 [got 0 values in 0.000057 sec, idle 5 sec]
zabbix     2213  0.0  0.2 168920  3388 ?        S    21:03   0:00 /usr/sbin/zabbix_server: java poller #2 [got 0 values in 0.000043 sec, idle 5 sec]
zabbix     2214  0.0  0.2 168920  3388 ?        S    21:03   0:00 /usr/sbin/zabbix_server: java poller #3 [got 0 values in 0.000059 sec, idle 5 sec]
zabbix     2215  0.0  0.2 168920  3388 ?        S    21:03   0:00 /usr/sbin/zabbix_server: java poller #4 [got 0 values in 0.000034 sec, idle 5 sec]
zabbix     2216  0.0  0.2 168920  3388 ?        S    21:03   0:00 /usr/sbin/zabbix_server: java poller #5 [got 0 values in 0.000049 sec, idle 5 sec]
zabbix     2275  2.4  2.1 2353872 30608 ?       Sl   21:04   0:00 java -server -classpath lib:lib/android-json-4.3_r3.1.jar:lib/logback-classic-0.9.27.jar:lib/logback-core-0.9.27.jar:lib/slf4j-api-1.6.1.jar:bin/zabbix-java-gateway-3.4.15.jar -Dzabbix.pidFile=/var/run/zabbix/zabbix_java.pid -Dzabbix.listenPort=10052 -Dzabbix.startPollers=5 com.zabbix.gateway.JavaGateway
root       2287  0.0  0.0 103324   896 pts/0    S+   21:04   0:00 grep java


Phần 1 ta đã cài agent, tiếp theo ta sẽ add client vào giám sát trong zabbix
Add hoặc sửa Host




Thêm Template:










Phần 3: Bảo mật JMX

Mục đích là để bảo mật JMX. Khi kết nối cần phải nhập pass và user. https://db.apache.org/derby/docs/10.10/adminguide/radminjmxenabledisable.html
Stop tomcat. Change lại setenv.sh
# /opt/tomcat/bin/shutdown.sh
# vim /opt/tomcat/bin/setenv.sh
#Enable JMX with authentication. You need create file "jmxremote.access" and "jmxremote.password" and chown readonly permission.
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote \
 -Dcom.sun.management.jmxremote.port=12345 \
 -Dcom.sun.management.jmxremote.authenticate=true \
 -Dcom.sun.management.jmxremote.password.file=/opt/tomcat/conf/jmxremote.password \
 -Dcom.sun.management.jmxremote.access.file=/opt/tomcat/conf/jmxremote.access \
 -Dcom.sun.management.jmxremote.ssl=false \
 -Djava.rmi.server.hostname=192.168.80.134"

[root@java-client ~]# vim /opt/tomcat/conf/jmxremote.password
monitorRole  1234321
controlRole  1234567
[root@java-client ~]# vim /opt/tomcat/conf/jmxremote.access
monitorRole readonly
controlRole readwrite
[root@java-client ~]# chmod 600 /opt/tomcat/conf/jmxremote.access
[root@java-client ~]# chmod 600 /opt/tomcat/conf/jmxremote.password

# /opt/tomcat/bin/startup.sh

Client đã setting password xong. Giờ cần khai báo user/pass cho zabbix-server
Cách 1: Vào sửa từng Item trong Template


Cách 2: Export Template ra, sửa trực tiếp tất cả iteam trong file .xml và Import lại

Ta Replace All
                    <username/>
                    <password/>
Thành
                    <username>monitorRole</username>
                    <password>1234321</password>
Hoặc có thể sử dụng MACRO của zabbix thay cho trường Username/pass cũng được.

                    <username>{$USER_JMX}</username>
                    <password>{$PASS_JMX}</password>








Phần 4: Fix lỗi template Tomcat7/8  zabbix not-supported.



VD: Nhìn trên zabbix ta có Item : Template App Apache Tomcat JMXhttp-8080 threads max
Có key: jmx["Catalina:type=ThreadPool,name=http-8080",maxThreads]

Ta sử dụng Jconsole / Mbeans để tìm vị trí của nó trong tree

Tomcat version 7/8 sử dụng connector NIO. Vậy ta có kết luận là Zabbix đang gọi sai Name trong ThreadPool

Ta vào Template của zabbix, sửa lại theo đúng tên như sau:


jmx["Catalina:type=ThreadPool,name=http-8080",maxThreads]
Sửa thành:
jmx["Catalina:type=ThreadPool,name=\"http-nio-8080\"",maxThreads]
-------------------------------------------------------
Ngoài ra ta có thể tải check_jmx của nagios để check bằng console

Ta chạy lệnh
[root@zabbix-server]# ./check_jmx -U  service:jmx:rmi:///jndi/rmi://192.168.80.134:12345/jmxrmi -O "Catalina:type=ThreadPool,name=\"http-nio-8080\"" -A maxThreads
JMX OK maxThreads=200
Lệnh check_jmx chính là chạy :
[root@zabbix-server]#  java -cp jmxquery.jar org.nagios.JMXQuery -U  service:jmx:rmi:///jndi/rmi://192.168.80.134:12345/jmxrmi -O "Catalina:type=ThreadPool,name=\"http-nio-8080\"" -A maxThreads
JMX OK maxThreads=200



Debug exec pod with no any command support

  Một ngày đẹp trời pod bị lỗi. Bạn thử ngay lệnh "kubectl exec -it ..." vào pod kiểm tra. Nhưng quãi đạn, pod không hỗ trợ bất kỳ...