Kazalo:
- 1. korak: Uporaba metod, ki jih ponuja Systemd
- 2. korak: Konfiguriranje in uporaba skriptov za preverjanje storitev
- 3. korak: Zadnje misli
Video: Skript nadzornika storitev za strežnike Linux: 4 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:08
Stabilen, vedno delujoč sistem, tudi če uporabljate Linux, je lahko težka naloga.
Zaradi zapletenosti sodobnih programskih paketov in slabega kodiranja se lahko nekateri procesi občasno zrušijo. To je lahko slaba stvar, če uporabljate strežnik in se nekateri zanašajo na te storitve.
1. korak: Uporaba metod, ki jih ponuja Systemd
Kot morda že veste, večina sodobnih operacijskih sistemov Linux uporablja systemd.
Če niste seznanjeni s systemd, je to po wikipediji:
"… Init sistem, ki se uporablja v distribucijah Linuxa za zagon uporabniškega prostora in naknadno upravljanje vseh procesov, namesto init sistemov UNIX System V ali Berkeley Software Distribution (BSD).…"
Mnogi se še vedno prepirajo, zakaj je bilo treba stari dobri sistem init zamenjati s tem bolj zapletenim sistemom upravljanja procesov, vendar bi na naslednji povezavi lahko našli dobro razlago:
www.tecmint.com/systemd-replaces-init-in-l…
Najpomembnejša izboljšava bi bila ta, da lahko sistem vzpostavi hitreje kot init zaradi sočasne in vzporedne obdelave ob zagonu namesto zaporednega pristopa init
Ne da bi se spuščali v globino systemd, morate za dodajanje procesa v systemd ustvariti servisno datoteko. Sintaksa takšne datoteke se lahko giblje od zelo preprostih do skrajno zapletenih in ne bomo šli v podrobnosti. Za osnovno datoteko.service zadostuje uporaba naslednjih vnosov:
[Enota] Opis = Opis aplikacijeDocumentation = https://wikipedia.org/ After = local-fs.target network.target [Service] Type = simpleExecStart =/usr/sbin/applicationExecReload =/usr/sbin/reloadExecStop =/ usr/sbin/application stopRestart = vedno [Namesti] WantedBy = večkoristen cilj
Postavite jih v datoteko application.service v mapo/lib/systemd/system.
Kaj počne vsaka od teh možnosti, je razloženo na naslednji povezavi:
access.redhat.com/documentation/en-US/Red_…
Če želite zagnati aplikacijo, izdajte naslednji ukaz:
sudo systemctl zaženite application.service
Opomba: razširitev.service lahko izpustite.
Če želite ustaviti aplikacijo:
sudo systemctl stop application.service
Če je bila konfiguracijska datoteka spremenjena in želite znova naložiti nastavitve:
sudo systemctl ponovno naložite aplikacijo.service
Če želite znova zagnati aplikacijo:
sudo systemctl znova zaženite application.service
Če želite omogočiti samodejni zagon ob zagonu:
sudo systemctl omogoči application.service
Če je to omogočeno, bo sistemski upravitelj procesov poskušal zagnati aplikacijo na podlagi nastavitev, ki jih je zagotovila sistemska datoteka.
Če ga želite onemogočiti, uporabite isti ukaz kot zgoraj, vendar s parametrom 'disable'.
Če znova vnesete Restart = vedno v datoteko storitve, bo sistemd spremljal postopek in če ga ni mogoče najti na seznamu procesov, ga bo poskušal samodejno znova zagnati.
Če postavite
RestartSec = 30
po direktivi restart bo počakala 30 sekund, preden bo poskusila znova zagnati postopek. To je lahko koristno, saj lahko neprekinjen poskus ponovnega zagona neuspešne storitve/aplikacije povzroči veliko povpraševanje po sistemu (pisanje dnevnikov napak itd.)
Kot lahko vidite, systemd že ponuja nekaj načinov za spremljanje procesov. Vendar v nekaterih primerih to morda ne bo dovolj. Kaj pa, če se proces ne zapre (še vedno bo na seznamu procesov), vendar se preneha odzivati. V tem primeru boste morda potrebovali dodatna preverjanja, da se prepričate, da je postopek res zagnan in teče.
Tu vam bodo prišli skripti iz tega navodila.
2. korak: Konfiguriranje in uporaba skriptov za preverjanje storitev
Če potrebujete več nadzora nad izvajajočimi se procesi/storitvami, bodo ti skripti zagotovo v pomoč.
Ker je koda nekoliko velika, je naložena v github in jo najdete pod naslednjim skladiščem:
github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh
"Srce" celotnega paketa je
checkService.sh
Pred uporabo morate zamenjati celotno pot do mape storitev. To lahko najdete na začetku skripte.
Skript lahko spremlja več procesov in izvede dodatno nalogo, kot je opisano spodaj:
Prehaja skozi vse datoteke iz podmape /services z razširitvami.serv ali.check in preveri, ali obstaja aktiven postopek, imenovan "aplikacija".
Če za aplikacijo ni datoteke '.check', je samo datoteka application.serv:
Če je proces aktiven, se bo postopek obravnaval kot aktiven
Če postopek ni aktiven, bo storitev znova zagnal z naslednjim ukazom:
program za ponovni zagon systemctl
če je datoteka.serv prazna!
Če datoteka.serv ni prazna in ima izvršljive pravice, jo bo poskušala zagnati kot navaden skript BASH.
To je uporabno, če morate poleg ponovnega zagona storitve storiti še kaj.
Na primer, v datoteki spamd.serv iz zgornjega repo -ja, če je storitev spamd mrtva, je treba storitev spamassassin namesto tega znova zagnati, kar bo tudi znova zagnalo spamd. Ponovni zagon samo spamd ne bi zadostoval.
Vsebino takšne strežniške datoteke lahko uredite glede na potrebe.
Drug primer je datoteka pcscd.serv. V tem primeru se je znova zagnalo/ubilo še nekaj drugih procesov.
Če obstaja datoteka za preverjanje, bo po preverjanju, ali se postopek izvaja, zagnala tudi to datoteko skripta, da izvede dodatna preverjanja.
Na primer, za storitev oscam smo ustvarili datoteko za preverjanje, ki se poskuša povezati s spletnim vmesnikom in preveriti, ali je uspešna. V nasprotnem primeru se storitev kljub aktivnemu procesu ne odziva in jo je treba znova zagnati. Ponovni zagon storitve mora izvesti/poklicati sama datoteka.check.
Drug primer bi bila storitev DLNA mediatomb.
To je majhen strežnik, ki odjemalcem DLNA ponuja video/zvočne vsebine in se oddaja v omrežju. Včasih storitev visi in je ni več mogoče odkriti, vendar bo postopek še vedno aktiven. Za preverjanje, ali je storitev mogoče odkriti, je bil uporabljen pripomoček CLI gssdp-discovery. Celotna koda, ki preverja strežnik DLNA, je bila postavljena v skript mediatomb.check.
To je le nekaj primerov, kako lahko uporabite datoteke.serv in.check.
Če želite spremljati novo storitev, morate ustvariti.serv in po potrebi tudi datoteko za preverjanje ter v njih napisati ustrezen skript.
Če je dovolj samo preveriti prisotnost procesa, bo zadostovala prazna datoteka.serv. Če je treba opraviti dodatna preverjanja, je treba ustvariti datoteko.check in napisati majhen skript za opravljanje dela.
Seveda je treba skript.sh občasno izvajati, zato je treba zanj ustvariti tudi opravilo cron:
#preverite delujoče storitve vsakih 5 minut */5 * * * * /var/bin/ServiceCheck/checkService.sh>/dev/null
3. korak: Zadnje misli
Upam, da vam bo ta paket koristen, saj lahko zelo preprosto spremlja procese Linuxa in upam, da bo zmanjšal izpad vaših storitev.
Če ustvarite nove, lahko v github naložite dodatne skripte. Sporočite mi in dodal vas bom kot sodelavca.
Priporočena:
MCU Dostop do internetnih storitev prek IFTTT - Ameba Arduino: 3 koraki
MCU Dostop do internetnih storitev prek IFTTT - Ameba Arduino: Dostop do internetnih storitev je lahka naloga za pametno napravo, kot je telefon Android, tablični računalnik ali računalnik, vendar za mikrokrmilnike ni tako enostavna, saj običajno zahteva boljšo povezljivost in procesorsko moč. Lahko pa raztovorimo težki del
AWS in IBM: Primerjava storitev IoT: 4 koraki
AWS in IBM: Primerjava storitev IoT: Danes primerjamo dva sklada, ki omogočata razvoj aplikacij IoT z vidika različnih ponudb storitev
Programiranje čipov z vašim Arduinom - ponudnik internetnih storitev AVR, ki zajema ATTiny85, ATTiny2313 in ATMega328: 3 koraki
Programiranje čipov z vašim Arduinom - ponudnik internetnih storitev AVR, ki zajema ATTiny85, ATTiny2313 in ATMega328: To se mi je zdelo kot osnutek pred mnogimi leti. Vsaj zame je še vedno koristno, zato ga bom objavil! Ta Instructable je zbirka znanja, zbranega z vsega 'net in' nstructables. Zajema programiranje programa AVR Microco
Okrepitev storitev SSL na vašem spletnem strežniku (Apache/ Linux): 3 koraki
Okrepitev storitev SSL na vašem spletnem strežniku (Apache/ Linux): To je zelo kratek vodič, ki obravnava en vidik kibernetske varnosti - moč storitve ssl na vašem spletnem strežniku. Ozadje je, da se storitve ssl na vašem spletnem mestu uporabljajo za zagotovitev, da nihče ne more vdreti v podatke, ki se prenašajo
Spremenite svoje strežnike DNS v OpenDNS: 6 korakov
Spremenite svoje strežnike DNS v OpenDNS: V zadnjem času so bili strežniki AOL nekoliko nerodni in ne delujejo pravilno, kar pomeni, da nekatere nesrečne duše, kot sem jaz, niso mogle dostopati do določenih spletnih mest (predvsem wiggle.co.uk). To lahko odpravite tako, da spremenite DNS