Sadržaj:

Skripta servisnog monitora za Linux poslužitelje: 4 koraka
Skripta servisnog monitora za Linux poslužitelje: 4 koraka

Video: Skripta servisnog monitora za Linux poslužitelje: 4 koraka

Video: Skripta servisnog monitora za Linux poslužitelje: 4 koraka
Video: CS50 2014 – 7-я неделя 2024, Novembar
Anonim
Skripta servisnog monitora za Linux poslužitelje
Skripta servisnog monitora za Linux poslužitelje

Imati stabilan sistem koji uvijek radi, čak i ako koristite Linux, može biti težak zadatak.

Zbog složenosti modernih softverskih paketa i lošeg kodiranja, neki se procesi mogu srušiti s vremena na vrijeme. Ovo bi moglo biti loše ako koristite poslužitelj, a neki se ljudi oslanjaju na te usluge.

Korak 1: Korištenje metoda koje nudi Systemd

Kao što možda već znate, većina modernih Linux operativnih sistema koristi systemd.

Ako niste upoznati sa systemd, ovo je, prema wikipediji:

"… init sistem koji se koristi u Linux distribucijama za bootstrap korisnički prostor i naknadno upravljanje svim procesima, umjesto UNIT System V ili Berkeley Software Distribution (BSD) init sistema."

Mnogi ljudi još uvijek raspravljaju zašto je bilo potrebno zamijeniti stari dobri init sistem sa ovim kompliciranijim sistemom upravljanja procesima, ali na sljedećoj se vezi moglo pronaći dobro objašnjenje:

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

Najvažnije poboljšanje bilo bi to što može pokrenuti sistem brže od init -a, zbog istovremene i paralelne obrade pri pokretanju umjesto sekvencijalnog pristupa init -a

Bez ulaženja u dubine systemd -a, da biste dodali proces u systemd, morate kreirati servisnu datoteku. Sintaksa takve datoteke može biti u rasponu od vrlo jednostavnih do krajnje kompliciranih i nećemo ulaziti u detalje. Da biste imali osnovnu.service datoteku, dovoljno je koristiti sljedeće unose:

[Jedinica] Opis = Opis aplikacijeDocumentation = https://wikipedia.org/ After = local-fs.target network.target [Service] Vrsta = simpleExecStart =/usr/sbin/applicationExecReload =/usr/sbin/aplikacija za ponovno učitavanjeExecStop =/ usr/sbin/application stopRestart = uvijek [Instaliraj] TraženoBy = višekorisnički cilj

Postavite ih u datoteku application.service u/lib/systemd/system folder.

Šta svaka od ovih opcija radi objašnjeno je na sljedećoj poveznici:

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

Da biste pokrenuli aplikaciju, izdajte sljedeću naredbu:

sudo systemctl pokrenite application.service

Napomena:.service ekstenzija se može izostaviti.

Da biste zaustavili aplikaciju:

sudo systemctl stop application.service

Ako je konfiguracijska datoteka promijenjena i želite ponovo učitati postavke:

sudo systemctl ponovno učitavanje application.service

Da biste ponovo pokrenuli aplikaciju:

sudo systemctl ponovo pokrenite application.service

Da biste omogućili automatsko pokretanje pri pokretanju:

sudo systemctl omogućuje application.service

Ako je ovo omogućeno, tada će sistemski upravitelj procesa pokušati pokrenuti aplikaciju na osnovu postavki koje je dala sistemska datoteka.

Da biste ga onemogućili, koristite istu naredbu kao gore, ali s parametrom 'disable'.

Ako postavite Restart = uvijek u servisnu datoteku, tada će systemd nadzirati proces, a ako se ne može pronaći na popisu procesa, pokušat će ga automatski ponovo pokrenuti.

Ako postavite

RestartSec = 30

nakon direktive restart, čekat će 30 sekundi prije nego što pokuša ponovo pokrenuti proces. Ovo bi moglo biti korisno jer pokušaj kontinuiranog ponovnog pokretanja neuspjele usluge/aplikacije može dovesti do velike potražnje za sistemom (pisanje dnevnika grešaka itd.)

