Mündəricat:

Linux Serverləri üçün Xidmət Monitoru Script: 4 Addım
Linux Serverləri üçün Xidmət Monitoru Script: 4 Addım

Video: Linux Serverləri üçün Xidmət Monitoru Script: 4 Addım

Video: Linux Serverləri üçün Xidmət Monitoru Script: 4 Addım
Video: Beelink GK Mini часть 2 - Autoboot, Debian 11, Supervised Home Assistant 2024, Noyabr
Anonim
Linux Serverləri üçün Service Monitor Script
Linux Serverləri üçün Service Monitor Script

Linux istifadə etsəniz belə, sabit, daim işləyən bir sistemə sahib olmaq çətin bir iş ola bilər.

Müasir proqram paketlərinin mürəkkəbliyi və pis kodlaşdırma səbəbindən istər -istəməz bəzi proseslər zaman zaman çökə bilər. Bir server idarə edirsinizsə və bəzi insanlar bu xidmətlərə güvənirsinizsə bu pis bir şey ola bilər.

Addım 1: Systemd tərəfindən verilən üsullardan istifadə

Bildiyiniz kimi, müasir Linux əməliyyat sistemlərinin çoxu systemd istifadə edir.

Systemd ilə tanış deyilsinizsə, vikipediyaya görə budur:

"… Linux paylanmalarında istifadəçi sahəsini açmaq və sonradan bütün prosesləri idarə etmək üçün UNIX System V və ya Berkeley Software Distribution (BSD) init sistemləri əvəzinə istifadə olunan bir başlanğıc sistemi.…"

Bir çox insanlar hələ də köhnə yaxşı başlanğıc sistemini niyə bu daha mürəkkəb proses idarəetmə sistemi ilə əvəz etmənin lazım olduğunu mübahisə edirlər, lakin aşağıdakı linkdə yaxşı bir izahat tapa bilərsiniz:

www.tecmint.com/systemd-replaces-init-in-l…

Ən vacib təkmilləşdirmə, sistemin ardıcıl yanaşma yerinə açılışda eyni vaxtda və paralel işlənməsi səbəbiylə sistemi başlanğıcdan daha sürətli inkişaf etdirə bilməsidir.

Sistemin dərinliklərinə girmədən, sistemə bir proses əlavə etmək üçün bir xidmət faylı yaratmalısınız. Belə bir faylın sintaksisi çox sadədən son dərəcə mürəkkəbə qədər dəyişə bilər və detallara girməyəcəyik. Əsas bir.service faylına sahib olmaq üçün aşağıdakı qeydləri istifadə etmək kifayətdir:

[Bölmə] Təsvir = applicationDocumentation = https://wikipedia.org/ After = local-fs.target network.target [Service] Type = simpleExecStart =/usr/sbin/applicationExecReload =/usr/sbin/application reloadExecStop =/ usr/sbin/application stopRestart = həmişə [Install] WantedBy = multi-user.target

Bunları/lib/systemd/system qovluğunda application.service faylına yerləşdirin.

Bu variantların hər birinin nə edəcəyini aşağıdakı linkdə izah edirik:

access.redhat.com/documentation/en-US/Red_…

Tətbiqə başlamaq üçün aşağıdakı əmri verin:

sudo systemctl başlamaq application.service

Qeyd:.service uzantısı buraxıla bilər.

Tətbiqi dayandırmaq üçün:

sudo systemctl stop application.service

Konfiqurasiya faylı dəyişdirilibsə və parametrləri yenidən yükləmək istəyirsinizsə:

sudo systemctl proqramını yenidən yükləyin. xidmət

Tətbiqi yenidən başlatmaq üçün:

sudo systemctl application.service'i yenidən başladın

Açılışda avtomatik başlamağı aktiv etmək üçün:

sudo systemctl application.service imkan verir

Bu aktivdirsə, systemd proses meneceri, sistem faylının təmin etdiyi parametrlərə əsaslanaraq proqramı işə salmağa çalışacaq.

Bunu aradan qaldırmaq üçün yuxarıdakı kimi eyni əmri istifadə edin, ancaq 'disable' parametri ilə.

Yenidən Başlat = hər zaman xidmət faylına yerləşdirsəniz, systemd prosesi izləyəcək və proses siyahısında tapıla bilməzsə, avtomatik olaraq yenidən başlamağa çalışacaq.

Yerləşdirsəniz

RestartSec = 30

yenidən başlatma direktivindən sonra prosesi yenidən başlatmağa çalışmadan əvvəl 30 saniyə gözləyəcək. Arızalı bir xidmətin/tətbiqin davamlı yenidən başlatma cəhdi sistemdə yüksək tələbata səbəb ola biləcəyi üçün faydalı ola bilər (səhv qeydlərini yazmaq və s.)

Gördüyünüz kimi, systemd artıq prosesləri izləmək üçün bəzi vasitələr təqdim edir. Ancaq bəzi hallarda bu kifayət etməyəcək. Bir proses çıxmazsa (proseslər siyahısında hələ də olacaq), amma cavab verməyi dayandırsa. Bu vəziyyətdə, bir prosesin həqiqətən işlədiyinə əmin olmaq üçün əlavə yoxlamalara ehtiyacınız ola bilər.

