Innehållsförteckning:

Service Monitor Script för Linux -servrar: 4 steg
Service Monitor Script för Linux -servrar: 4 steg

Video: Service Monitor Script för Linux -servrar: 4 steg

Video: Service Monitor Script för Linux -servrar: 4 steg
Video: 60 Linux Commands you NEED to know (in 10 minutes) 2024, November
Anonim
Service Monitor Script för Linux -servrar
Service Monitor Script för Linux -servrar

Att ha ett stabilt system som alltid körs, även om du använder Linux, kan vara en svår uppgift.

På grund av komplexiteten i moderna mjukvarupaket och dålig kodning kan oundvikligen vissa processer krascha då och då. Detta kan vara en dålig sak om du kör en server och vissa människor förlitar sig på dessa tjänster.

Steg 1: Använda metoder från Systemd

Som du kanske redan vet använder de flesta moderna Linux -operativsystem systemd.

Om du inte är bekant med systemd är detta enligt wikipedia:

"… ett init -system som används i Linux -distributioner för att starta upp användarutrymmet och hantera alla processer därefter, istället för UNIX System V eller Berkeley Software Distribution (BSD) init -system. …"

Många argumenterar fortfarande varför det var nödvändigt att ersätta det gamla gamla init -systemet med detta mer komplicerade processhanteringssystem, men på följande länk kan man hitta en bra förklaring:

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

Den viktigaste förbättringen skulle vara att det kan ta upp systemet snabbare än init, på grund av samtidig och parallell bearbetning vid start istället för den sekventiella metoden för init

Utan att gå in i djupet av systemd måste du skapa en servicefil för att lägga till en process till systemd. Syntaxen för en sådan fil kan sträcka sig från mycket enkel till fullständigt komplicerad, och vi kommer inte att gå in på detaljer. För att ha en grundläggande.service -fil är det tillräckligt att använda följande poster:

[Enhet] Beskrivning = Beskrivning 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 [Installera] WantedBy = multi-user.target

Placera dessa i application.service -filen i/lib/systemd/systemmappen.

Vad var och en av dessa alternativ gör förklaras i följande länk:

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

Om du vill starta din ansökan, utfärdar du följande kommando:

sudo systemctl start application.service

Obs! Tillägget.service kan utelämnas.

Så här stoppar du programmet:

sudo systemctl stoppa application.service

Om konfigurationsfilen har ändrats och du vill ladda om inställningarna:

sudo systemctl ladda om application.service

Så här startar du om programmet:

sudo systemctl starta om application.service

Så här aktiverar du automatisk start vid start:

sudo systemctl aktivera application.service

Om detta är aktiverat kommer systemd processhanteraren att försöka starta programmet baserat på inställningarna som gavs av systemfilen.

För att inaktivera det, använd samma kommando som ovan, men med parametern 'inaktivera'.

Om du placerar Restart = alltid i servicefilen, kommer systemd att övervaka processen och om den inte kan hittas i processlistan försöker den starta om den automatiskt.

Om du placerar

RestartSec = 30

efter omstartdirektivet väntar det i 30 sekunder innan processen försöker starta om. Detta kan vara användbart, eftersom ett kontinuerligt omstartförsök av en misslyckad tjänst/applikation kan leda till stor efterfrågan på systemet (skrivfelloggar osv)

Som du kan se tillhandahåller systemd redan några sätt att övervaka processerna. I vissa fall kan detta dock inte vara tillräckligt. Vad händer om en process inte avslutas (den kommer fortfarande att finnas i processlistan), men den slutar svara. I det här fallet kan du behöva ytterligare kontroller för att säkerställa att en process verkligen är igång.

Det är här manus från denna instruerbara kommer till nytta.

Steg 2: Konfigurera och använda Service Checker Scripts

Om du behöver mer kontroll över dina processer/tjänster som körs kommer dessa skript att vara till hjälp, helt klart.

Eftersom koden är något stor, laddas den upp till github och kan hittas under följande förråd:

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

"Hjärtat" i hela paketet är

checkService.sh

Innan du använder den måste du ersätta hela sökvägen till servicemappen. Detta finns i början av manuset.

Skriptet kan övervaka flera processer och utföra ytterligare uppgifter, enligt beskrivningen nedan:

Den går igenom varje fil från undermappen /services som har.serv eller.check tillägg och kontrollerar om det finns en aktiv process som kallas 'applikation'.

Om det inte finns någon ".check" -fil för ett program, bara filen application.serv:

Om processen är aktiv kommer den att betrakta processen som aktiv

Om processen är inaktiv startar den om tjänsten genom att utfärda följande kommando:

systemctl starta om programmet

om.serv -filen är tom!

Om.serv -filen inte är tom och har körbara rättigheter försöker den köra den som ett vanligt BASH -skript.

Detta är användbart om något måste göras förutom att bara starta om tjänsten.

Till exempel, i spamd.serv -filen, från repo ovan, om spamd -tjänsten är död, måste spamassassin -tjänsten startas om istället, vilket också startar om spamd. Att bara starta om spamd skulle inte vara tillräckligt.

Man kan redigera innehållet i en sådan servfil enligt behoven.

Ett annat exempel är filen pcscd.serv. I detta fall startades/dödades också flera andra processer.

Om det finns en kontrollfil, efter att ha kontrollerat om processen körs, kommer den också att köra denna skriptfil för att utföra ytterligare kontroller.

Till exempel för oscam -tjänsten har vi skapat en kontrollfil som försöker ansluta till dess webbgränssnitt för att se om det lyckas. Om inte, trots att processen är aktiv, svarar tjänsten inte och måste startas om. Omstarten av tjänsten måste utföras/anropas av själva.check -filen.

Ett annat exempel skulle vara DLNA -tjänsten mediatomb.

Detta är en liten server som tillhandahåller video/ljudinnehåll till DLNA -klienter och sänder sig själv i nätverket. Ibland hänger tjänsten och den kan inte upptäckas längre, men processen kommer fortfarande att vara aktiv. För att kontrollera om tjänsten kan upptäckas användes CLI-verktyget gssdp-discover. Hela koden som kontrollerar DLNA -servern placerades i ett mediatomb.check -skript.

Detta är bara några exempel på hur du kan använda.serv- och.check -filerna.

För att övervaka en ny tjänst måste du skapa en.serv och, om det behövs också en kontrollfil, och skriva motsvarande skript inuti dem.

Om det bara är tillräckligt med kontroll av processens närvaro, räcker det med en tom.serv -fil. Om ytterligare kontroller måste utföras måste en.check -fil skapas och ett litet skript måste skrivas för att göra jobbet.

Självklart måste.sh -skriptet köras regelbundet, därför måste ett cron -jobb också skapas för det:

#check kör tjänster var 5: e minut */5 * * * * /var/bin/ServiceCheck/checkService.sh>/dev/null

Steg 3: Sista tankarna

Jag hoppas att du kommer att hitta det här paketet användbart eftersom det i hög grad kan övervaka Linux -processer och förhoppningsvis kommer att minimera stilleståndstiden för dina tjänster.

Ladda upp ytterligare skript till github om du skapar nya. Låt mig bara veta så lägger jag till dig som bidragsgivare.

Rekommenderad: