mirror of
https://github.com/rvalitov/zabbix-php-fpm.git
synced 2023-11-05 03:30:27 +01:00
WIP timeout
This commit is contained in:
parent
edeeeaa2c0
commit
1fcb408790
@ -3,6 +3,44 @@
|
|||||||
#https://github.com/rvalitov/zabbix-php-fpm
|
#https://github.com/rvalitov/zabbix-php-fpm
|
||||||
#This script scans local machine for active PHP-FPM pools and returns them as a list in JSON format
|
#This script scans local machine for active PHP-FPM pools and returns them as a list in JSON format
|
||||||
|
|
||||||
|
#This parameter is used to limit the execution time of this script. Zabbix allows us to run maximum of 3 seconds, so
|
||||||
|
#we need to stop and save our state in case we need more time to run. This parameter sets the maximum number of
|
||||||
|
#seconds that the script is allowed to run. After this duration is reached, the script will stop running and save its
|
||||||
|
#state. So, the actual execution time will be slightly more than this parameter.
|
||||||
|
#We put value 2 here, because we can use only integers.
|
||||||
|
MAX_EXECUTION_TIME=2
|
||||||
|
|
||||||
|
#Reset the seconds variable
|
||||||
|
SECONDS=0
|
||||||
|
|
||||||
|
#Status path used in calls to PHP-FPM
|
||||||
|
STATUS_PATH="/php-fpm-status"
|
||||||
|
|
||||||
|
#Debug mode is disabled by default
|
||||||
|
DEBUG_MODE=""
|
||||||
|
|
||||||
|
#Local directory
|
||||||
|
LOCAL_DIR=$(${S_DIRNAME} "$0")
|
||||||
|
|
||||||
|
#Cache file for ondemand pools
|
||||||
|
#File format:
|
||||||
|
#<pool name> <socket or TCP>
|
||||||
|
ONDEMAND_CACHE_FILE="$LOCAL_DIR/php_fpm_ondemand.cache"
|
||||||
|
|
||||||
|
#Cache file for pending pools, used to store execution state
|
||||||
|
#File format:
|
||||||
|
#<pool name>
|
||||||
|
PENDING_FILE="$LOCAL_DIR/php_fpm_pending.cache"
|
||||||
|
|
||||||
|
#Cache file with list of active pools, used to store execution state
|
||||||
|
#File format:
|
||||||
|
#<pool name> <socket or TCP>
|
||||||
|
RESULTS_CACHE_FILE="$LOCAL_DIR/php_fpm_results.cache"
|
||||||
|
|
||||||
|
#Path to status script, another script of this bundle
|
||||||
|
STATUS_SCRIPT="$LOCAL_DIR/zabbix_php_fpm_status.sh"
|
||||||
|
|
||||||
|
#Checking all the required executables
|
||||||
S_PS=$(type -P ps)
|
S_PS=$(type -P ps)
|
||||||
S_GREP=$(type -P grep)
|
S_GREP=$(type -P grep)
|
||||||
S_AWK=$(type -P awk)
|
S_AWK=$(type -P awk)
|
||||||
@ -66,8 +104,6 @@ if [[ ! -f ${S_WHOAMI} ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
STATUS_PATH="/php-fpm-status"
|
|
||||||
DEBUG_MODE=""
|
|
||||||
ACTIVE_USER=$(${S_WHOAMI})
|
ACTIVE_USER=$(${S_WHOAMI})
|
||||||
|
|
||||||
# Prints a string on screen. Works only if debug mode is enabled.
|
# Prints a string on screen. Works only if debug mode is enabled.
|
||||||
@ -122,6 +158,15 @@ function IsInCache() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function CheckExecutionTime() {
|
||||||
|
if [[ $SECONDS -lt $MAX_EXECUTION_TIME ]]; then
|
||||||
|
#All good, we can continue
|
||||||
|
return 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
#We need to save our state and exit
|
||||||
|
}
|
||||||
|
|
||||||
# Validates the specified pool by getting its status and working with cache.
|
# Validates the specified pool by getting its status and working with cache.
|
||||||
# Pass two arguments: pool name and pool socket
|
# Pass two arguments: pool name and pool socket
|
||||||
# Function returns:
|
# Function returns:
|
||||||
@ -188,9 +233,6 @@ done
|
|||||||
PrintDebug "Current user is $ACTIVE_USER"
|
PrintDebug "Current user is $ACTIVE_USER"
|
||||||
PrintDebug "Status path to be used: $STATUS_PATH"
|
PrintDebug "Status path to be used: $STATUS_PATH"
|
||||||
|
|
||||||
LOCAL_DIR=$(${S_DIRNAME} "$0")
|
|
||||||
CACHE_FILE="$LOCAL_DIR/php_fpm.cache"
|
|
||||||
STATUS_SCRIPT="$LOCAL_DIR/zabbix_php_fpm_status.sh"
|
|
||||||
PrintDebug "Local directory is $LOCAL_DIR"
|
PrintDebug "Local directory is $LOCAL_DIR"
|
||||||
if [[ ! -f ${STATUS_SCRIPT} ]]; then
|
if [[ ! -f ${STATUS_SCRIPT} ]]; then
|
||||||
${S_ECHO} "Helper script $STATUS_SCRIPT not found"
|
${S_ECHO} "Helper script $STATUS_SCRIPT not found"
|
||||||
@ -206,11 +248,20 @@ PrintDebug "Helper script $STATUS_SCRIPT is reachable"
|
|||||||
# The cache file consists of lines, each line contains pool name, then space, then socket (or TCP info)
|
# The cache file consists of lines, each line contains pool name, then space, then socket (or TCP info)
|
||||||
CACHE=()
|
CACHE=()
|
||||||
NEW_CACHE=()
|
NEW_CACHE=()
|
||||||
if [[ -r ${CACHE_FILE} ]]; then
|
if [[ -r ${ONDEMAND_CACHE_FILE} ]]; then
|
||||||
PrintDebug "Reading cache file $CACHE_FILE..."
|
PrintDebug "Reading cache file of ondemand pools $ONDEMAND_CACHE_FILE..."
|
||||||
mapfile -t CACHE < <(${S_CAT} "${CACHE_FILE}")
|
mapfile -t CACHE < <(${S_CAT} "${ONDEMAND_CACHE_FILE}")
|
||||||
else
|
else
|
||||||
PrintDebug "Cache file $CACHE_FILE not found, skipping..."
|
PrintDebug "Cache file of ondemand pools $ONDEMAND_CACHE_FILE not found, skipping..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
#Loading pending tasks
|
||||||
|
PENDING_LIST=()
|
||||||
|
if [[ -r $PENDING_FILE ]]; then
|
||||||
|
PrintDebug "Reading file of pending pools ${PENDING_FILE}..."
|
||||||
|
mapfile -t PENDING_LIST < <(${S_CAT} "${PENDING_FILE}")
|
||||||
|
else
|
||||||
|
PrintDebug "List of pending pools ${PENDING_FILE} not found, skipping..."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mapfile -t PS_LIST < <($S_PS ax | $S_GREP -F "php-fpm: pool " | $S_GREP -F -v "grep")
|
mapfile -t PS_LIST < <($S_PS ax | $S_GREP -F "php-fpm: pool " | $S_GREP -F -v "grep")
|
||||||
@ -328,13 +379,13 @@ for CACHE_ITEM in "${CACHE[@]}"; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [[ -f ${CACHE_FILE} ]] && [[ ! -w ${CACHE_FILE} ]]; then
|
if [[ -f ${ONDEMAND_CACHE_FILE} ]] && [[ ! -w ${ONDEMAND_CACHE_FILE} ]]; then
|
||||||
${S_ECHO} "Error: write permission is not granted to user $ACTIVE_USER for cache file $CACHE_FILE"
|
${S_ECHO} "Error: write permission is not granted to user $ACTIVE_USER for cache file $ONDEMAND_CACHE_FILE"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PrintDebug "Saving new cache file $CACHE_FILE..."
|
PrintDebug "Saving new cache file $ONDEMAND_CACHE_FILE..."
|
||||||
${S_PRINTF} "%s\n" "${NEW_CACHE[@]}" >"${CACHE_FILE}"
|
${S_PRINTF} "%s\n" "${NEW_CACHE[@]}" >"${ONDEMAND_CACHE_FILE}"
|
||||||
|
|
||||||
RESULT_DATA="$RESULT_DATA]}"
|
RESULT_DATA="$RESULT_DATA]}"
|
||||||
PrintDebug "Resulting JSON data for Zabbix:"
|
PrintDebug "Resulting JSON data for Zabbix:"
|
||||||
|
Loading…
Reference in New Issue
Block a user