Innholdsfortegnelse:

Service Monitor Script for Linux Servers: 4 trinn
Service Monitor Script for Linux Servers: 4 trinn

Video: Service Monitor Script for Linux Servers: 4 trinn

Video: Service Monitor Script for Linux Servers: 4 trinn
Video: Free Network Monitoring on Windows 10 ( PC , Server , Router , ... ) | NETVN 2024, November
Anonim
Service Monitor Script for Linux -servere
Service Monitor Script for Linux -servere

Å ha et stabilt system som alltid kjører, selv om du bruker Linux, kan være en vanskelig oppgave.

På grunn av kompleksiteten i moderne programvarepakker og dårlig koding, kan noen prosesser uunngåelig krasje fra tid til annen. Dette kan være en dårlig ting hvis du kjører en server og noen er avhengige av disse tjenestene.

Trinn 1: Bruke metoder levert av Systemd

Som du kanskje allerede vet, bruker de fleste moderne Linux -operativsystemer systemd.

Hvis du ikke er kjent med systemd, er dette, ifølge wikipedia:

"… et init -system som brukes i Linux -distribusjoner for å bootstrap brukerområdet og administrere alle prosesser senere, i stedet for UNIX System V eller Berkeley Software Distribution (BSD) init -systemer. …"

Mange krangler fortsatt hvorfor det var nødvendig å erstatte det gode gamle init -systemet med dette mer kompliserte prosessstyringssystemet, men på den følgende lenken kan man finne en god forklaring:

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

Den viktigste forbedringen ville være at det er i stand til å ta opp systemet raskere enn init, på grunn av samtidig og parallell behandling ved oppstart i stedet for den sekvensielle tilnærmingen til init

Uten å gå inn i dypet til systemd, må du opprette en tjenestefil for å legge til en prosess i systemd. Syntaksen til en slik fil kan variere fra veldig enkel til komplisert, og vi vil ikke gå inn på detaljer. For å ha en grunnleggende.service -fil er det tilstrekkelig å bruke følgende oppføringer:

[Enhet] Beskrivelse = Beskrivelse av applicationDocumentation = https://wikipedia.org/ After = local-fs.target network.target [Service] Type = simpleExecStart =/usr/sbin/applicationExecReload =/usr/sbin/application reloadExecStop =/ usr/sbin/application stopRestart = alltid [Installer] WantedBy = multi-user.target

Plasser disse i application.service -filen i/lib/systemd/systemmappen.

Hva hvert av disse alternativene gjør er forklart i følgende lenke:

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

For å starte programmet, må du utstede følgende kommando:

sudo systemctl start application.service

Merk:.service -utvidelsen kan utelates.

Slik stopper du programmet:

sudo systemctl stopp application.service

Hvis konfigurasjonsfilen er endret og du vil laste inn innstillingene på nytt:

sudo systemctl last inn application.service på nytt

Slik starter du programmet på nytt:

sudo systemctl start application.service på nytt

Slik aktiverer du automatisk start ved oppstart:

sudo systemctl aktivere application.service

Hvis dette er aktivert, vil systemd prosessbehandling prøve å starte programmet basert på innstillingene som ble gitt av systemfilen.

For å deaktivere den, bruk samme kommando som ovenfor, men med parameteren "deaktiver".

Hvis du plasserer Restart = alltid i servicefilen, vil systemd overvåke prosessen, og hvis den ikke finnes i prosesslisten, vil den prøve å starte den på nytt automatisk.

Hvis du plasserer

RestartSec = 30

etter omstartdirektivet, vil det vente i 30 sekunder før du prøver å starte prosessen på nytt. Dette kan være nyttig, ettersom et kontinuerlig forsøk på omstart av en mislykket tjeneste/applikasjon kan føre til stor etterspørsel etter systemet (skrivefeillogger osv.)

Som du kan se, gir systemd allerede noen midler for å overvåke prosessene. Imidlertid kan dette i noen tilfeller ikke være tilstrekkelig. Hva om en prosess ikke avsluttes (den vil fortsatt være i prosesslisten), men den slutter å svare. I dette tilfellet, for å sikre at en prosess faktisk er i gang, kan det hende du trenger ytterligere kontroller.

