healthcheck.sh 1.2 KB

12345678910111213141516171819202122232425262728293031
  1. #!/bin/bash
  2. containerstart=`stat -c %Z /proc/1`
  3. curtime=`date +%s`
  4. if (( curtime-containerstart < 180 )); then
  5. echo "Container start period, returning 0"
  6. exit 0
  7. fi
  8. curl -f -H 'Host:demo.infoclinica.ru' 127.0.0.1:9000/login || exit 1
  9. # Проверяем наличие файла с переменной time_to_dead
  10. if [ -f /tmp/dead ];then
  11. if (( "${curtime}" > "$(cat /tmp/dead)" )); then echo ${curtime} > $(cat /tmp/dead);kill 1;fi
  12. else
  13. # Определяем изменился ли адрес админки
  14. ping -c3 $(cat /tmp/admin_ip)
  15. if [[ $? -ne 0 ]]; then
  16. new_admin_ip=$(nslookup ${ADMIN_HOST}.${APPNET}|grep Address|tail -n1|cut -d " " -f2)
  17. if [[ ${new_admin_ip} != $(cat /tmp/admin_ip) ]];then
  18. ping -c3 ${new_admin_ip} || exit 0
  19. fi
  20. # Вычисляем адрес node
  21. node_ip=$(nslookup ${HOSTNAME}.${APPNET}|grep Address|tail -n +2|cut -d " " -f2)
  22. # Вычисляем index в названии tasks
  23. service_index=$(nslookup ${node_ip}|grep "in-addr.arpa"|cut -d " " -f3|cut -d "." -f2)
  24. # Создаем файл со временем убийства контейнера
  25. time_to_dead=$((service_index*180+curtime))
  26. echo ${time_to_dead} > /tmp/dead
  27. fi
  28. fi