����JFIF��x�x����'
Server IP : 78.140.185.180 / Your IP : 3.144.162.109 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 : /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"