Supervisor, UNIX tabanlı işletim sistemlerinde çalışan işlemleri gözlem altında tutup kontrol eden bir sistemdir. Belirlenen işlemleri gözlem altına alır ve herhangi bir nedenden dolayı duran işlemleri tekrar otomatik olarak çalıştırır. Daha fazla bilgi için Supervisor: A Process Control System sayfasını okuyabilirsiniz.

Sisteminizde uzun süreli çalışması gereken bir servisiniz veya kodunuz (e.g. RabbitMQ, Beanstalkd etc.) var ise, bunların gerçekten çalışıyor olmalarına emin olmak istersiniz. Bildiğimiz gibi bilinmeyen nedenlerden dolayı, her an bir servisimiz veya kodumuz durabilir. Bu gibi durumlarda servisimiz veya kodumuz, hiç bir şekilde insan eli deymeden tekrar çalışmalılar. İşte böyle durumlarda supervisor kullanırız.


Kurulum


$ sudo apt-get install supervisor

--- Version
$ supervisord -v
3.0b2

Komutlar


Daha fazla bilgi için Running Supervisor ve Running Supervisorctl sayfalarını okuyabilirsiniz..


$ sudo service supervisor {start|stop|restart|force-reload|status|force-stop}

$ sudo supervisorctl # Lists all processes and lets you use internal commands

Log


Ana log dosyası /var/log/supervisor/supervisord.log yolundadır. Bu bizim kendi servis/kod konfigürasyon log dosyalarımızdan bağımsızdır.


Konfigürasyon


Konfigürasyon dosyası /etc/supervisor/supervisord.conf yolundadır. Dosyayı açarsanız, en altta aşağıdaki bölümü göreceksiniz.


[include]
files = /etc/supervisor/conf.d/*.conf

Bu demek oluyor ki, sonu *.conf uzantısıyla biten dosyaları /etc/supervisor/conf.d/ klasörüne koyarsanız, supervisord bunları yükleyip çalıştıracaktır. Servis veya kodunuz için yeni bir tane konfigürasyon dosyası yarattığınızda, dosyayı aynı klasöre yerleştirmelisiniz. Örnek: /etc/supervisor/conf.d/hello-world.conf


Konfigürasyon seçenekleri


Daha fazla bilgi için Configuration sayfasını okuyabilirsiniz.



Her zaman -DFOREGROUND ekini ve startsecs=0 seçeneğini kullandığınıza emin olun. Bunlar işleyicilerin daha güvenilir bir şekilde çalışmalarını sağlayacaktır. Aksi taktirde # INFO gave up: ... entered FATAL state, too many start retries too quickly veya Exited too quickly (process log may have details) gibi hatalar alabilirsiniz.


Konfigürasyon dosyasını yükleme


Servis veya kodunuz için yeni bir tane konfigürasyon dosyası yarattıysanız, aşağıdaki komutlar ile supervisoru bilgilendirmeniz gerekir.


$ sudo supervisorctl reread
$ sudo supervisorctl update

Mevcut işlemlerin ve yerel komutların listesi


Daha fazla bilgi için Running Supervisorctl sayfasını okuyabilirsiniz.


$ sudo supervisorctl
supervisor>

Tüm yerel komutların listesi için help komutunu kullanabilirsiniz.


supervisor> help

default commands (type help ):
=====================================
add clear fg open quit remove restart start stop update
avail exit maintail pid reload reread shutdown status tail version

Tarayıcı arayüzü


Aşağıdaki bilgiyi sudo nano /etc/supervisor/supervisord.conf konfigürasyon dosyasına ekleyin.


[inet_http_server]
port = 9001
username = admin
password = admin

Supervisor'u yeniden başlatın.


$ sudo service supervisor restart

Tarayıcıdan http://192.168.50.30:9001/ adresine gidin.