Kao što vidite, systemd već pruža neka sredstva za praćenje procesa. Međutim, u nekim slučajevima to može biti nedovoljno. Što ako proces ne izađe (i dalje će biti na popisu procesa), ali prestane reagirati. U ovom slučaju, kako biste bili sigurni da je proces zaista pokrenut, možda će vam trebati dodatne provjere.

Ovdje će vam skripte iz ovog uputstva dobro doći.

Korak 2: Konfiguriranje i korištenje skripti servisne provjere

Ako vam je potrebna veća kontrola nad vašim tekućim procesima/uslugama, ove skripte će vam sigurno biti od pomoći.

Kako je kod malo velik, postavljen je na github i može se pronaći pod sljedećim spremištem:

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

Srce cijelog paketa je

checkService.sh

Prije korištenja morate zamijeniti punu putanju do direktorija usluge. To se može pronaći na početku skripte.

Skripta može nadzirati nekoliko procesa i izvesti dodatni zadatak, kako je dolje opisano:

Prolazi kroz sve datoteke iz podmape /services sa ekstenzijama.serv ili.check i provjerit će postoji li aktivan proces pod nazivom "aplikacija".

Ako za aplikaciju ne postoji datoteka '.check', samo datoteka application.serv:

Ako je proces aktivan, smatrat će ga aktivnim

Ako je proces neaktivan, tada će ponovo pokrenuti uslugu izdavanjem sljedeće naredbe:

systemctl aplikacija za ponovno pokretanje

ako je.serv datoteka prazna!

Ako.serv datoteka nije prazna i ima izvršna prava, pokušat će je pokrenuti kao običnu BASH skriptu.

Ovo je korisno ako morate učiniti još nešto osim ponovnog pokretanja usluge.

Na primjer, u datoteci spamd.serv, iz gore navedenog repo -a, u slučaju da je usluga spamd mrtva, uslugu spamassassin je potrebno ponovno pokrenuti, što će također ponovno pokrenuti spamd. Ponovno pokretanje samo spamda ne bi bilo dovoljno.

Sadržaj takve serv datoteke može se urediti prema potrebama.

Drugi primjer je pcscd.serv datoteka. U ovom slučaju nekoliko drugih procesa je također ponovno pokrenuto/ubijeno.

Ako postoji datoteka za provjeru, nakon provjere da li je proces pokrenut, također će pokrenuti ovu datoteku skripte za dodatne provjere.

Na primjer, za uslugu oscam, stvorili smo datoteku za provjeru koja se pokušava povezati s web sučeljem kako bi provjerila je li uspješna. Ako nije, tada, unatoč aktivnom procesu, usluga ne reagira i potrebno ju je ponovno pokrenuti. Ponovno pokretanje usluge mora izvršiti/pozvati sama.check datoteka.

Drugi primjer bi bio DLNA servis mediatomb.

Ovo je mali poslužitelj koji pruža video/audio sadržaj DLNA klijentima i emitira se na mreži. Ponekad usluga visi i više je nije moguće otkriti, ali proces će i dalje biti aktivan. Za provjeru je li usluga dostupna za otkrivanje, korišten je CLI uslužni program pod nazivom gssdp-discovery. Čitav kôd koji provjerava DLNA server smješten je unutar skripte mediatomb.check.

Ovo je samo nekoliko primjera kako možete koristiti.serv i.check datoteke.

Da biste nadzirali novu uslugu, morate stvoriti.serv, a po potrebi i datoteku za provjeru i unutar njih napisati odgovarajuću skriptu.

Ako samo provjerite prisutnost procesa ako je dovoljno, tada će biti dovoljna prazna.serv datoteka. Ako se moraju izvršiti dodatne provjere, tada se mora stvoriti.check datoteka i napisati mala skripta za obavljanje posla.

Naravno,.sh skripta se mora povremeno pokretati, stoga se za nju mora stvoriti i cron posao:

#check provjerite pokrenute usluge svakih 5 minuta */5 * * * * /var/bin/ServiceCheck/checkService.sh>/dev/null

Korak 3: Završne misli

Nadam se da će vam ovaj paket biti od koristi jer može uvelike jednostavno nadzirati Linux procese i nadam se da će minimizirati zastoje vaših usluga.

Slobodno prenesite dodatne skripte na github, ako kreirate nove. Samo me obavijestite i ja ću vas dodati kao saradnika.

Preporučuje se: