1. 程式人生 > >官網下載包模式安裝tomcat的jmx進行zabbix監控

官網下載包模式安裝tomcat的jmx進行zabbix監控

zabbix jmx tomcat

JMX的全稱是Java Management Extensions,即Java管理擴展。Java程序會開放一些端口,用來獲取運行狀況。在Zabbix 1.8以前,只能使用Zapcat來監控JMX,並需要修改源代碼來支持,非常麻煩。另一種方法是使用jmx-cmd-client,他的作用是從命令行去獲取JMX信息,可以在它的上層包裝一個程序,用來獲取JMX數據。

從Zabbix 2.0開始,內置了監控JMX的功能,叫做“Zabbix Java Gateway”,在Zabbix Server和Zabbix Proxy上啟動名為“Zabbix Java Gateway”的進程,當需要獲取JMX數據時,Zabbix Server會“問”JMX Gateway,然後JMX Gateway根據JMX管理API去查詢需要的數據。在使用時,Java程序不需要在代碼中新增任何東西,只需要在啟動的時候加上一些JVM參數,使得它可以支持使用端口監控JMX。

配置JDK

JDK官網為http://www.oracle.com/technetwork/java/javase/downloads

下載jdk安裝包,解壓並移動到/usr/local, 重命名為jdk目錄

添加jdk的系統環境變量

vim /etc/profile

export JAVA_HOME=/usr/local/jdk

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

系統立即生效

source /etc/profile

使用java -version查看安裝好的JDK

Zabbix服務端的配置操作

(已有環境則不需要重復此步驟,即二、三步驟)

zabbix編譯時添加的編譯參數,需要重新編譯zabbix,備份zabbix_server.conf和zabbix_agentd.conf文件

./configure --prefix=/usr/local/zabbix --enable-server --enable-proxy --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --enable-java

添加JMX監控支持--enable-java

報錯configure: error: Unable to find "javac" executable in path 安裝sudo yum install java*

修改zabbix_java相關路徑

設定Java gateway 監聽的端口和進程個數

cd /usr/local/zabbix/sbin/zabbix_java

sudo vim settings.sh

# vim settings.sh

LISTEN_IP="0.0.0.0"

LISTEN_PORT=10052

PID_FILE="/tmp/zabbix_java.pid"

START_POLLERS=5

其中 LISTEN_PORT 和 LISTEN_IP 可以不配置,zabbix_java 會采用默認值。但是 PID_FILE 和 START_POLLERS 必須配置,尤其主意 START_POLLERS,若不配置 zabbix_java 依舊可以啟動但是是不工作的。

2、修改zabbix_server文件

既然java gateway運行了,你要告訴zabbix server去哪裏找java gateway,在配置文件中開啟如下幾項參數。

zabbix_server添加以下文件
vi /usr/local/zabbix/etc/zabbix_server.conf
JavaGateway=127.0.0.1
JavaGatewayPort=10052 #和上面的LISTEN_PORT一樣
StartJavaPollers=5 #這個數值要小於上面的START_POLLERS

這三項都需要配置,其中StartJavaPollers會被視為開關性質的參數。0或者未配置將被系統認為不具有Java信息抓取能力。這點在Zabbix JMX Monitoring Wiki中未提及,但是實際效果就是這樣。同時Zabbix Proxy的配置文件解析中也有介紹此參數的含義。

3、啟動zabbix_java

zabbix的安裝目錄下找到zabbix_java目錄路徑,然後執行命令./startup.sh,並重啟zabbix server。

查看zabbix_java進程:ps -aux |grep zabbix_java

自此Server端已經配置完成,下面配置Agent端的設定。

agent端的tomcat環境安裝

安裝JDK環境(請跳至第一步),並使用java -version查看安裝好的JDK

值得註意的是使用yum安裝的tomcat下極其不容易配置JMX,建議使用源碼包安裝

下載需要版本的tomcat源碼包文件

