2022年通过nagios监控weblogic服务 .pdf
-
资源ID:33657254
资源大小:212.47KB
全文页数:9页
- 资源格式: PDF
下载积分:4.3金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
2022年通过nagios监控weblogic服务 .pdf
通过 Nagios 监控 Weblogic 服务 1. 前言本文主要介绍如何通过Nagios 软件来监控 Weblogic 服务运行状况,其中主要包括Weblogic Server以及 Weblogic JDBC Pool 的运行状态。Nagios 的插件中本身并不提供对于 Weblogic 服务监控的功能,所以要根据Nagios Plugin API编写自己的脚本,扩展其插件,完成我们所需要的功能。对于Weblogic 运行状态信息的获得需通过JMX 。本文参考了 Nagios3 的官方文档中有关 Nagios Plugin部分,以及 Weblogic 官方文档有关 JMX和命令行部分,具体的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输出文本至少要一行,其信息主要反映被监控应用、服务的状态。例如:DISK OK - free space: / 3326 MB (56%); 3. 监控 Weblogic 的实现方法对于 Weblogic 运行状况的获得,我们是通过命令行的方式实现的,通过调用Weblogic的 weblogic.Admin 类实现的。这个类的功能很强大,可以通过它管理和配置Weblogic。以下介绍几个常用的命令写法。1、获得 server 运行状态名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - -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用户名$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/ksh#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 $PROGNAME -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() 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 Please 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=JDBCConnectionPoolRuntimeSERVER_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 页 - - - - - - - - - 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:Location=$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 VALUE 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名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 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 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 FAILED - $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:$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 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 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:$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 PoolState 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 | 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 ;*) 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$POOL_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 -jdbcpool 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. . . . . . . . . . . .名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 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 that 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 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 服务。通过 IE 观察监控情况。图 5.1就此配置工作完成。 6. 结语名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - 本文介绍了一 种通过 Nagios 监控 Weblogic 应用的实现方式, 按照 Nagios Plugin API规则编写自己的 Shell 脚本实现 该功能,并 简单的描述了配置过程,提供了Shell 源码。希望大家指正。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -