Zabbixの監視Tomcatでスタンドアローンのマルチインスタンス

導入されたTomcatはスタンドアロンのマルチインスタンスの展開を、そして彼の基礎の次のステップに:Tomcatの複数インスタンスの監視!

次の4つの段階に分け原理RedisのTomcatの監視処理とマルチインスタンスのマルチインスタンス前と同様、:

図1に示すように、複数のインスタンスを取得します

2、データ収集

3、生産テンプレート

4、テンプレートのホストセット

 

 

マルチインスタンスにまず、アクセス

我々はすでに、次のように以前のマルチインスタンスTomcatのディレクトリ構造であることを知っています:

複数のインスタンスを取得する前に、以下の設定が必要になります。

1は、binディレクトリにcatalina.shスクリプトは、次のように追加します

#-----要求されたコマンドを実行します---------------------------------------- - 

CATALINA_OPTS = "$ CATALINA_OPTS 
-Djava.rmi.server.hostname = 10.11.100.99 
-Dcom.sun.management.jmxremote =真
-Dcom.sun.management.jmxremote.ssl = falseを
-Dcom.sun.management.jmxremote.authenticate 「=偽

  注「要求されたコマンドを実行する」、追加のホスト名またはIPを指定して、リモート管理が認証が有効になっているかどうか、SSLを開始するかどうか、オンになっている背後に配置する必要があります。

2、別の例では(CONF / server.xmlファイル)が設けられています

<リスナーのクラス名= "org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform = "12345" rmiServerPortPlatform = "12346" />

  説明:リモート接続ポート12345、データポートを取得するためには、12346です

同様に、ins02で

<リスナーのクラス名= "org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform = "12347" rmiServerPortPlatform = "12348" />

  リモート接続ポートは、データポートを取得するために、12347で12348です

 3、マルチ・インスタンスを再起動し、起動するポートの状況を見ます

 

 4、マルチインスタンス・ポートを取得します

猫jmx_discovery.sh

#!/bin/bash
t_datadir=`find /usr/local/tomcat/tomcat-*/conf/ -name server.xml|awk -F "/conf/server.xml" '{print $1}'`
tomcat_no=`find /usr/local/tomcat/tomcat-*/conf/ -name server.xml|wc -l`
n_port=12345
i=1
printf '{"data":[\n'
for tomcat in $t_datadir
do
    t_service=$(echo "$tomcat"|awk -F"/" '{print $(NF)}')

    if [ "$i" != ${tomcat_no} ];then

        printf "\t\t{ \n"

        printf "\t\t\t\"{#JMX_PORT}\":\"${n_port}\",\n"

        printf "\t\t\t\"{#JAVA_NAME}\":\"${t_service}\"},\n"

    else

        printf "\t\t{ \n"

        printf "\t\t\t\"{#JMX_PORT}\":\"${n_port}\",\n"

        printf "\t\t\t\"{#JAVA_NAME}\":\"${t_service}\"}]}\n"

    fi

    let "n_port=n_port+2"

    let "i=i+1"

done

  注意,我这里的目录结构需要根据你的部署进行修改!

 

执行脚本:

发现两个实例。

 

二、采集数据

数据采集需要使用到cmdline-jmxclient-0.10.3.jar,专门用来通过JMX方式获取数据的。

拷贝cmdline-jmxclient-0.10.3.jar到/lib下,当然你也可以随便放置其他目录,只要zabbix用户能够访问就行,因为zabbix-agent是由zabbix用户启动的。

采集脚本:

cat add_service_tomcat.sh

#!/bin/bash
local_ip=`ifconfig|awk -F '[ :]+' 'NR==2 {print $4}'`                 #提取主机IP

cat >> /etc/zabbix/zabbix_agentd.d/tomcat.conf <<END                                 #修改zabbix_agentd.conf,添加KEY

UserParameter=java.jmx.discovery[*],/etc/zabbix/externalscripts/jmx_discovery.sh

UserParameter=java.Runtime.status[*],java -jar /lib/cmdline-jmxclient-0.10.3.jar - $local_ip:\$1 java.lang:type=Runtime \$2 2>&1 |grep \$2 |awk '{print \$NF}'

UserParameter=java.Memory.status[*],java -jar /lib/cmdline-jmxclient-0.10.3.jar - $local_ip:\$1 java.lang:type=Memory \$2 2>&1 |grep \$2 |awk '{print \$NF}'

UserParameter=java.System.status[*],java -jar /lib/cmdline-jmxclient-0.10.3.jar - $local_ip:\$1 java.lang:type=OperatingSystem \$2 2>&1 |grep \$2 |awk '{print \$NF}'

UserParameter=java.HeapMemoryUsage.status[*],java -jar /lib/cmdline-jmxclient-0.10.3.jar - $local_ip:\$1 java.lang:type=Memory HeapMemoryUsage 2>&1 |grep \$2 |awk '{print \$NF}'

UserParameter=java.NonHeapMemoryUsage.status[*],java -jar /lib/cmdline-jmxclient-0.10.3.jar - $local_ip:\$1 java.lang:type=Memory NonHeapMemoryUsage 2>&1 |grep \$2 |awk '{print \$NF}'

UserParameter=java.LoadClass.status[*],java -jar /lib/cmdline-jmxclient-0.10.3.jar - $local_ip:\$1 java.lang:type=ClassLoading \$2 2>&1 |awk '{print \$NF}'

UserParameter=java.Threading.status[*],java -jar /lib/cmdline-jmxclient-0.10.3.jar - $local_ip:\$1 java.lang:type=Threading \$2 2>&1 |awk '{print \$NF}'

END

  

三、模板制作

根据采集的数据进行模板制作。

 

四、主机上套

 

五、查看最新数据

 

数据图标

 

 

 

 

六、参考文档和脚本地址

 

おすすめ

転載: www.cnblogs.com/skyflask/p/11231185.html