下面是我的脚本,其中我使用jvmtop.sh脚本的输出来存储在受尊重的变量中,然后在带有图形的nagios中进行处理。
在客户端服务器bash中,脚本按预期输出。但是当我在nagios中执行Test check命令时,似乎./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}'`
}
答案 0 :(得分: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家,因为它无法找到这个jvmtop.sh或者它是否可以不知道$ JAVA_HOME / bin / java是......