Bu təlimatlandırılmış yazıların faydalı olacağı yer budur.

Addım 2: Xidmət yoxlayıcı skriptlərini konfiqurasiya etmək və istifadə etmək

İşləyən proseslərinizə/xidmətlərinizə daha çox nəzarət etməlisinizsə, bu skriptlər şübhəsiz faydalı olacaqdır.

Kod bir qədər böyük olduğu üçün github -a yüklənir və aşağıdakı depo altında tapıla bilər:

github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh

Bütün paketin 'ürəyi'

checkService.sh

İstifadə etməzdən əvvəl xidmət qovluğunun tam yolunu dəyişdirməlisiniz. Bunu skriptin əvvəlində tapa bilərsiniz.

Skript, bir neçə prosesi izləyə və aşağıda göstərildiyi kimi əlavə vəzifə yerinə yetirə bilər:

. Serv və ya.check uzantıları olan /services alt qovluğundan olan hər bir fayldan keçir və 'application' adlı aktiv bir prosesin olub olmadığını yoxlayacaq.

Tətbiq üçün '.check' faylı yoxdursa, yalnız application.serv faylı:

Proses aktiv olarsa, prosesi aktiv hesab edəcək

Proses aktiv deyilsə, aşağıdakı əmri verərək xidməti yenidən başlatacaq:

systemctl yenidən başladın

.serv faylı boşdursa!

. Serv faylı boş deyilsə və icra edilə bilən hüquqlara malikdirsə, onu sadə bir BASH skripti kimi işə salmağa çalışacaq.

Bu xidməti yenidən başlatmaqla yanaşı əlavə bir şey edilməlidirsə faydalıdır.

Məsələn, spamd.serv faylında, yuxarıdakı repodan, spam xidmətinin ölməsi halında, spamassassin xidmətinin yerinə yenidən başlaması lazımdır ki, bu da spam -ı yenidən başlatacaq. Yalnız spam -ı yenidən başlatmaq kifayət etməyəcək.

Belə bir xidmət faylının məzmununu ehtiyaclara uyğun olaraq düzəldə bilərsiniz.

Başqa bir nümunə pcscd.serv faylıdır. Bu vəziyyətdə bir neçə digər proses də yenidən başladıldı/öldürüldü.

Bir yoxlama faylı varsa, prosesin işlədiyini yoxladıqdan sonra əlavə yoxlamalar aparmaq üçün bu skript faylını da işlədər.

Məsələn, oscam xidməti üçün müvəffəqiyyətli olub olmadığını görmək üçün veb interfeysinə qoşulmağa çalışan bir çek faylı yaratdıq. Əks təqdirdə, prosesin aktiv olmasına baxmayaraq, xidmət cavab vermir və yenidən başlamalıdır. Xidmətin yenidən başladılması. Çek faylının özü tərəfindən edilməli/çağrılmalıdır.

Başqa bir nümunə, mediatomb DLNA xidməti ola bilər.

Bu DLNA müştərilərinə video/audio məzmun verən və özünü şəbəkədə yayımlayan kiçik bir serverdir. Bəzən xidmət dayanır və artıq aşkar edilə bilməz, amma proses hələ də aktiv olacaq. Xidmətin kəşf edilə biləcəyini yoxlamaq üçün gssdp-discover adlı CLI yardım proqramı istifadə edilmişdir. DLNA serverini yoxlayan bütün kod mediatomb.check skriptinin içərisinə yerləşdirildi.

Bunlar.serv və.check fayllarından necə istifadə edə biləcəyinizə dair bir neçə nümunədir.

Yeni bir xidməti izləmək üçün.serv yaratmalı və lazım gələrsə bir çek faylı yaratmalı və içərisində müvafiq skript yazmalısınız.

Kifayət qədər əgər prosesin mövcudluğunu yoxlayırsınızsa, boş bir.serv faylı kifayət edər. Əlavə yoxlamalar aparılmalıdırsa, işi görmək üçün.check faylı yaradılmalı və kiçik bir skript yazılmalıdır.

Əlbəttə ki,.sh skriptinin vaxtaşırı işləməsi lazımdır, buna görə də bunun üçün bir cron işi də yaradılmalıdır:

#hər 5 dəqiqədə işləyən xidmətləri yoxlayın */5 * * * * /var/bin/ServiceCheck/checkService.sh>/dev/null

Addım 3: Son Fikirlər

Ümid edirəm bu paketi faydalı hesab edəcəksiniz, çünki Linux proseslərinin monitorinqini çox asanlaşdırır və inşallah xidmətlərinizin dayanma müddətini minimuma endirəcəkdir.

Yenisini yaratsanız, github -a əlavə skriptlər yükləməkdən çekinmeyin. Sadəcə mənə bildirin və mən də sizi töhfəçi olaraq əlavə edəcəyəm.

Tövsiyə: