Примеры скрипта bash для контроля памяти в контейнере

Материал из support.qbpro.ru
Версия от 00:55, 9 марта 2022; imported>Vix (Новая страница: «* Скрипт bash сам скрипт: <syntaxhighlight lang="shell" line='line'> #!/bin/bash # контроль свободной памяти в конте...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
  • Скрипт bash

сам скрипт:

#!/bin/bash
# контроль свободной памяти в контейнере dbsrv & dbsrv2 - если меньше 2000 Mб = reboot dbsrv or dbsrv2 и restart mail & zabbix
# author Koshuba V. 2020
#
playbooks="/etc/ansible/playbooks"
hosts=( "dbsrv" "dbsrv2" );
memswitch=( "2000" "2000" );

## Kb <> Byte
function Kb() { if [ ! ${input_unit[2]} ] 
        then eval ${input_unit[1]}=$(echo ${input_unit[0]}*1024|bc -lq);
        else eval ${input_unit[1]}=$(echo "scale=0; ${input_unit[0]}/1024"|bc -lq);
        fi }

function testmem() {
for ((ix=0; ix != ${#hosts[@]}; ix++))
    do
        freemem="$(ansible-playbook $playbooks/getmem_${hosts[$ix]}.yaml |grep MemFree|tail -1|awk '{print$2}')";
        info_free_mem=0;
        input_unit=( "$freemem" "info_free_mem" "1" );
        Kb;
            if [ $info_free_mem -lt ${memswitch[$ix]} ];
                then
                echo "$(date +%c) ${hosts[ix]} free memory $info_free_mem Mb  -> then reboot ${hosts[ix]}">/var/log/syslog
                /usr/bin/ansible-playbook $playbooks/reboot_${hosts[$ix]}.yaml
                echo "$(date +%c) ${hosts[$ix]} free memory $info_free_mem Mb -> then reboot ${hosts[$ix]} "|mail -s "hostmain - ansible: ${hosts[$ix]} free memory $info_free_mem Mb -> then reboot" admin@myhost.ru

            fi
done;
}
testmem;
  • Описание работы:
1. Скрипт перебирает указанные плейбуки в имени которых есть имя хоста, если количество памяти мало то скрипт останавливает службы на других хостах и перегружает сервер базы данных через плейбук специально написанный для этого.
2. Параметр скрипта memswitch указывает минимальный размер памяти для нормальной работы. 
3. Скрипт запускается раз в сутки через crontab