Det er her manusene fra denne instruktive vil komme godt med.

Trinn 2: Konfigurere og bruke Service Checker Scripts

Hvis du trenger mer kontroll over kjørende prosesser/tjenester, vil disse skriptene være nyttige.

Siden koden er litt stor, lastes den opp til github og finnes under følgende depot:

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

"Hjertet" i hele pakken er

checkService.sh

Før du bruker den, må du erstatte hele banen til servicemappen. Dette finner du i begynnelsen av manuset.

Skriptet kan overvåke flere prosesser og utføre tilleggsoppgave, som beskrevet nedenfor:

Den går gjennom hver fil fra undermappen /services som har.serv eller.check utvidelser og vil kontrollere om det er en aktiv prosess som kalles 'applikasjon'.

Hvis det ikke er en.check -fil for et program, bare application.serv -filen:

Hvis prosessen er aktiv, vil den betrakte prosessen som aktiv

Hvis prosessen er inaktiv, starter tjenesten på nytt ved å gi følgende kommando:

systemctl start programmet på nytt

hvis.serv -filen er tom!

Hvis.serv -filen ikke er tom og har kjørbare rettigheter, vil den prøve å kjøre den som et vanlig BASH -skript.

Dette er nyttig hvis noe i tillegg må gjøres i tillegg til bare å starte tjenesten på nytt.

For eksempel, i spamd.serv -filen, fra repoen ovenfor, i tilfelle spamd -tjenesten er død, må spamassassin -tjenesten startes på nytt i stedet, som også starter spamd på nytt. Å starte på nytt bare spamd ville ikke være tilstrekkelig.

Man kan redigere innholdet i en slik serv -fil i henhold til behovene.

Et annet eksempel er pcscd.serv -filen. I dette tilfellet ble flere andre prosesser også startet på nytt/drept.

Hvis det er en sjekkfil, vil den også kjøre denne skriptfilen for å utføre ytterligere kontroller etter å ha sjekket om prosessen kjører.

For eksempel, for oscam -tjenesten, har vi opprettet en sjekkfil som prøver å koble til webgrensesnittet for å se om den lykkes. Hvis ikke, så til tross for at prosessen er aktiv, reagerer ikke tjenesten og må startes på nytt. Omstarten av tjenesten må utføres/kalles av selve.check -filen.

Et annet eksempel ville være mediatomb DLNA -tjenesten.

Dette er en liten server som tilbyr video/lydinnhold til DLNA -klienter og sender seg selv på nettverket. Noen ganger henger tjenesten, og den kan ikke oppdages lenger, men prosessen vil fortsatt være aktiv. For å sjekke om tjenesten er oppdagbar, ble CLI-verktøyet kalt gssdp-discover brukt. Hele koden som kontrollerer DLNA -serveren ble plassert i et mediatomb.check -skript.

Dette er bare noen få eksempler på hvordan du kan bruke.serv- og.check -filene.

For å overvåke en ny tjeneste må du opprette en.serv og om nødvendig også en sjekkfil og skrive det tilhørende skriptet inne i dem.

Hvis det bare er nok å kontrollere om prosessen er tilstede, vil en tom.serv -fil være tilstrekkelig. Hvis ytterligere kontroller må utføres, må en.check -fil opprettes og et lite skript må skrives for å gjøre jobben.

Selvfølgelig må.sh -skriptet kjøres med jevne mellomrom, derfor må det også opprettes en cron -jobb for det:

#sjekk driftstjenester hvert 5. minutt */5 * * * * /var/bin/ServiceCheck/checkService.sh>/dev/null

Trinn 3: Avsluttende tanker

Jeg håper du vil finne denne pakken nyttig, da den i stor grad kan overvåke Linux -prosesser og forhåpentligvis vil minimere nedetid for tjenestene dine.

Last opp flere skript til github hvis du oppretter nye. Bare gi meg beskjed, så legger jeg deg til som bidragsyter.

Anbefalt: