#! /bin/bash . $(dirname "$0")/lib/adei/adei.sh adei_init "$@"; code=$? online=${adei_online} healthy=$(( $code == 0 )) adei_version_check "0.0.10" [ $? -eq 0 ] && adei10=1 msg="" [ -n "$adei_version" ] && msg+="ADEI $adei_version" # Get current database size [ -n "$adei10" ] && size=$(adei_text_query "info.php?target=size&encoding=text") [[ "$size" =~ "Error:" ]] && size="" [ -n "$size" ] && msg+=" \${color gray}/ $((size / 1024 / 1024 / 1024)) GB" # Check pending administrative scripts if [ -n "$adei10" -a $healthy -ne 0 ]; then scripts=$(adei_xml_query "info.php?target=scripts"); err=$? [ $err -eq 0 ] && waiting="$(echo $scripts | grep "Value" | sed -e "s/^\(.*mtime=\"\([^\"]*\)\".*\)$/\\2\\1/" | awk -v date="$(date +%s)" '{duration=date - $1} duration > 3600 { print duration }' | sort -rn)" #" if [ $err -ne 0 ]; then adei_print_error $err "ScriptInfo" "$waiting" healthy=0 elif [ -n "$waiting" ]; then num_waiting="$(echo $waiting | tr ' ' '\n' | wc -l)" long_waiting="$(echo $waiting | cut -d ' ' -f 1)" if [ $num_waiting -gt 0 ]; then healthy=2 echo "$num_waiting pending scripts, longest for $(format_time $long_waiting)" fi fi fi # Verify offset (for selected database) if [ -n "$adei10" -a $healthy -ne 0 -a -n "$adei_source" ]; then now=$(date +%s) sdate="$(adei_text_query "getdata.php?db_mask=0&format=csv&window=-1&rt=1&cache=1&time_format=U" slave)"; err_slave=$? [ $err_slave -eq 0 ] && sdate="$(echo "$sdate" | cut -d ',' -f 1 | cut -d '.' -f 1)" mdate="$(adei_text_query "getdata.php?db_mask=0&format=csv&window=-1&rt=1&cache=1&time_format=U" master)"; err_master=$? [ $err_master -eq 0 ] && mdate="$(echo "$mdate" | cut -d ',' -f 1 | cut -d '.' -f 1)" src="$adei_source" if [ $err_slave -ne 0 -o $err_master -ne 0 -o -z "$sdate" -o -z "$mdate" ]; then echo -n "Error querying (${err_master:+master} ${err_slave:+slave}) data from cache of '$src': " if [ $err_master -ne 0 ]; then echo "$(adei_print_error $err_master "$mdate")" elif [ $err_slave -ne 0 ]; then echo "$(adei_print_error $err_slave "$sdate")" else echo "Unexpected response from getdata service" fi healthy=0 else master_offset=$(($now - $mdate)) slave_offset=$(($mdate - $sdate)) if [ $master_offset -gt $MAX_SOURCE_OFFSET ]; then rdate=$(adei_text_query "getdata.php?db_mask=0&format=csv&window=-1&rt=1&time_format=U" master); err=$? if [ $err -eq 0 ]; then rdate="$(echo "$rdate" | cut -d ',' -f 1 | cut -d '.' -f 1)" cache_offset=$(($rdate - $mdate)) if [ $cache_offset -gt $MAX_MASTER_OFFSET ]; then echo "ADEI cache is off by $(format_time $cache_offset) for '$src'" healthy=2 else offset=$(($now - $rdate)) # echo "Source '$src' is not updated for $(format_time $offset)" fi else echo -n "Error querying data from '$src' primary database: " echo "$(adei_print_error $err_master "$rdate")" healthy=0 fi fi if [ $slave_offset -gt $MAX_SLAVE_OFFSET ]; then echo "MySQL slave is off by $(format_time $slave_offset) for '$src'" healthy=2 fi [ -n "$msg" ] && msg="${msg}, " [ -z "$msg" ] && msg="\${color gray}/ " msg="${msg}cache $(format_time $master_offset)" [ $slave_offset -gt 0 ] && msg="$msg & slave $(format_time $slave_offset)" msg="$msg off" fi fi echo "$(adei_print_status "$0" $online $healthy) $msg"