解壓並移動到/usr/local/目錄下,重命名為tomcat

進入tomcat/bin/,執行./startup.sh

如果出現報錯

touch: cannot touch ‘/usr/local/tomcat/logs/catalina.out’:No such file or directory

需要創建目錄

mkdir /usr/local/tomcat/logs/

問題:使用tomcat/bin下的sh文件啟動停止服務會出現

錯誤: 找不到或無法加載主類 org.apache.catalina.startup.Bootstrap 的報錯

需要從官網下載非源碼需要編譯安裝的源碼包文件,其bin目錄下會包含.jar文件

centos7下使用systemctl管理tomcat服務

/usr/lib/systemd/system/下創建tomcat.service,寫入如下的啟動配置內容

[Unit]

Description=Tomcat

After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

Environment=‘JAVA_HOME=/usr/local/jdk‘

Environment=‘CATALINA_PID=/usr/local/tomcat/bin/tomcat.pid‘

Environment=‘CATALINA_HOME=/usr/local/tomcat/‘

Environment=‘CATALINA_BASE=/usr/local/tomcat/‘

Environment=‘CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC‘

WorkingDirectory=/usr/local/tomcat

ExecStart=/usr/local/tomcat/bin/startup.sh

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPID

PrivateTmp=true

[Install]

WantedBy=multi-user.target

更新systemd管理庫:systemctl daemon-reload

配置開機啟動

systemctl enable tomcat

啟動tomcat
systemctl start tomcat
停止tomcat
systemctl stop tomcat
重啟tomcat
systemctl restart tomcat

agent端配置

1、修改tomcat/bin/catalina.sh文件

修改catalina.sh文件,添加

CATALINA_OPTS="-Xms1024m -Xmx1024m

-XX:NewRatio=4

-XX:PermSize=192m

-XX:MaxPermSize=192m

-Xss256k

-XX:SurvivorRatio=4

-Dcom.sun.management.jmxremote

-Dcom.sun.management.jmxremote.authenticate=false #不進行驗證

-Dcom.sun.management.jmxremote.port=12345 #jmx遠程監控端口

-Dcom.sun.management.jmxremote.ssl=false

-Djava.rmi.server.hostname=10.0.1.13" #10.0.0.15是Agent的本地IP

就這種方式而言,需要註意的是catalina.sh中提供的默認變量名JAVA_OPTS和CATALINA_OPTS。由於JAVA_OPTS所添加的參數會在tomcat開啟和關閉時都運行,所以如果你把 -Dcom.sun.management.jmxremote.port=12345寫在JAVA_OPTS中,就會在關閉tomcat時出現如下錯誤,從而無法關閉。

Error: Exception thrown by the agent : java.rmi.server.ExportException : Port

already in use: 12345;nested exception is:

java.net.BindException: Address already in use: JVM_Bind

而CATALINA_OPTS只會在開啟tomcat的時候運行,所以應該將這些配置寫在CATALINA_OPTS中。

經過N多次測試在catalina.sh文件中添加上面的配置啟動不了JMX程序,未做深入研究

後在網上找出以下配置,修改為以下配置則正確啟動jmx,配置大概在242行左右

JAVA_OPTS="-Dcom.sun.management.jmxremote

-Djava.rmi.server.hostname=192.168.1.108

-Dcom.sun.management.jmxremote.port=6666

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false $JAVA_OPTS"

添加zabbix監控自定義項

1-1.添加監控主機


1-2.添加tomcat端catalina.sh中配置的信息,如:tomcat端的主機ip地址及啟動監聽的端口號


2-1.查看數據生成的圖表


以上均是從網絡上篩選並通過實際驗證的解決結果進行總結




具體添加jmx監控主機詳情請見附件中的圖片


本文出自 “linux窩” 博客,請務必保留此出處http://xiangcc.blog.51cto.com/10201823/1964333

官網下載包模式安裝tomcat的jmx進行zabbix監控