Hur man automatiserar systemövervakning med Python
De flesta organisationer är starkt beroende av sin IT-infrastruktur för att kunna bedriva sin verksamhet. Oplanerade systemfel eller försämrad prestanda kan leda till avbrott, ekonomiska förluster och skadat rykte.
Ett automatiserat system för att genomföra regelbundna hälsokontroller är avgörande för att säkerställa stabilitet och tillförlitlighet i en organisations IT-infrastruktur. Genom kontinuerlig spårning av viktiga indikatorer och snabb identifiering av eventuella avvikelser från normala mönster, kan risken för längre perioder av driftstörningar minskas avsevärt.
Definiera hälsokontroller
För att effektivt kunna utvärdera ett visst systems välbefinnande är det viktigt att fastställa vilka hälsokontroller som anses nödvändiga. Detta innebär att man måste fastställa tydliga riktlinjer för vilka parametrar som ska övervakas noggrant, och även ange skälen till övervakningen. För att påbörja denna process måste man först identifiera de övergripande målen för systemet i fråga. Vilka funktioner eller erbjudanden levererar det?
För att kunna fastställa effektiva prestandamått för er IT-infrastruktur är det viktigt att fastställa baslinjer genom att analysera tidigare trender i systemutnyttjandet. På så sätt kan ni fastställa lämpliga nivåer för resursförbrukning och identifiera potentiella flaskhalsar. Genom att fastställa specifika kriterier för när varningar ska utlösas kan administratörer dessutom reagera snabbt på problem innan de eskalerar. Gränsvärdena för när resursanvändningen anses vara hög eller låg kan variera beroende på faktorer som arbetsbelastningsmönster och tillgänglig kapacitet. Det är viktigt att noga överväga dessa parametrar och kommunicera dem tydligt mellan olika team för att upprätthålla optimal systemprestanda.
Välja bibliotek och konfigurera din miljö
För att implementera en automatiserad systemövervakningslösning med Python, måste en uppsättning bibliotek användas för att samla in systemets prestandadata och upprätta regelbundna kontrollpunkter. Dessa bibliotek möjliggör effektivt utförande av uppgifter samtidigt som tillförlitlig prestandautvärdering säkerställs.
Psutil är ett mångsidigt bibliotek som gör det möjligt för användare att få data som rör systemprestanda på olika plattformar, inklusive CPU-användning, minnesallokering, diskaktivitet, nätverksbandbredd och sensoravläsningar.
Det här biblioteket erbjuder ett okomplicerat sätt att ordna så att åtaganden utförs vid förutbestämda tidsperioder.
Pythons standardbibliotek har en inbyggd modul som heter “time” som tillhandahåller funktioner för hantering och manipulering av tidsdata, t.ex. hämtning av aktuellt datum och tid, beräkning av förflutit intervall mellan två tidpunkter, inställning av systemklockor och mycket mer. Denna modul är en viktig resurs för applikationer som kräver tidtagningsfunktioner inom sitt programramverk.
Pythons loggmodul fungerar som ett inbyggt verktyg för att generera och underhålla loggposter, så att utvecklare kan spåra och övervaka prestanda och status för sina system genom organiserad registerföring.
Börja med att skapa en ny virtuell Python-miljö som motverkar eventuella skillnader i biblioteksversioner. Utför därefter den efterföljande terminalinstruktionen med hjälp av ‘Pip’ för att installera de nödvändiga biblioteken.
pip install psutil schedule
När de nödvändiga biblioteken har installerats och konfigurerats i din datormiljö kan du fortsätta att använda dem för att uppnå avsedd funktionalitet.
Den fullständiga källkoden finns tillgänglig via aGitHub repository, som ger enkel åtkomst till projektets filer och resurser för vidareutveckling eller modifiering.
Importera nödvändiga bibliotek
Påbörja utvecklingen av ett innovativt Python-skript med titeln “monitoring.py” som börjar med import av oumbärliga moduler och ramverk som krävs för dess utförande.
import psutil
import schedule
import time
import logging
Genom att importera dessa bibliotek kan man använda deras respektive funktioner i sin kodbas.
Loggning och rapportering
För att effektivt kunna spåra resultaten av dina hälsoundersökningar är det viktigt att upprätta ett system för loggning av sådan information. Detta gör det inte bara lättare att dokumentera och bevara tidigare händelser, utan också att identifiera och lösa eventuella problem som kan uppstå inom koden. Dessutom kan noggrann dokumentation genom loggning bidra avsevärt till utvärderingen av den totala effektiviteten.
Använd den inbyggda loggningsfunktionen för att generera loggar för detta arbete. Loggposterna kan sparas i en fil med namnet “system\_monitor.log”.
# Function to log messages
def log_message(message):
# Configure logging
logging.basicConfig(filename='system_monitor.log', level=logging.INFO,
format='%(asctime)s - %(message)s')
logging.info(message)
För att underlätta snabb kommunikation om eventuella problem rekommenderas att en visuell indikation i form av ett varningsmeddelande visas på systemets konsol för omedelbar uppmärksamhet och övervägande.
# Function to print alerts to the console
def print_alert(message):
print(f"ALERT: {message}")
Funktionerna för hälsokontroll skall använda dessa funktioner för att logga och sprida relevant information.
Skapa funktioner för hälsokontroll
För att kunna genomföra effektiva hälsokontroller av er IT-infrastruktur rekommenderas att ni skapar separata funktioner i ert övervakningssystem som fokuserar på att undersöka viktiga aspekter av nätverkets prestanda och stabilitet. Genom att isolera dessa tester i särskilda funktioner kan du mer effektivt spåra välbefinnandet hos olika komponenter och upptäcka potentiella problem innan de eskalerar till större problem.
Övervakning av CPU-användning
Implementeringen av en effektiv övervakningsmekanism för CPU-användning är grundläggande för att mäta den operativa effektiviteten och resursallokeringen i ett givet system. Om man upptäcker förhöjda nivåer av CPU-användning kan man identifiera potentiella flaskhalsar eller problem som kan leda till försämrad prestanda, långsam respons och eventuellt systemfel, vilket kan försämra viktiga tjänster som användarna förlitar sig på.
Genom konsekvent övervakning av CPU-användningen och fastställande av lämpliga tröskelnivåer kan systemadministratörer lokalisera prestandahinder, resurskrävande procedurer eller misstänkta hårdvaruproblem genom att identifiera avvikelser från förväntade beteendemönster.
# Health check functions
def check_cpu_usage(threshold=50):
cpu_usage = psutil.cpu_percent(interval=1)
if cpu_usage > threshold:
message = f"High CPU usage detected: {cpu_usage}%"
log_message(message)
print_alert(message)
Den givna funktionen övervakar det aktuella utnyttjandet av den centrala processorenheten (CPU) i systemet. Om CPU-användningen överskrider ett förutbestämt tröskelvärde uttryckt som ett procentvärde loggar funktionen ett meddelande om förhöjd CPU-användning och visar ett varningsmeddelande på skärmen.
Övervakning av minnesanvändning
Föreliggande uppfinning tillhandahåller vidare en mekanism för övervakning av minnesanvändning genom implementering av en ytterligare funktion. Regelbunden spårning av minnesanvändningen gör det möjligt att upptäcka minnesläckor, identifiera resursintensiva processer och exponera potentiella flaskhalsar. Genom att implementera denna metod är det möjligt att förhindra systemnedgångar, krascher och avbrott till följd av överdriven minnesförbrukning eller ineffektiv användning av resurser.
def check_memory_usage(threshold=80):
memory_usage = psutil.virtual_memory().percent
if memory_usage > threshold:
message = f"High memory usage detected: {memory_usage}%"
log_message(message)
print_alert(message)
På samma sätt som vid övervakning av CPU-användningen fastställs ett förutbestämt tröskelvärde för förhöjd minnesförbrukning. När ackumuleringen av minne når eller överskrider detta riktmärke genereras en registrering av händelsen och ett meddelande skickas för granskning.
Övervakning av diskutrymme
En verktygsfunktion bör implementeras för att konsekvent utvärdera det återstående diskutrymmet.Genom kontinuerlig övervakning av tillgängligt diskutrymme kan eventuella komplikationer till följd av otillräckliga resurser minskas. Otillräckligt diskutrymme kan leda till systemfel, förvanskad information och avbrutna tjänster. Regelbundna utvärderingar av diskutrymmet säkerställer att lagringskapaciteten är tillräcklig.
def check_disk_space(path='/', threshold=75):
disk_usage = psutil.disk_usage(path).percent
if disk_usage > threshold:
message = f"Low disk space detected: {disk_usage}%"
log_message(message)
print_alert(message)
Den här funktionen granskar den tilldelade lagringskapaciteten som är associerad med en angiven filväg. Som standard omfattar den plats som utvärderas den primära katalogen som representeras av den symboliska representationen “/”. Om mängden tillgängligt utrymme inom detta område minskar till en förutbestämd nivå, genererar systemet både en loggpost och avger ett hörbart varningsmeddelande.
Övervakning av nätverkstrafik
Införliva en avslutande funktion för att övervaka ditt systems dataström i syfte att identifiera potentiella avvikelser i nätverksaktiviteten på ett tidigt stadium. Sådana avvikelser kan tyda på säkerhetsintrång eller tekniska avvikelser och kan underlätta snabba korrigerande åtgärder.
def check_network_traffic(threshold=100 * 1024 * 1024):
network_traffic = psutil.net_io_counters().bytes_recv \\+\
psutil.net_io_counters().bytes_sent
if network_traffic > threshold:
message = f"High network traffic detected: {network_traffic:.2f} MB"
log_message(message)
print_alert(message)
Den ovan nämnda funktionen håller reda på nätverksaktiviteten genom att beräkna den sammanlagda mängden bytes som överförts och mottagits. Detta mått uttrycks i termer av bytemätningar. Om mängden nätverkstrafik överskrider denna fördefinierade gräns genereras en loggpost och ett meddelande visas för att indikera detta.
Implementering av övervakningslogik
Att införliva dessa hälsokontrollfunktioner i en utsedd controllerfunktion är ett effektivt tillvägagångssätt. Genom att utföra dem sekventiellt möjliggörs utskrift av relevant information och loggning av meddelanden under varje iteration av den omfattande bedömningsprocessen.
# Function to run health checks
def run_health_checks():
print("Monitoring the system...")
log_message("Running system health checks...")
check_cpu_usage()
check_memory_usage()
check_disk_space()
check_network_traffic()
log_message("Health checks completed.")
Denna särskilda operation utför en samlad bedömning av det övergripande välbefinnandet i din infrastruktur genom att utföra flera hälsokontroller på ett sammanhängande och omfattande sätt, vilket ger en konsoliderad översikt över det aktuella tillståndet för ditt systems vitalitet.
Schemalägga automatiska kontroller och köra programmet
Använd biblioteket Schema för att underlätta automatisk övervakning vid förutbestämda tidpunkter. Detta ger flexibilitet att ställa in uppdateringsfrekvensen efter behov.
# Schedule health checks to run every minute
schedule.every(1).minutes.do(run_health_checks)
För att kontinuerligt kunna övervaka datorns prestanda är det nödvändigt att utföra systemövervakningsprocessen på en kontinuerlig basis.
# Main loop to run scheduled tasks
while True:
schedule.run_pending()
time.sleep(1)
Den ovan nämnda loopen fortsätter att undersöka schemalagda uppgifter och utför dem som ska utföras vid de förutbestämda intervallen.När programvaran körs visas följande resultat på displayen:
Programvaran sparar en logg över övervakningsaktiviteterna i filen system\_monitor.log, samtidigt som den genererar en varning som visas i kommandoradsgränssnittet.
Utveckla systemövervakningsprogrammet
Psutil ger ytterligare övervakningsfunktioner utöver de som anges här, vilket möjliggör anpassning baserat på specifika behov och preferenser.
Ett möjligt sätt att förbättra rapporteringsfunktionens funktionalitet är att införliva ett e-postmeddelandesystem, istället för att bara visa meddelanden på kommandoradsgränssnittet. Detta skulle göra det möjligt för användare att få realtidsuppdateringar och varningar om deras webbplats prestanda direkt i sina inkorgar, vilket gör det lättare för dem att övervaka och ta itu med eventuella problem som kan uppstå.