Med ét enkelt bibliotek kan du overvåge et væld af systemmålinger og sikre, at alt kører problemfrit.

De fleste organisationer er stærkt afhængige af deres it-infrastruktur for at drive deres drift. Uplanlagte systemfejl eller ydeevneforringelse kan føre til forstyrrelser, økonomiske tab og skade på omdømme.

Automatiserede systemsundhedstjek er afgørende for at sikre, at it-infrastrukturen forbliver stabil og pålidelig. Ved at overvåge kritiske målinger og straks opdage uregelmæssigheder kan du minimere nedetiden.

Definition af sundhedstjek

Det er vigtigt at definere, hvilke sundhedstjek du vil udføre på dit system. Du bør opstille klare kriterier for, hvad du vil overvåge og hvorfor. Begynd med at identificere de primære mål for dit system. Hvilke funktioner eller tjenester tilbyder det?

Indstil derefter ydeevnebenchmarks baseret på historiske data, og sørg for, at dine sundhedstjek vurderer den effektive brug af systemressourcer. Til sidst skal du definere de tærskler, der indikerer et problem. Hvilken procentdel af ressourceforbruget anser du for høj eller lav? På hvilket tidspunkt skal systemet udløse en advarsel?

instagram viewer

Valg af biblioteker og opsætning af dit miljø

For at automatisere systemovervågningsprocessen i Python skal du bruge følgende biblioteker til at hjælpe dig med at indsamle systemmålinger og derefter planlægge kontrollen.

  • psutil: Dette er et bibliotek på tværs af platforme, der giver en grænseflade til at hente information om systemudnyttelse (CPU, hukommelse, diske, netværk, sensorer).
  • tidsplan: Dette bibliotek giver en enkel måde at planlægge opgaver til at køre med bestemte intervaller.
  • tid: Et Python indbygget bibliotek, som du vil bruge til tidsrelaterede operationer.
  • logning: Endnu et indbygget bibliotek, som du vil bruge til at oprette logfiler over systemets sundhedstjek.

Begynd at sætte tingene op kl skabe et nyt virtuelt Python-miljø. Dette vil forhindre potentielle versionsbibliotekskonflikter. Kør derefter følgende terminalkommando til installer de nødvendige biblioteker med Pip:

pip install psutil schedule

Når bibliotekerne er installeret på dit system, er dit miljø klar.

Den fulde kildekode er tilgængelig i en GitHub-depot.

Import af de nødvendige biblioteker

Opret et nyt script, monitoring.py, og start det med at importere de nødvendige biblioteker:

import psutil
import schedule
import time
import logging

Import af bibliotekerne giver dig mulighed for at bruge den funktionalitet, de tilbyder i din kode.

Logning og rapportering

Du har brug for en måde at logge resultaterne af dine sundhedstjek på. Logning fungerer som et vigtigt værktøj til at fange og bevare en historisk optegnelse over begivenheder og fejlretningsproblemer i din kode. Det spiller også en afgørende rolle i præstationsanalyse.

Brug det indbyggede logbibliotek til at oprette dine logfiler til dette projekt. Du kan gemme logmeddelelserne i en fil med navnet 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)

Til rapportering skal du udskrive en advarselsmeddelelse på konsollen for at tjene som øjeblikkelig meddelelse om eventuelle problemer, der kræver opmærksomhed.

# Function to print alerts to the console
defprint_alert(message):
print(f"ALERT: {message}")

Sundhedstjekfunktionerne vil bruge disse funktioner til at logge og rapportere deres relevante resultater.

Oprettelse af sundhedstjekfunktioner

For hvert sundhedstjek skal du definere en funktion, der vil indkapsle en specifik test, der evaluerer et kritisk aspekt af din infrastruktur.

Overvågning af CPU-forbrug

Start med at definere en funktion, der overvåger CPU-brug. Dette vil tjene som en kritisk indikator for et systems overordnede ydeevne og ressourceudnyttelse. Overdreven CPU-brug fører til systemnedgange, manglende reaktion og endda nedbrud, hvilket alvorligt forstyrrer vigtige tjenester.

Ved regelmæssigt at kontrollere CPU-bruget og indstille passende tærskler kan systemadministratorer identificere ydeevneflaskehalse, ressourcekrævende processer eller potentielle hardwareproblemer.

# 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 kontrollerer det aktuelle CPU-brug af systemet. Hvis CPU-forbruget overstiger tærsklen i procent, logger den en meddelelse, der indikerer højt CPU-forbrug, og udskriver en advarselsmeddelelse.

Overvågning af hukommelsesforbrug

Definer en anden funktion, der vil overvåge hukommelsesforbruget. Ved regelmæssigt at spore hukommelsesudnyttelse kan du opdage hukommelseslækager, ressourcekrævende processer og potentielle flaskehalse. Denne metode forhindrer systemafbrydelser, nedbrud og udfald.

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 lighed med CPU-brugskontrollen indstiller du en tærskel for høj hukommelsesbrug. Hvis hukommelsesforbruget overstiger tærsklen, logges og udskrives en advarsel.

Diskpladsovervågning

Definer en funktion, der overvåger diskpladsen. Ved løbende at overvåge tilgængeligheden af ​​diskplads kan du løse potentielle problemer, der stammer fra ressourceudtømning. Løb tør for diskplads kan resultere i systemnedbrud, datakorruption og serviceafbrydelser. Diskpladstjek hjælper med at sikre, at der er tilstrækkelig lagerkapacitet.

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)

Denne funktion undersøger diskpladsforbruget for en specificeret sti. Standardstien er rodmappen /. Hvis diskpladsen falder under tærsklen, logger den og udskriver en advarsel.

Netværkstrafikovervågning

Definer en endelig funktion, der overvåger dit systems dataflow. Det vil hjælpe med tidlig detektering af uventede stigninger i netværkstrafikken, hvilket kan være tegn på sikkerhedsbrud eller infrastrukturproblemer.

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 overvåger netværkstrafikken ved at summere de sendte og modtagne bytes. Tærsklen er i bytes. Hvis netværkstrafikken overskrider tærsklen, logger den og udskriver en advarsel.

Implementering af overvågningslogik

Nu hvor du har sundhedstjekfunktionerne, skal du blot kalde hver enkelt fra en controllerfunktion. Du kan udskrive output og logge en meddelelse hver gang denne overordnede kontrol kører:

# 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.")

Denne funktion kører alle sundhedstjek og giver et samlet overblik over dit systems sundhedsstatus.

Planlægning af automatiske kontroller og kørsel af programmet

For at automatisere overvågningen med bestemte intervaller, skal du bruge tidsplanbiblioteket. Du kan justere intervallet efter behov.

# Schedule health checks to run every minute 
schedule.every(1).minutes.do(run_health_checks)

Kør nu systemovervågningsprocessen i en kontinuerlig sløjfe.

# Main loop to run scheduled tasks
whileTrue:
schedule.run_pending()
time.sleep(1)

Denne sløjfe kontrollerer løbende for planlagte opgaver og udfører dem, når deres tid kommer. Når du kører programmet, er output som følger:

Programmet registrerer overvågningsloggene på system_monitor.log fil og viser en advarsel på terminalen.

Fremme af systemovervågningsprogrammet

Disse overvågningstjek er ikke de eneste, som psutil understøtter. Du kan tilføje flere overvågningsfunktioner ved at bruge en lignende tilgang, så de passer til dine behov.

Du kan også forbedre rapporteringsfunktionen til at bruge e-mail i stedet for at udsende en simpel besked på konsollen.