0

下面是我的脚本,我在其中使用jvmtop.sh脚本的输出来存储相关变量,然后在 nagios 中使用图形进行处理。

在客户端服务器 bash 中,脚本按预期输出。但是当我在 nagios 中执行测试检查命令时,似乎 ./jvmtop.sh 没有将输出存储在变量中。我收到“严重 - 监控进程未运行!”

让我知道我错过了什么..

get_vals() {
current=/usr/local/nagios/libexec/
cd $current           
OLDIFS=$IFS                
IFS='\n'         
tmp_output=$(./jvmtop.sh --once | grep $process)
IFS=$OLDIFS
    if [ -z "$tmp_output" ]
    then
        echo "CRITICAL - Process to monitor is not running!"
        exit $ST_CR
    fi
PID=`echo ${tmp_output} | awk '{print $1}'`
HPCUR=`echo ${tmp_output} | awk '{print $3}' | sed 's/.$//'`
HPMAX=`echo ${tmp_output} | awk '{print $4}' | sed 's/.$//'`
NHCUR=`echo ${tmp_output} | awk '{print $5}' | sed 's/.$//'`
NHMAX=`echo ${tmp_output} | awk '{print $6}' | sed 's/.$//'`
CPU=`echo ${tmp_output} | awk '{print $7}' | sed 's/.$//' | cut -d . -f 1`
GC=`echo ${tmp_output} | awk '{print $8}' | sed 's/.$//' | cut -d . -f 1`
THREAD=`echo ${tmp_output} | awk '{print $11}'`
}
4

1 回答 1

0

我个人认为这可能是由于第 120 行 jvmtop.sh 的定义,我的建议是给出脚本的完整路径....

tmp_output=$(./jvmtop.sh --once | grep $process)

tmp_output=$(/path/to/jvmtop.sh --once | grep $process)

如果这没有帮助,请尝试启用调试并在 nagios.cfg 中定义调试级别:

debug_level=2048 
debug_file=/var/log/nagios_debug.log

完成后请关闭它。

E2A:最后一件事是在这一行 (120) 之后将 tmp 输出的结果回显到临时文件并查看其输出以查看它是否真的有效!

所以 echo $tmp_output > /tmp/observe.txt

因为我的怀疑仍然存在 - 我在上面发送了一条评论以导出您的 java home,因为它要么找不到这个 jvmtop.sh,要么它不知道 $JAVA_HOME/bin/java 是什么是 ...

于 2013-08-07T15:07:10.197 回答