Problemen met het laden van Linux-servers diagnosticeren met een eenvoudig script

Als je al langere tijd beheerder bent, heb je zeker situaties ontdekt waarin een server piekt in CPU-gebruik of geheugengebruik en/of belastingsniveaus. 'top' rennen zal je ook niet altijd het antwoord geven. Dus hoe vind je die stiekeme processen die je systeembronnen opeten om ze te kunnen doden?

Het volgende script kan misschien helpen. Het is geschreven voor een webserver, dus sommige delen ervan zijn specifiek op zoek naar httpd-processen en sommige delen die met MySQL te maken hebben. Afhankelijk van uw serverimplementatie, kunt u deze secties becommentariëren/verwijderen en andere toevoegen. Het moet als uitgangspunt worden gebruikt.

Vereisten voor deze versie van het script is freeware die is uitgebracht onder de GNU General Public License genaamd mytop (beschikbaar op http://jeremy.zawodny.com/mysql/mytop/), wat een fantastisch hulpmiddel is om te controleren hoe MySQL presteert. Het wordt oud, maar werkt nog steeds geweldig voor onze doeleinden hier.
Bovendien gebruik ik mutt als de mailer - misschien wil je het script wijzigen om gewoon het in linux ingebouwde `mail`-hulpprogramma te gebruiken. Ik voer het elk uur via cron uit; aanpassen naar eigen inzicht. Oh - en dit script moet als root worden uitgevoerd, omdat het van sommige beschermde delen van de server leest.



Dus laten we beginnen, zullen we?

Stel eerst uw scriptvariabelen in:

|__+_|

Controleer vervolgens uw laadniveau om te zien of het script moet doorgaan:

|__+_|

# als het laadniveau hoger is dan u wilt, start u het scriptproces. Anders verlaat u 0

if [ $loadLevel -gt $levelToCheck ]; dan
echo '' > $tmpbestand
echo '****************************************' >>$tmpfile
echo 'Datum: $dt ' >>$tmpfile
echo 'Controleer systeembelasting en processen' >>$tmpfile
echo '****************************************' >>$tmpfile

En ga door met de controles en schrijf de resultaten naar het tijdelijke bestand. Voeg hier items toe of verwijder ze indien van toepassing op uw situatie:

|__+_|

# Toon huidig ​​laadniveau:
echo 'Laadniveau is: $loadLevel' >>$tmpfile
echo '************************************************** *' >>$tmpbestand

# Toon aantal httpd-processen die nu actief zijn (exclusief kinderen):
echo 'Aantal httpd-processen nu: $httpdProcesses' >>$tmpfile
echo '************************************************** *' >>$tmpbestand
echo '' >>$tmpbestand

# Toon proceslijst:
echo 'Processen worden nu uitgevoerd:' >>$tmpfile
ps f -ef >>$tmpbestand
echo '************************************************** *' >>$tmpbestand
echo '' >>$tmpbestand

# Toon huidige MySQL-info:
echo 'Resultaten van mijntop:' >>$tmpfile
/usr/bin/mytop -u $dbusr -p $dbpw -b -d $db >>$tmpbestand
echo '************************************************** *' >>$tmpbestand
echo '' >>$tmpbestand

Merk op dat we met het topcommando naar twee tijdelijke bestanden schrijven. Een daarvan is voor het veel kleinere bericht naar de mobiele telefoon. Als je de urgentie van gsm-waarschuwingen om drie uur 's nachts niet wilt, kun je dit verwijderen (en de tweede mailingroutine later in het script verwijderen).

|__+_|

Meer controles:

|__+_|

# Controleer schijfruimte
echo 'schijfruimte:' >>$tmpfile
/bin/df -k >>$tmpbestand
echo '************************************************** *' >>$tmpbestand
echo '' >>$tmpbestand

Schrijf vervolgens de inhoud van het tijdelijke bestand naar een meer permanent logbestand en e-mail de resultaten naar de juiste partijen. De tweede mailing zijn de uitgeklede resultaten die simpelweg bestaan ​​uit de standaard uit `top`:

|__+_|

# En e-mail resultaten naar sysadmin:
/usr/bin/mutt -s '$machine heeft een hoog laadniveau! - $dt' -a $mysqlLog -a $msgLog $mailstop<$tmpfile /usr/bin/mutt -s '$machine has a high load level! - $dt' $mailstop1>$logbestand

En dan wat schoonmaak en exit:

|__+_|

#
uitgang 0

Hopelijk helpt dit iemand die er is. Volledig geassembleerd script is:

|__+_|

# als het laadniveau hoger is dan u wilt, start u het scriptproces. Anders verlaat u 0

if [ $loadLevel -gt $levelToCheck ]; dan
echo '' > $tmpbestand
echo '****************************************' >>$tmpfile
echo 'Datum: $dt ' >>$tmpfile
echo 'Controleer systeembelasting en processen' >>$tmpfile
echo '****************************************' >>$tmpfile

# Haal meer variabelen uit het systeem:
httpdProcesses=`ps -def | grep httpd | grep -v grep | wc -l`

# Toon huidig ​​laadniveau:
echo 'Laadniveau is: $loadLevel' >>$tmpfile
echo '************************************************** *' >>$tmpbestand

# Toon aantal httpd-processen die nu actief zijn (exclusief kinderen):
echo 'Aantal httpd-processen nu: $httpdProcesses' >>$tmpfile
echo '************************************************** *' >>$tmpbestand
echo '' >>$tmpbestand

# Toon proceslijst:
echo 'Processen worden nu uitgevoerd:' >>$tmpfile
ps f -ef >>$tmpbestand
echo '************************************************** *' >>$tmpbestand
echo '' >>$tmpbestand

# Toon huidige MySQL-info:
echo 'Resultaten van mijntop:' >>$tmpfile
/usr/bin/mytop -u $dbusr -p $dbpw -b -d $db >>$tmpbestand
echo '************************************************** *' >>$tmpbestand
echo '' >>$tmpbestand

# Toon huidige top:
echo 'top toont nu:' >>$tmpfile
echo 'top toont nu:' >>$topfile
/usr/bin/top -b -n1 >>$tmpbestand
/usr/bin/top -b -n1 >>$topfile
echo '************************************************** *' >>$tmpbestand
echo '' >>$tmpbestand

# Toon huidige verbindingen:
echo 'netstat toont nu:' >>$tmpfile
/ bin / netstat -p >> $ tmpbestand
echo '************************************************** *' >>$tmpbestand
echo '' >>$tmpbestand

# Controleer schijfruimte
echo 'schijfruimte:' >>$tmpfile
/bin/df -k >>$tmpbestand
echo '************************************************** *' >>$tmpbestand
echo '' >>$tmpbestand

# Stuur resultaten naar logbestand:
/bin/cat $tmpbestand >>$logbestand

# En e-mail resultaten naar sysadmin:
/usr/bin/mutt -s '$machine heeft een hoog laadniveau! - $dt' -a $mysqlLog -a $msgLog $mailstop<$tmpfile /usr/bin/mutt -s '$machine has a high load level! - $dt' $mailstop1>$logbestand

# En verwijder vervolgens het tijdelijke bestand:
rm $tmpbestand
rm $topfile
zijn

#
uitgang 0

Meer verhalen

Week in Geek: The Mud-Slinging Warez Dealers Edition

Deze week hebben we geleerd hoe we een oude pc of laptop nieuw leven inblazen, Evernote toegankelijker maken met aangepaste Windows 7-integratie, moeilijk te onthouden kaartnummers beschikbaar en veilig houden met LastPass, VLC Media Player er geweldig laten uitzien met aangepaste skins, een achtergrond diavoorstelling in

Hoe geef je Facebook een roze thema in plaats van blauw?

Hoewel we niet begrijpen waarom iemand een roze versie van Facebook zou willen, zijn we er vrij zeker van dat iemand het ergens zo leuk zou vinden. Misschien iemand met een minder geeky overtuiging.

Futurama bewijst nieuwe wiskundige stelling om een ​​plotcrisis op te lossen

In de Futurama-aflevering van gisteravond, The Prisoner of Benda, kwamen ze terecht in een gebruikelijke crisis waarvoor de wetenschap nodig was om het probleem op te lossen - en in dit geval was het echt ... min of meer.

Evernote-bestanden importeren in MS OneNote 2010

Wilt u uw notities van Evernote naar MS OneNote verplaatsen? Er is geen directe manier om Evernote-bestanden in OneNote te importeren, maar hier zijn enkele trucs die best goed werken om uw notities naar uw favoriete applicatie te verplaatsen.

Waarom je je iOS-apparaat zou moeten jailbreaken?

Onlangs werd aangekondigd dat het legaal is om je telefoon/apparaten te hacken. Vandaag bekijken we waarom je je iOS-apparaat zou willen jailbreaken. Dit is een algemeen overzicht van enkele van de mogelijkheden en opties die beschikbaar zijn na een jailbreak.

Regelmatige financiële controle leidt tot minder overbesteding

In een zwakke economie is het noodzakelijk om geld te besparen, dus waakzaam zijn over het controleren van uw uitgaven en serviceverbruik kan helpen om te hoge uitgaven te beteugelen. Als u te lang wacht met het aanpassen van het bestedingspatroon en het beperken van het verbruik van diensten, kunnen uw rekeningen snel uit de hand lopen.

Bewaar eenvoudig een gespiegelde back-up van lokale bestanden op al uw netwerkcomputers

Als u meerdere computers van eindgebruikers in een netwerk hebt, is het belangrijk om er zeker van te zijn dat er een back-up wordt gemaakt van bestanden die lokaal op de respectieve computers zijn opgeslagen in het geval van een storing op de harde schijf. Het onderhouden van back-upprogramma's, configuraties en, mogelijk, ondersteuningskosten op elke machine kan erg lastig zijn, dus als:

Verzend of ontvang e-mails in Gmail volgens uw schema met Boomerang (en we hebben uitnodigingen)

Heb je ooit een e-mail op een ander tijdstip moeten verzenden of ontvangen en wilde je deze inplannen? Boomerang is een nieuwe bèta-add-on voor Google Chrome en Firefox waarmee je Gmail rond je tijd kunt plannen en we hebben 1.000 uitnodigingen!

Vrijdagpret: Souptoys Toybox

Vrijdag is weer voorbij en nu is het tijd voor jou om een ​​pauze te nemen en plezier te hebben. Deze week hebben we een set speelgoed en speelsets voor je desktop, verpakt in een mooi, eenvoudig te installeren pakket.

Een back-up maken van uw Windows Home Server-systeemstatus

Soms kan het systeem onstabiel worden wanneer u aanpassingen maakt aan WHS of bepaalde invoegtoepassingen installeert. Hier bekijken we hoe u een back-up kunt maken van de WHS-systeemstatus en/of het register, zodat u deze kunt herstellen als er iets misgaat.