Child pages
  • Мониторинг активаторов и дисковери
Skip to end of metadata
Go to start of metadata

Столкнуляс с проблемой, что активаторы и дисковери отмирают при большом количестве задач. Для решения проблемы было принято решение написать скрипт, позволяющий восстановить умершие сервисы. Детектирование производится по несовпадению количества запущенных процессов в supervisord и consul


#!/bin/bash
## Check needed and running workers
needWorkers=$(curl -s localhost:8500/v1/agent/services | python -m json.tool | grep act | wc -l)
haveWorkers=$(/opt/noc/noc ctl status | grep activ | grep RUNN | wc -l)
## Check needed and running discovery
needDiscovery=$(curl -s localhost:8500/v1/agent/services | python -m json.tool | grep discovery | wc -l)
haveDiscovery=$(/opt/noc/noc ctl status | grep discovery | grep RUNN | wc -l)

if [[ "$needWorkers" !=  "$haveWorkers" ]]; then
## Find dead workers by recent log update
  l=$(find /var/log/noc/activator-default*.log -cmin +5 -exec basename {} \; | grep activ)
  for file in ${l[@]}; do
    proc=${file%.*}
    service=activator-default:$proc
    echo restart $service
    /opt/noc/noc ctl restart $service
  done

elif [[ "$needDiscovery" !=  "$haveDiscovery" ]]; then
## Find dead discovery by recent log update
  l=$(find /var/log/noc/discovery-default*.log -cmin +5 -exec basename {} \; | grep discov)
  for file in ${l[@]}; do
    proc=${file%.*}
    service=discovery-default:$proc
    echo restart $service
    /opt/noc/noc ctl restart $service
  done
fi