tools.utils

Yohn Y. 2023-12-16 Child:76ec73e5f395

0:e6a423f0d231 Browse Files

+ Скрипт проверки состояния qemu-ga

kvm/qemu-ga.watcher.sh.sh

     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 +