戰一:Zabbix監控Tomcat
1、介紹
Java虛擬機(JVM)具有內置的插裝,使您能夠使用JMX監視和管理它。您還可以使用JMX監視工具化的應用程序。
監控原理:當Zabbix-Server需要知道java應用程序的某項性能的時候,會啟動自身的一個Zabbix-JavaPollers進程去連接Zabbix-JavaGateway請求數據,而ZabbixJavagateway收到請求后使用"JMXmanagementAPI"去查詢特定的應用程序,而前提是應用程序這端在開啟時需要"-Dcom.sun.management.jmxremote"參數來開啟JMX遠程查詢就行。Java程序會啟動自身的一個簡單的小程序端口12345向Zabbix-JavaGateway提供請求數據。
從上面的原理圖中可以看出,配置Zabbix監控Java應用程序的關鍵點在於:配置Zabbix-JavaGateway、讓Zabbix-Server能夠連接Zabbix-JavaGateway、Tomcat開啟JVM遠程監控功能等。
2、node2主機上(Tomcat服務器)安裝JDKrpm包
使用Oracle官網的JDK 8的rpm包
官方下載JDK地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
(1)安裝下載下來的JDK 8的rpm包
[root@node2 ~]# yum install jdk-8u211-linux-x64.rpm -y
(2)配置java全局變量
[root@node2 ~]# cat /etc/profile.d/jdk.sh # 設置環境變量 export JAVA_HOME=/usr/java/default export PATH=$JAVA_HOME/bin:$PATH [root@node2 ~]# . /etc/profile.d/jdk.sh # 使環境變量生效
(3)查看JDK版本
[root@node2 ~]# java -version java version "1.8.0_211" Java(TM) SE Runtime Environment (build 1.8.0_211-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
3、下載安裝二進制Tomcat包
(1)從官網下載tomcat二進制安裝包 http://tomcat.apache.org/
下載路徑:https://archive.apache.org/dist/tomcat/
(2)解包,指定解壓的目錄,並創建軟鏈接
[root@node2 ~]# tar xvf apache-tomcat-8.5.42.tar.gz -C /usr/local [root@node2 ~]# ln -sv /usr/local/apache-tomcat-8.5.42/ /usr/local/tomcat ‘/usr/local/tomcat/apache-tomcat-8.5.42’ -> ‘/usr/local/apache-tomcat-8.5.42/’
(3)配置tomcat參數vim /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote #啟用遠程監控JMX -Dcom.sun.management.jmxremote.port=12345 # 默認啟動的JMX端口號,要和zabbix添加主機時候的端口一致即可 -Dcom.sun.management.jmxremote.authenticate=false # 不使用用戶名密碼 -Dcom.sun.management.jmxremote.ssl=false #不使用ssl認證 -Djava.rmi.server.hostname=192.168.7.102" #tomcat主機自己的IP地址,不要寫zabbix服務器的地址
(4)以ROOT身份啟動Tomcat服務(不推薦,賬號破解后就會被黑客以root身份做其他服務的破壞)
[root@node2 tomcat]# ./bin/catalina.sh start Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/java/default Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. [root@node2 tomcat]# ss -nlt State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 *:22 *:* LISTEN 0 50 [::]:12345 # 驗證監聽了12345端口 [::]:* LISTEN 0 100 [::1]:25 [::]:* LISTEN 0 1 [::ffff:127.0.0.1]:8005 [::]:* LISTEN 0 50 [::]:22567 [::]:* LISTEN 0 100 [::]:8009 [::]:* LISTEN 0 50 [::]:35756 [::]:* LISTEN 0 100 [::]:8080 # 監聽8080的tomcat端口 [::]:* LISTEN 0 128 [::]:22 [::]:*
(5)為了tomcat服務安全起見,最好不要用root用戶登錄,防止被破解之后存在安全隱患,建議自己新建一個普通用戶進行登錄
[root@node2 tomcat]# useradd -r java # #創建一個系統賬號,此時就沒有家目錄 [root@node2 tomcat]# chown -R java.java /usr/local/tomcat/ #將tomcat目錄下的文件所有者和所屬組都進行修改 [root@node2 tomcat]# su - java -c /usr/local/tomcat/bin/startup.sh #以java用戶形式進行啟動tomcat服務
(6)查看此時啟動的服務是以java用戶進行啟動的
(7)網頁驗證此時的tomcat服務已經可以訪問
(8)在oracle jdk download官網下載windows版本的JDK,安裝並驗證此時tomcat安裝結果。
官網下載地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
(9)在安裝好的windows版本的JDK后,打開指定的執行程序進行驗證:
(10)遠程登錄連接(遠程此時tomcat主機的IP地址)
(11)連接進去之后有tomcat服務的信息即可,說明安裝正確。
4、在zabbix-server服務端機器上安裝對應的zabbix-java-gateway包
(1)在zabbix-server服務器上安裝zabbix-java-gateway包。
[root@zabbix ~]# yum install zabbix-java-gateway -y
(2)修改/etc/zabbix/zabbix_java_gateway.conf 配置文件
LISTEN_IP="0.0.0.0" # 默認監控0.0.0.0的IP地址 LISTEN_PORT=10052 # 默認監控10052端口 START_POLLERS=5 # 啟動多少個進程輪詢java,要和java 應用保持一定關系 TIMEOUT=30 # 超時時間30s,最大時間也就是30s,盡量超時時長改大點,否則后端服務器還未響應,當大於超時時長才進行響應,此時java-gateway已經顯示超時。
核對配置的信息:
[root@zabbix ~]# grep "^[a-Z]" /etc/zabbix/zabbix_java_gateway.conf LISTEN_IP="0.0.0.0" LISTEN_PORT=10052 PID_FILE="/var/run/zabbix/zabbix_java.pid" START_POLLERS=5 TIMEOUT=30
重啟zabbix-java-gateway服務:systemctl restart zabbix-java-gateway
(3)修改vim /etc/zabbix/zabbix_server.conf 配置文件
JavaGateway=192.168.7.100 # 數據庫的IP地址,此時的數據庫IP地址和zabbix-server在同一機器,也可以分開配置 JavaGatewayPort=10052 # 默認監聽的是10052端口 StartJavaPollers=5 #啟動多少個進程去輪詢java gateway,要和java gateway的配置一致
重啟zabbix-server服務:systemctl restart zabbix-server
(4)查看此時的進程數,就會看到有5個進程
5、登陸zabbix網頁:192.168.7.100/zabbix/index.html,添加JMX接口
(1)在原有的主機上進行選擇,然后將之前配置好的機器進行克隆。
(2)克隆一個新的模板,不需要自己手動新建,節約時間。
(3)添加JMX接口:tomcat服務對應的IP地址
(4)node2上添加Tomcat JMX模板(最好添加自定義的模板,此模板顯示不是很全面)
注意:以下是導入個人自定義的模板:先點擊導入(推薦導入個人自定義模板)
選擇自定義模板,並導入
(5)此時可以看到zabbix-web界面已經顯示JMX變綠色的圖標,說明配置正確。
(6)在安裝了tomcat服務的基礎上安裝zabbix-agent包,將agent也監控上
[root@node2 ~]# yum install zabbix-agent -y # 安裝zabbix-agent包
(7)配置zabbix-agent文件:vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.7.100 # zabbix服務端的IP地址 Hostname=192.168.7.102 # 本機node2主機的IP地址,或者起一個與zabbix服務器端不重名的名稱 ListenPort=10050 # 本機監聽的端口 ListenIP=0.0.0.0 # 允許監聽在本機的地址,0.0.0.0 是監聽所有
(8)重啟zabbix-agent服務
# systemctl restart zabbix-agent
(9)在zabbix-server服務端進行測試驗證此時的zabbix-agent是否正常
[root@zabbix ~]# zabbix_get -s 192.168.7.102 -p 10050 -k "agent.ping" # 顯示結果是1,說明配置正常 1
(10)在zabbix網頁上配置zabbix-agent
添加zabbix-agent
添加Template OS Linux模板,然后點擊更新即可。
查看此時監控的agent和tomcat都顯示綠色,說明監控正常。