配置 Zabbix 監控 Tomcat

背景

    項目後端架構使用 Tomcat 做爲 Web 服務的容器,在系統設計之初,考慮到大量併發的狀況,將後端拆分紅若干個模塊,分別經過部署在集羣中的 Tomcat 加載,這些 Tomcat 可否正常工做而且在業務高峯承受住大量的請求,成爲了關鍵。java

    一開始搭建監控體系時,僅僅監控了集羣中每臺服務器系統的各項指標,也就是隻添加了 Template OS Linux 模板,對 Tomcat 進程的狀態很難把控。mysql

 

JMX

    JMX在Java編程語言中定義了應用程序以及網絡管理和監控的體系結構、設計模式、應用程序接口以及服務。一般使用JMX來監控系統的運行狀態或管理系統的某些方面,好比清空緩存、從新加載配置文件等git

    優勢能夠很是容易的使應用程序具備被管理github

    伸縮性的架構每一個JMX Agent服務能夠很容易的放入到Agent中,每一個JMX的實現都提供幾個核心的Agent服務,你也能夠本身編寫服務,服務能夠很容易的部署,取消部署。sql

    主要提供接口,容許有不一樣的實現apache

                                                                                        ----------    摘自《百度百科》編程

    zabbix 監控 tomcat,實際上也是經過 Java 本身的 JMX 來獲取數據的,tomcat 須要配置 JMX。後端

 

配置 Tomcat JMX

  1. 安裝 JDK、tomcat

    官網下載 java jdk 到服務器,配置 /etc/peofile設計模式

JAVA_HOME=/usr/java/jdk1.7.0
JRE_HOME=/usr/java/jdk1.7.0/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

    官網下載 tomcat數組

    配置 tomcat JMX,編輯 ./bin/catalina.sh

CATALINA_OPTS="-Dcom.sun.management.jmxremote=ture
-Djavax.management.builder.initial=
-Djava.rmi.server.hostname=10.12.41.127      #tomcat IP
-Dcom.sun.management.jmxremote.port=12345    
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
"

# ----- Execute The Requested Command  在這行上面添加

 

配置 zabbix     

    詳細安裝參考:

    傳送門:https://my.oschina.net/u/2470065/blog/716047

    編譯安裝 zabbix 時須要添加其對 Java 支持(--enable-java):

./configure --prefix=/usr/local/zabbix-3.0.3 --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java

        zabbix_server 開啓 java poller,zabbix_java 開啓 JavaGateway,端口爲 10052,tomcat JMX 開啓 12345 提供性能數據

    修改 JavaGateway 的配置文件,$zabbix_server_home/sbin/zabbix_java/settings.sh

LISTEN_IP="0.0.0.0"       #監聽地址
LISTEN_PORT=10052      #監聽端口
START_POLLERS=5        # 開啓的工做線程數(必須大於等於後面zabbix_server.conf文件的StartJavaPollers參數)

    啓動 JavaGateway:$zabbix_server_home/sbin/zabbix_java/startup.sh

    修改 zabbix_server 的配置文件:

JavaGateway=127.0.0.1          # JavaGateway 服務器地址,zabbix_server與zabbix_java_gateway在同一臺主機
JavaGatewayPort=10052          #端口
StartJavaPollers=5

    啓動 zabbix_server:$zabbix_server_home/sbin/zabbix_server

 

Zabbix 圖形界面配置

    主機添加 JMX 接口:

    zabbix 自帶兩個監控 Tomcat 的模板:Template JMX Generic、Template JMX Tomcat,實際使用的是從網上下載一個 Template:

curl -O https://raw.githubusercontent.com/liujun1990/zabbix/master/zbx_templates_tomcat.xml

    導入進模板列表中,添加 Template App Tomcat

 

zabbix tomcat 監控項

  1. Session:活躍的 session、被系統拒絕的、最大限制 session 數量
  2. class status:總共加載的 class、加載的 class 數、未加載 class 數
  3. heap memory:總共堆內存、commit 的堆內存、使用的堆內存
  4. session status:active 會話數、session 數、拒絕數、最大 active 數
  5. thread status:線程數、線程峯值、總共 start 線程數

    堆(Heap)和非堆(Non-heap)內存 
    按照官方的說法:「Java 虛擬機具備一個堆,堆是運行時數據區域,全部類實例和數組的內存均今後處分配。堆是在 Java 虛擬機啓動時建立的。」「在JVM中堆以外的內存稱爲非堆內存(Non-heap memory)」。能夠看出JVM主要管理兩種類型的內存:堆和非堆。簡單來講堆就是 Java 代碼可及的內存,是留給開發人員使用的;非堆就是JVM留給 本身用的,因此方法區、JVM內部處理或優化所需的內存(如JIT編譯後的代碼緩存)、每一個類結構(如運行時常數池、字段和方法數據)以及方法和構造方法 的代碼都在非堆內存中。

相關文章
相關標籤/搜索