Indholdsfortegnelse:

Service Monitor Script til Linux -servere: 4 trin
Service Monitor Script til Linux -servere: 4 trin

Video: Service Monitor Script til Linux -servere: 4 trin

Video: Service Monitor Script til Linux -servere: 4 trin
Video: Monitor Linux Servers with Zabbix - Comprehensive Setup Guide 2024, November
Anonim
Service Monitor Script til Linux -servere
Service Monitor Script til Linux -servere

At have et stabilt, altid kørende system, selvom du bruger Linux, kan være en vanskelig opgave.

På grund af kompleksiteten i moderne softwarepakker og dårlig kodning kan nogle processer uundgåeligt gå ned fra tid til anden. Dette kan være en dårlig ting, hvis du kører en server, og nogle mennesker er afhængige af disse tjenester.

Trin 1: Brug af metoder leveret af Systemd

Som du måske allerede ved, bruger de fleste moderne Linux -operativsystemer systemd.

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

"… et init -system, der bruges i Linux -distributioner til at bootstrap brugerrummet og administrere alle processer efterfølgende, i stedet for UNIX System V eller Berkeley Software Distribution (BSD) init -systemer. …"

Mange mennesker argumenterer stadig over, hvorfor det var nødvendigt at udskifte det gode gamle init -system med dette mere komplicerede processtyringssystem, men på det følgende link finder man måske en god forklaring:

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

Den vigtigste forbedring ville være, at det er i stand til at hente systemet hurtigere end init på grund af samtidig og parallel behandling ved opstart i stedet for den sekventielle tilgang til init

Uden at gå ind i systemdypet skal du oprette en servicefil for at tilføje en proces til systemd. Syntaksen for en sådan fil kan variere fra meget enkel til fuldstændig kompliceret, og vi vil ikke gå i detaljer. For at have en grundlæggende.service -fil er det tilstrækkeligt at bruge følgende poster:

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

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

Hvad hver af disse muligheder gør, forklares i følgende link:

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

For at starte din applikation, skal du udstede følgende kommando:

sudo systemctl start application.service

Bemærk:.service -udvidelsen kan udelades.

Sådan stopper du applikationen:

sudo systemctl stop application.service

Hvis konfigurationsfilen er blevet ændret, og du gerne vil genindlæse indstillingerne:

sudo systemctl genindlæs application.service

For at genstarte applikationen:

sudo systemctl genstart application.service

Sådan aktiveres automatisk start ved opstart:

sudo systemctl aktivere application.service

Hvis dette er aktiveret, vil systemd procesmanager prøve at starte programmet på basis af de indstillinger, der blev leveret af systemfilen.

For at deaktivere det skal du bruge den samme kommando som ovenfor, men med parameteren 'deaktiver'.

Hvis du placerer Genstart = altid i servicefilen, vil systemd overvåge processen, og hvis den ikke kan findes på proceslisten, vil den prøve at genstarte den automatisk.

Hvis du placerer

RestartSec = 30

efter genstartdirektivet vil det vente i 30 sekunder, før du prøver at genstarte processen. Dette kan være nyttigt, da et kontinuerligt genstartforsøg af en fejlende service/applikation kan føre til stor efterspørgsel på systemet (skrivefejllogs osv.)

Som du kan se, giver systemd allerede nogle midler til at overvåge processerne. I nogle tilfælde er dette imidlertid ikke tilstrækkeligt. Hvad hvis en proces ikke afslutter (den vil stadig være på proceslisten), men den holder op med at reagere. I dette tilfælde skal du muligvis udføre yderligere kontroller for at sikre, at en proces faktisk er i gang.

Det er her, scripts fra denne instruktive vil komme til nytte.

Trin 2: Konfiguration og brug af Service Checker Scripts

Hvis du har brug for mere kontrol over dine kørende processer/tjenester, vil disse scripts helt sikkert være nyttige.

Da koden er lidt stor, uploades den til github og kan findes under følgende lager:

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

'Hjertet' i hele pakken er

checkService.sh

Inden du bruger den, skal du udskifte hele stien til servicemappen. Dette kan findes i begyndelsen af scriptet.

Scriptet kan overvåge flere processer og udføre yderligere opgave, som beskrevet nedenfor:

Det går gennem hver fil fra undermappen /services med.serv eller.check udvidelser og kontrollerer, om der er en aktiv proces kaldet 'applikation'.

Hvis der ikke er en '.check' -fil til et program, er det kun application.serv -filen:

Hvis processen er aktiv, vil den betragte processen som værende aktiv

Hvis processen er inaktiv, genstarter den tjenesten ved at udstede følgende kommando:

systemctl genstart applikation

hvis.serv -filen er tom!

Hvis.serv -filen ikke er tom og har eksekverbare rettigheder, vil den prøve at køre den som et almindeligt BASH -script.

Dette er nyttigt, hvis der også skal gøres noget udover bare at genstarte tjenesten.

For eksempel i spamd.serv -filen, fra repoen ovenfor, hvis spamd -tjenesten er død, skal spamassassin -tjenesten genstartes i stedet, hvilket også genstarter spamd. Genstart af bare spamd ville ikke være tilstrækkeligt.

Man kan redigere indholdet i en sådan serv -fil i henhold til behovene.

Et andet eksempel er pcscd.serv -filen. I dette tilfælde blev flere andre processer også genstartet/dræbt.

Hvis der er en tjekfil, efter at have kontrolleret, om processen kører, vil den også køre denne scriptfil for at udføre yderligere kontroller.

For eksempel for oscam -tjenesten har vi oprettet en tjekfil, der forsøger at oprette forbindelse til dens webgrænseflade for at se, om den lykkes. Hvis ikke, så på trods af at processen er aktiv, reagerer tjenesten ikke og skal genstartes. Genstart af tjenesten skal udføres/kaldes af selve.check -filen.

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

Dette er en lille server, der leverer video/lydindhold til DLNA -klienter og sender sig selv på netværket. Nogle gange hænger tjenesten, og den kan ikke længere opdages, men processen vil stadig være aktiv. For at kontrollere, om tjenesten er opdagelig, blev CLI-værktøjet kaldet gssdp-discover brugt. Hele koden, der kontrollerer DLNA -serveren, blev placeret i et mediatomb.check script.

Dette er blot nogle få eksempler på, hvordan du kan bruge.serv- og.check -filerne.

For at overvåge en ny tjeneste skal du oprette en.serv og om nødvendigt også en tjekfil og skrive det tilhørende script inde i dem.

Hvis det kun er tilstrækkelig kontrol af tilstedeværelsen af processen, er en tom.serv -fil tilstrækkelig. Hvis der skal udføres yderligere kontroller, skal der oprettes en.check -fil, og der skal skrives et lille script for at udføre jobbet.

Selvfølgelig skal.sh -scriptet køres med jævne mellemrum, derfor skal der også oprettes et cron -job til det:

#check kører tjenester hvert 5. minut */5 * * * * /var/bin/ServiceCheck/checkService.sh>/dev/null

Trin 3: Endelige tanker

Jeg håber, at du vil finde denne pakke nyttig, da den i høj grad kan overvåge Linux -processer og forhåbentlig vil minimere nedetiden for dine tjenester.

Upload gerne flere scripts til github, hvis du opretter nye. Bare lad mig vide, så tilføjer jeg dig som bidragyder.

Anbefalede: