Sadržaj:

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

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

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

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

Zbog složenosti suvremenih programskih paketa i lošeg kodiranja, neki se procesi mogu s vremena na vrijeme neizbježno srušiti. To 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 operacijskih sustava koristi systemd.

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

"… init sustav koji se koristi u distribucijama Linuxa za bootstrap korisničkog prostora i naknadno upravljanje svim procesima, umjesto init sustava UNIX System V ili Berkeley Software Distribution (BSD) …"

Mnogi se ljudi još uvijek raspravljaju zašto je bilo potrebno zamijeniti stari dobri init sustav ovim kompliciranijim sustavom 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 sustav brže od init -a, zbog istovremene i paralelne obrade pri pokretanju umjesto sekvencijalnog pristupa init -a

Ne ulazeći u dubine systemd, da biste dodali proces u systemd, morate stvoriti 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 reloadExecStop =/ usr/sbin/application stopRestart = uvijek [Instaliraj] TraženoBy = višekorisnički cilj

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

Što 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 start application.service

Napomena: proširenje.service može se izostaviti.

Da biste zaustavili aplikaciju:

sudo systemctl stop application.service

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

sudo systemctl aplikacija za ponovno učitavanje.usluga

Za ponovno pokretanje aplikacije:

sudo systemctl restart application.service

Da biste omogućili automatsko pokretanje pri pokretanju:

sudo systemctl omogućiti aplikaciju.service

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

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

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

Ako postavite

RestartSec = 30

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

Kao što vidite, systemd već pruža neka sredstva za praćenje procesa. Međutim, u nekim slučajevima to možda neće biti dovoljno. Što ako proces ne izađe (i dalje će biti na popisu procesa), ali prestane reagirati. U tom slučaju, kako biste bili sigurni da je proces doista 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 provjere usluge

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

Kako je kôd malo velik, postavljen je na github i može se pronaći u sljedećem spremištu:

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

"Srce" cijelog paketa je

checkService.sh

Prije korištenja morate zamijeniti puni put do mape 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 s ekstenzijama.serv ili.check te će provjeriti postoji li aktivan proces pod nazivom "aplikacija".

Ako za aplikaciju nema datoteke '.check', samo datoteka application.serv:

Ako je proces aktivan, smatrat će ga aktivnim

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

program za ponovno pokretanje systemctl

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.

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

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

Sadržaj takve serv datoteke može se uređivati 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 je li 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 bila bi DLNA usluga 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. Cijeli kod koji provjerava DLNA poslužitelj 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 te 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:

#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.

Ako stvarate nove, slobodno prenesite dodatne skripte na github. Samo me obavijestite i ja ću vas dodati kao suradnika.

Preporučeni: