Med ett enda bibliotek kan du övervaka en mängd systemmått och se till att allt fungerar smidigt.
De flesta organisationer är mycket beroende av sin IT-infrastruktur för att driva sin verksamhet. Oplanerade systemfel eller prestandaförsämring kan leda till störningar, ekonomiska förluster och skada på rykte.
Automatiska hälsokontroller av systemet är avgörande för att säkerställa att IT-infrastrukturen förblir stabil och pålitlig. Genom att övervaka kritiska mätvärden och omedelbart upptäcka avvikelser kan du minimera stilleståndstiden.
Definiera hälsokontroller
Det är viktigt att definiera vilka hälsokontroller du vill utföra på ditt system. Du bör fastställa tydliga kriterier för vad du ska övervaka och varför. Börja med att identifiera de primära målen för ditt system. Vilka funktioner eller tjänster tillhandahåller den?
Sätt sedan prestandariktmärken baserat på historiska data och se till att dina hälsokontroller bedömer den effektiva användningen av systemresurser. Definiera slutligen de trösklar som indikerar ett problem. Hur stor andel av resursanvändningen anser du vara hög eller låg? När ska systemet utlösa en varning?
Välja bibliotek och ställa in din miljö
För att automatisera systemövervakningsprocessen i Python behöver du följande bibliotek för att hjälpa dig att samla in systemmått och sedan schemalägga kontrollerna.
- psutil: Detta är ett plattformsoberoende bibliotek som tillhandahåller ett gränssnitt för att hämta information om systemanvändning (CPU, minne, diskar, nätverk, sensorer).
- schema: Det här biblioteket ger ett enkelt sätt att schemalägga uppgifter så att de körs med specifika intervall.
- tid: Ett inbyggt Python-bibliotek som du kommer att använda för tidsrelaterade operationer.
- skogsavverkning: Ett annat inbyggt bibliotek som du kommer att använda för att skapa loggar över systemets hälsokontroller.
Börja ställa in saker innan skapa en ny virtuell Python-miljö. Detta kommer att förhindra eventuella konflikter i versionsbiblioteket. Kör sedan följande terminalkommando till installera de nödvändiga biblioteken med Pip:
pip install psutil schedule
När biblioteken är installerade på ditt system är din miljö redo.
Den fullständiga källkoden finns tillgänglig i en GitHub-förråd.
Importera de obligatoriska biblioteken
Skapa ett nytt skript, monitoring.py, och börja det med att importera de nödvändiga biblioteken:
import psutil
import schedule
import time
import logging
Genom att importera biblioteken kan du använda funktionaliteten de erbjuder i din kod.
Loggning och rapportering
Du behöver ett sätt att logga resultaten av dina hälsokontroller. Loggning fungerar som ett viktigt verktyg för att fånga och bevara ett historiskt register över händelser och felsökningsproblem i din kod. Det spelar också en avgörande roll i prestationsanalys.
Använd det inbyggda loggningsbiblioteket för att skapa dina loggar för det här projektet. Du kan spara loggmeddelandena till en fil med namnet system_monitor.log.
# Function to log messages
deflog_message(message):
# Configure logging
logging.basicConfig(filename='system_monitor.log', level=logging.INFO,
format='%(asctime)s - %(message)s')
logging.info(message)
För rapportering, skriv ut ett varningsmeddelande på konsolen för att fungera som omedelbar avisering om eventuella problem som kräver uppmärksamhet.
# Function to print alerts to the console
defprint_alert(message):
print(f"ALERT: {message}")
Hälsokontrollfunktionerna kommer att använda dessa funktioner för att logga och rapportera sina relevanta resultat.
Skapa hälsokontrollfunktioner
För varje hälsokontroll, definiera en funktion som kapslar in ett specifikt test som utvärderar en kritisk aspekt av din infrastruktur.
Övervakning av CPU-användning
Börja med att definiera en funktion som övervakar CPU-användning. Detta kommer att fungera som en kritisk indikator på ett systems övergripande prestanda och resursutnyttjande. Överdriven CPU-användning leder till att systemet går långsammare, inte svarar och till och med kraschar, vilket allvarligt stör viktiga tjänster.
Genom att regelbundet kontrollera CPU-användningen och ställa in lämpliga trösklar kan systemadministratörer identifiera prestandaflaskhalsar, resurskrävande processer eller potentiella maskinvaruproblem.
# Health check functions
defcheck_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)
Funktionen kontrollerar den aktuella CPU-användningen av systemet. Om CPU-användningen överskrider tröskeln i procent loggar den ett meddelande som indikerar hög CPU-användning och skriver ut ett varningsmeddelande.
Övervakning av minnesanvändning
Definiera en annan funktion som övervakar minnesanvändningen. Genom att regelbundet spåra minnesanvändning kan du upptäcka minnesläckor, resurskrävande processer och potentiella flaskhalsar. Denna metod förhindrar systemavbrott, krascher och avbrott.
defcheck_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)
I likhet med CPU-användningskontrollen ställer du in en tröskel för hög minnesanvändning. Om minnesanvändningen överstiger tröskeln loggas den och skriver ut en varning.
Diskutrymmesövervakning
Definiera en funktion som övervakar diskutrymmet. Genom att kontinuerligt övervaka tillgången på diskutrymme kan du åtgärda potentiella problem som härrör från resursutarmning. Att ta slut på diskutrymme kan resultera i systemkrascher, datakorruption och tjänstavbrott. Diskutrymmeskontroller hjälper till att säkerställa att det finns tillräcklig lagringskapacitet.
defcheck_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 undersöker diskutrymmesförbrukningen för en angiven sökväg. Standardsökvägen är rotkatalogen /. Om diskutrymme sjunker under tröskeln loggas den och skriver ut en varning.
Nätverkstrafikövervakning
Definiera en sista funktion som kommer att övervaka ditt systems dataflöde. Det kommer att hjälpa till att tidigt upptäcka oväntade toppar i nätverkstrafik, vilket kan tyda på säkerhetsintrång eller infrastrukturproblem.
defcheck_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)
Funktionen övervakar nätverkstrafik genom att summera byte som skickas och tas emot. Tröskeln är i byte. Om nätverkstrafiken överskrider tröskeln loggas den och skriver ut en varning.
Implementering av övervakningslogik
Nu när du har hälsokontrollfunktionerna, ring helt enkelt var och en i tur och ordning från en kontrollfunktion. Du kan skriva ut utdata och logga ett meddelande varje gång denna övergripande kontroll körs:
# Function to run health checks
defrun_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.")
Den här funktionen kör alla hälsokontroller och ger en enhetlig bild av ditt systems hälsostatus.
Schemalägga automatiska kontroller och köra programmet
För att automatisera övervakningen med specifika intervall använder du schemabiblioteket. Du kan justera intervallet efter behov.
# Schedule health checks to run every minute
schedule.every(1).minutes.do(run_health_checks)
Kör nu systemövervakningsprocessen i en kontinuerlig slinga.
# Main loop to run scheduled tasks
whileTrue:
schedule.run_pending()
time.sleep(1)
Denna loop letar kontinuerligt efter schemalagda uppgifter och utför dem när det är dags. När du kör programmet är resultatet som följer:
Programmet registrerar övervakningsloggarna på system_monitor.log fil och visar en varning på terminalen.
Avancera systemövervakningsprogrammet
Dessa övervakningskontroller är inte de enda som psutil stöder. Du kan lägga till fler övervakningsfunktioner, med ett liknande tillvägagångssätt, för att passa dina behov.
Du kan också förbättra rapporteringsfunktionen för att använda e-post istället för att mata ut ett enkelt meddelande på konsolen.