针对zabbix二次开发的监控脚本执行timeout时,zabbix-server性能消耗增大问题,开发处理timeout状态的脚本

脚本内容:

#!/bin/sh

###################################################
# Script to handle execution timeout states
# script by shell
# writed by Deliver
# huchangxi 2022/11/14
###################################################

# 判断脚本是否正在执行
SCRIPTS_NAME=`basename $0`
SCRIPTS_RUN_NUM=`ps -ef | grep ${SCRIPTS_NAME} | grep -w zabbix | grep -v grep | wc -l`

if [ ${SCRIPTS_RUN_NUM} -gt 1 ]; then

SCRIPTS_RUN_PROC=`ps -ef | grep ${SCRIPTS_NAME} | grep -w zabbix | grep -v grep | head -n 1`
SCRIPTS_RUN_PID=`echo ${SCRIPTS_RUN_PROC} | awk '{print $2}'`
# SCRIPTS_RUN_TIME=`ps -p ${SCRIPTS_RUN_PID} -o etimes | tail -n 1`
SCRIPTS_RUN_START_YMDTIME=`ps -p ${SCRIPTS_RUN_PID} -o lstart | grep -v STARTED`
if [ -n "$SCRIPTS_RUN_START_YMDTIME" ];then
SCRIPTS_RUN_START_TIME=`date -d "${SCRIPTS_RUN_START_YMDTIME}" +%s`
SCRIPTS_RUN_NOW_TIME=$(date +%s)
SCRIPTS_RUN_TIME=$[SCRIPTS_RUN_NOW_TIME-SCRIPTS_RUN_START_TIME]
# 给定脚本最长执行时间60S,运行时长大于60s将kill
SCRIPTS_RUN_MAXTIME=60

if [ ${SCRIPTS_RUN_TIME} -gt ${SCRIPTS_RUN_MAXTIME} ]; then

kill ${SCRIPTS_RUN_PID}
if [ $? -eq 0 ]; then
echo "`date +%F-%H:%M:%S` kill running timeout process successful PID: ${SCRIPTS_RUN_PID} ; RUN_START_TIME: ${SCRIPTS_RUN_START_TIME} ; TIME: ${SCRIPTS_RUN_NOW_TIME} ; RUN_TIME: ${SCRIPTS_RUN_TIME} ;PROCESSNAME: ${SCRIPTS_RUN_PROC}"
else
echo "`date +%F-%H:%M:%S` kill running timeout process failed PID: ${SCRIPTS_RUN_PID} ; RUN_START_TIME: ${SCRIPTS_RUN_START_TIME} ; TIME: ${SCRIPTS_RUN_NOW_TIME} ; RUN_TIME: ${SCRIPTS_RUN_TIME} ;PROCESSNAME: ${SCRIPTS_RUN_PROC}"
fi
fi
fi
fi

posted @ 2022-11-19 00:23  呼长喜  阅读(129)  评论(0编辑  收藏  举报