����JFIF��x�x����'
| Server IP : 78.140.185.180 / Your IP : 216.73.216.170 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/self/root/proc/self/root/proc/1630575/root/usr/lib64/nagios/plugins/extra/ |
Upload File : |
#!/bin/bash
export LC_ALL="en_US.UTF-8" # this is required because icinga user has ru locale and calculations/grep fail
HOURS='4'
CRIT='90'
while [ ! -z "$1" ]; do
case $1 in
--hours) shift; HOURS=$1 ;;
--crit) shift; CRIT=$1 ;;
*) echo "Unknown parameter, exiting"; exit 1 ;;
esac
shift
done
## get data for API
while IFS='=' read -r key value; do
case "$key" in
pass) password=$value ;;
host) host=$value ;;
user) user=$value ;;
esac
done < '/root/.solusvm_custom_api'
PERFDATA=
VMS=$(virsh list --name)
if [ -z "$VMS" ]; then
echo 'OK'
exit
fi
WLFILE='/etc/icinga2/plinc/kvm_mining_whitelist'
touch $WLFILE
SKIP_TIME=$(( $HOURS*3600 ))
for VM in $VMS; do
VM_PROC=$(ps aux | grep "guest=$VM\,")
if [ -z "$VM_PROC" ]; then
continue # the VM can be stopped upon executing script, so better check for process existance
fi
VM_PID=$(echo "$VM_PROC" | awk '{print $2}')
VM_UPTIME=$(ps -o etimes= -p $VM_PID)
[[ "$SKIP_TIME" -gt "$VM_UPTIME" ]] && continue
VM_VCPU_INFO=$(virsh vcpuinfo $VM)
VM_CPU_USED=$(echo "$VM_VCPU_INFO" | grep 'CPU time' | tr -d 's' | awk '{sum+=$3} END {printf("%.0f\n", sum)}')
VM_CORES=$(echo "$VM_VCPU_INFO" | grep -c VCPU)
VM_CPU_LIMIT=$(echo "scale=0;$VM_CORES*$VM_UPTIME" | bc -l)
VM_PERCENT=$(echo "scale=2;$VM_CPU_USED/$VM_CPU_LIMIT*100" | bc -l)
PERFDATA+=$(echo "CPU_USAGE_${VM}=$VM_PERCENT;;; ")
[[ $(grep ^$VM$ $WLFILE) ]] && continue # handle whitelisted VMs
if [ $VM_PERCENT == '0' ]; then
continue
fi
if [ $(printf '%.0f\n' $VM_PERCENT) -ge $CRIT ]; then
VM_UUID=$(virsh domuuid $VM)
VM_IP=$(curl -s -X GET https://${user}:${password}@${host}:5697/vpsip-by-name/${VM_UUID} |jq -r .[])
VM_UPTIME_VERBOSE=$(echo $((VM_UPTIME/86400))" days "$(date -d "1970-01-01 + $VM_UPTIME seconds" "+%H hours %M minutes"))
INCIDENTS+=("$VM/$VM_IP uses ${VM_PERCENT}% of available CPU during $VM_UPTIME_VERBOSE")
fi
done
unset LC_ALL
if [ ${#INCIDENTS[@]} -ne 0 ]; then
echo 'WARNING:'
printf '%s\n' "${INCIDENTS[@]} | $PERFDATA"
exit 1
fi
echo "OK | $PERFDATA"