tools.utils
2023-12-16
tools.utils/kvm/qemu-ga.watcher.sh.sh
+ Скрипт проверки состояния qemu-ga
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/kvm/qemu-ga.watcher.sh.sh Sat Dec 16 12:55:13 2023 +0300 1.3 @@ -0,0 +1,55 @@ 1.4 +#!/bin/sh 1.5 +# devel.a0fs.ru -- ncc.mon.kvm.tool:/root/libexec/qemu-ga.watcher.sh -- v0.r202312.1 1.6 +# Запускается через crontab: 1.7 +# */15 * * * * /bin/sh /root/libexec/qemu-ga.watcher.sh 1.8 +# 1.9 +export PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" 1.10 + 1.11 +NAME="qemu-ga" 1.12 + 1.13 + 1.14 +log () { 1.15 + logger -t "qemu-ga.watcher" "$@" 1.16 +} 1.17 + 1.18 + 1.19 +check_get_proc () { 1.20 + ps -Ao comm,pcpu | awk -v pname="$NAME" '\ 1.21 + BEGIN {buf = 0}; \ 1.22 + $1 == pname {if (buf < $2) buf = $2 * 10 } \ 1.23 + END {print buf} \ 1.24 + ' 1.25 +} 1.26 + 1.27 + 1.28 +check () { 1.29 + [ $(check_get_proc) -ge 800 ] 1.30 +} 1.31 + 1.32 + 1.33 +{ 1.34 + flag="1" 1.35 + echo CHECK 1.36 + if check ; then 1.37 + log -p user.error "qemu agent overload: watching..." 1.38 + cntr=0 1.39 + 1.40 + while [ $cntr -le 100 ] ; do 1.41 + sleep 1 1.42 + cntr=$(( $cntr + 1 )) 1.43 + 1.44 + if ! check ; then 1.45 + flag="" 1.46 + break 1.47 + 1.48 + fi 1.49 + done 1.50 + 1.51 + if [ "$flag" ] ; then 1.52 + log -p user.error "qemu agent overload: restarting" 1.53 + systemctl restart qemu-guest-agent 1.54 + 1.55 + fi 1.56 + 1.57 +} 2>&1 | log 1.58 +