《2022年通过nagios监控weblogic服务 .pdf》由会员分享,可在线阅读,更多相关《2022年通过nagios监控weblogic服务 .pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、通过 Nagios 监控 Weblogic 服务 1. 前言本文主要介绍如何通过Nagios 软件来监控 Weblogic 服务运行状况,其中主要包括Weblogic Server以及 Weblogic JDBC Pool 的运行状态。Nagios 的插件中本身并不提供对于 Weblogic 服务监控的功能,所以要根据Nagios Plugin API编写自己的脚本,扩展其插件,完成我们所需要的功能。对于Weblogic 运行状态信息的获得需通过JMX 。本文参考了 Nagios3 的官方文档中有关 Nagios Plugin部分,以及 Weblogic 官方文档有关 JMX和命令行部分,具体
2、的Weblogic 版本是 8.14。 2.Nagios Plugin API概述作为一个 Nagios 插件,无论你是用脚本(如shell 、perl )还是用c 编译后的可执行程序实现,它必须至少完成两件事,1、退出时有一个返回值。2、至少向标准输出设备(STDOUT)输出一行文本。返回值定义:Plugin Return CodeService StateHost State0 OK UP1 WARNINGUP or DOWN/UNREACHABLE*2 CRITICAL DOWN/UNREACHABLE3 UNKNOWN DOWN/UNREACHABLE输出文本至少要一行,其信息主要反映
3、被监控应用、服务的状态。例如:DISK OK - free space: / 3326 MB (56%); 3. 监控 Weblogic 的实现方法对于 Weblogic 运行状况的获得,我们是通过命令行的方式实现的,通过调用Weblogic的 weblogic.Admin 类实现的。这个类的功能很强大,可以通过它管理和配置Weblogic。以下介绍几个常用的命令写法。1、获得 server 运行状态名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - -
4、- - - - - -mbean $DOMAIN_NAME:Location=$SERVER_NAME,Name=$SERVER_NAME,Type=ServerRuntime”2、获得 JDBC Pool运行状态 -mbean $DOMAIN_NAME:Location=$SERVER_NAME,Name=$POOL_NAME,ServerRuntime=$SERVER_NAME,Type=JDBCConnectionPoolRuntime将黄色标记部分的变量替换成相应真实环境值即可。$URLweblogic 的 URL ,例如 t3:/192.168.1.2:7002$USER_NAME用
5、户名$PASS_WORD密码$DOMAIN_NAMEweblogic 域的名称,如 mydomain$SERVER_NAMEServer 名$POOL_NAMEJDBC Pool 名称在运行上述命令前需要设置JAVA_HOME,并且将$JAVA_HOME/bin添加到 PATH 中,将weblogic 的 weblogic81/server/lib/weblogic.jar包添加到 CLASSPATH中。 4. 具体实现的 shell脚本有了监控的方法,根据Nagios Plugin API规则编写自己的 shell实现脚本。具体的shell 脚本如下:check_wls.sh#!/bin/k
6、sh#check_wls.sh -jdbcpool url username password domainname servername poolname#check_wls.sh -server url username password domainname servernamePROGNAME=basename $0PROGPATH=echo $0 | sed -e s,/*$,REVISION=echo $Revision: 1749 $ | sed -e s/0-9./g. $PROGPATH/utils.shprint_usage() echo Usage: echo $PROG
7、NAME -jdbcpool url username password domainname servername poolname echo $PROGNAME -server url username password domainname servername echo $PROGNAME -help echo $PROGNAME -version名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - print_help()
8、print_revision $PROGNAME $REVISION echo print_usage echo echo Check Weblogic status echo echo -jdbcpool url username password domainname servername poolname echo Check Weblogic JDBC Pool echo -server url username password domainname servername echo Check Weblogic Server if -z $JAVA_HOME then echo Pl
9、ease set JAVA_HOME! exit $STATE_UNKNOWNfiif -z $CLASSPATH then echo Please set CLASSPATH! exit $STATE_UNKNOWNelse echo $CLASSPATH | grep weblogic.jar | wc -l | read N if $N = 0 then echo Please add weblogic.jar to CLASSPATH! exit $STATE_UNKNOWN fifiPATH=$JAVA_HOME/bin:$PATHexport PATHJDBC_TYPE=JDBCC
10、onnectionPoolRuntimeSERVER_TYPE=ServerRuntimecmd=$1# Information optionscase $cmd in-help) print_help exit $STATE_OK ;-h) print_help exit $STATE_OK ;-version) print_revision $PROGNAME $REVISION名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - -
11、 exit $STATE_OK ;-V) print_revision $PROGNAME $REVISION exit $STATE_OK ;esaccase $cmd in-server) URL=$2 USER_NAME=$3 PASS_WORD=$4 DOMAIN_NAME=$5 SERVER_NAME=$6 SERVER_INFO=$DOMAIN_NAME:$SERVER_NAME RE=java weblogic.Admin -url $URL -username $USER_NAME -password $PASS_WORD get -mbean $DOMAIN_NAME:Loc
12、ation=$SERVER_NAME,Name=$SERVER_NAME,Type=$SERVER_TYPE printf $RE | grep - | wc -l | read N if $N -lt 1 then #error printf $RE | awk printf $0 | read ERR_INFO echo CRITICAL - $ERR_INFO exit $STATE_CRITICAL fi if $N -ge 1 then HEALTH_STATE= RUN_STATE= #HealthState State printf $RE | while read NAME V
13、ALUE do #PoolState WaitingForConnectionCurrentCount State #echo NAME:$NAME VALUE:$VALUE case $NAME in HealthState:) HEALTH_STATE=$VALUE ; State:) RUN_STATE=$VALUE ; esac done #echo HEALTH_STATE:$HEALTH_STATE #echo RUN_STATE:$RUN_STATE名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
14、- - - - - - 第 4 页,共 9 页 - - - - - - - - - HEALTH_STATE_INFO=$HEALTH_STATE echo $HEALTH_STATE_INFO | awk -F, print $1 | awk -F: print $2 | read HEALTH_STATE #echo HEALTH_STATE:$HEALTH_STATE #HEALTH_OK HEALTH_WARN HEALTH_CRITICAL HEALTH_FAILED if $RUN_STATE != RUNNING then echo CRITICAL - $SERVER_INFO
15、 State is $RUN_STATE exit $STATE_CRITICAL fi case $HEALTH_STATE in EALTH_OK) ; HEALTH_WARN) echo WARN - $SERVER_INFO HealthState is $HEALTH_STATE_INFO exit $STATE_WARNING ; HEALTH_CRITICAL) echo CRITICAL - $SERVER_INFO HealthState is $HEALTH_STATE_INFO exit $STATE_CRITICAL ; HEALTH_FAILED) echo FAIL
16、ED - $SERVER_INFO HealthState is $HEALTH_STATE_INFO exit $STATE_CRITICAL ; esac fi echo OK - $SERVER_INFO State is $RUN_STATE,HealthState is $HEALTH_STATE_INFO exit $STATE_OK ;-jdbcpool) URL=$2 USER_NAME=$3 PASS_WORD=$4 DOMAIN_NAME=$5 SERVER_NAME=$6 POOL_NAME=$7 POOL_INFO=$DOMAIN_NAME:$SERVER_NAME:$
17、POOL_NAME RE=java weblogic.Admin -url $URL -username $USER_NAME -password $PASS_WORD GET -mbean $DOMAIN_NAME:Location=$SERVER_NAME,Name=$POOL_NAME,ServerRuntime=$SERVER_NAME,Type=$JDBC_TYPE printf $RE | grep - | wc -l | read N if $N -lt 1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心
18、整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - then #error printf $RE | awk printf $0 | read ERR_INFO echo CRITICAL - $ERR_INFO exit $STATE_CRITICAL fi if $N -ge 1 then POOL_STATE= WAIT_CNT= RUN_STATE= printf $RE | while read NAME VALUE do #PoolState WaitingForConnectionCurrentCount State #echo NAME
19、:$NAME VALUE:$VALUE case $NAME in PoolState:) POOL_STATE=$VALUE ; WaitingForConnectionCurrentCount:) WAIT_CNT=$VALUE ; State:) RUN_STATE=$VALUE ; esac done #echo POOL_STATE:$POOL_STATE #echo WAIT_CNT:$WAIT_CNT #echo RUN_STATE:$RUN_STATE if $POOL_STATE != true then echo CRITICAL - $POOL_INFO PoolStat
20、e is $POOL_STATE exit $STATE_CRITICAL fi if $RUN_STATE != Running then echo CRITICAL - $POOL_INFO State is $RUN_STATE exit $STATE_CRITICAL fi if $WAIT_CNT -gt 0 then echo WARNING - $POOL_INFO WaitingForConnectionCurrentCount is $WAIT_CNT exit $STATE_WARNING fi else #error printf $RE | awk printf $0
21、| read ERR_INFO名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - echo CRITICAL - $ERR_INFO exit $STATE_CRITICAL fi echo OK - $POOL_INFO State is $RUN_STATE,PoolState is $POOL_STATE,WaitingForConnectionCurrentCount is $WAIT_CNT exit $STATE_OK
22、;*) print_usage exit $STATE_UNKNOWN ;esac 5. 配置 Weblogic 监控将 check_wls.sh 上传到 Nagios 软件的 libexec 目录下,并创建一个ln 文件check_wls。$ ln -s ./check_wls.sh ./check_wls在 nrpe 的配置文件中增加相关的命令定义。Weblogic 的具体配置信息如下,$URLt3:/172.17.1.2:7001$USER_NAMEweblogic$PASS_WORDweblogic$DOMAIN_NAMEmydomain$SERVER_NAMEmyserver$POO
23、L_NAMEmypool编辑 nrpe.cfg文件,增加如下内容,$ vi ./nrpe.cfg. . . . . . . . . . . .#check weblogic check_wlscommandcheck_wls_server_myserver=/usr/local/nagios/libexec/check_wls -server t3:/172.2.10.2:7001 weblogic weblogic mydomain myservercommandcheck_wls_jdbcpool_mypool=/usr/local/nagios/libexec/check_wls -jd
24、bcpool t3:/172.2.10.2:7001 weblogic weblogic mydomain myserver mypool在 nrpe 的启动脚本中添加环境变量(CLASSPATH、JAVA_HOME). . . . . . . . . . . .JAVA_HOME=/data/bea/bea/jdk142_05export JAVA_HOMECLASSPATH=/data/bea/bea/weblogic81/server/lib/weblogic.jarexport CLASSPATH. . . . . . . . . . . .名师资料总结 - - -精品资料欢迎下载 -
25、 - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - 编辑监控主机的 nagios.cfg文件,添加如下内容。$ vi ./nagios.cfg. . . . . . . . . . . .# Define a host for the local machinedefine host use linux-box ; Name of host template to use ; This host definition will inherit all variables th
26、at are defined ; in (or inherited by) the linux-server host template definition. host_name sol_172.2.10.2 alias sol_172.2.10.2 address 172.2.10.2 #the check_wls_server_myserver on the remote host.define service use generic-service host_name sol_172.2.10.2 service_description Weblogic Server myserver
27、 check_command check_nrpe!check_wls_server_myserver #the check_wls_jdbcpool_mypool on the remote host.define service use generic-service host_name sol_172.2.10.2 service_description Weblogic JDBCPool mypool check_command check_nrpe!check_wls_jdbcpool_mypool 验证配置是否正确。重启监控主机上的 nagios 服务以及 远程主机上的 nrpe
28、服务。通过 IE 观察监控情况。图 5.1就此配置工作完成。 6. 结语名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - 本文介绍了一 种通过 Nagios 监控 Weblogic 应用的实现方式, 按照 Nagios Plugin API规则编写自己的 Shell 脚本实现 该功能,并 简单的描述了配置过程,提供了Shell 源码。希望大家指正。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -