Med ett enkelt bibliotek kan du overvåke en rekke systemmålinger og sørge for at alt fungerer problemfritt.

De fleste organisasjoner er avhengige av IT-infrastrukturen for å drive driften. Uplanlagte systemfeil eller ytelsesforringelse kan føre til forstyrrelser, økonomiske tap og skade på omdømme.

Automatiserte systemhelsesjekker er avgjørende for å sikre at IT-infrastrukturen forblir stabil og pålitelig. Ved å overvåke kritiske beregninger og umiddelbart oppdage uregelmessigheter, kan du minimere nedetiden.

Definere helsesjekker

Det er viktig å definere hvilke helsesjekker du vil utføre på systemet ditt. Du bør etablere klare kriterier for hva du vil overvåke og hvorfor. Begynn med å identifisere hovedmålene for systemet ditt. Hvilke funksjoner eller tjenester tilbyr den?

Sett deretter ytelsesreferanser basert på historiske data og sørg for at helsesjekkene dine vurderer effektiv bruk av systemressurser. Definer til slutt tersklene som indikerer et problem. Hvor stor prosentandel av ressursbruken anser du som høy eller lav? På hvilket tidspunkt skal systemet utløse et varsel?

Velge biblioteker og sette opp miljøet ditt

For å automatisere systemovervåkingsprosessen i Python, trenger du følgende biblioteker for å hjelpe deg med å samle systemberegninger og deretter planlegge kontrollene.

  • psutil: Dette er et bibliotek på tvers av plattformer som gir et grensesnitt for å hente informasjon om systembruk (CPU, minne, disker, nettverk, sensorer).
  • rute: Dette biblioteket gir en enkel måte å planlegge oppgaver for å kjøre med bestemte intervaller.
  • tid: Et Python innebygd bibliotek som du skal bruke for tidsrelaterte operasjoner.
  • hogst: Et annet innebygd bibliotek som du vil bruke for å lage logger over systemets helsesjekker.

Begynn å sette opp ting innen lage et nytt virtuelt Python-miljø. Dette vil forhindre potensielle konflikter i versjonsbiblioteket. Kjør deretter følgende terminalkommando til installer de nødvendige bibliotekene med Pip:

pip install psutil schedule

Når bibliotekene er installert på systemet ditt, er miljøet ditt klart.

Den fullstendige kildekoden er tilgjengelig i en GitHub-depot.

Importere de nødvendige bibliotekene

Lag et nytt skript, monitoring.py, og start den med å importere de nødvendige bibliotekene:

import psutil
import schedule
import time
import logging

Ved å importere bibliotekene kan du bruke funksjonaliteten de tilbyr i koden din.

Logging og rapportering

Du trenger en måte å logge resultatene av helsesjekkene dine på. Logging fungerer som et viktig verktøy for å fange og bevare en historisk oversikt over hendelser og feilsøkingsproblemer i koden din. Det spiller også en kritisk rolle i ytelsesanalyse.

Bruk det innebygde loggbiblioteket til å lage loggene dine for dette prosjektet. Du kan lagre loggmeldingene i en fil med navn 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)

For rapportering, skriv ut en varselmelding på konsollen for å fungere som umiddelbar varsling om eventuelle problemer som krever oppmerksomhet.

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

Helsesjekkfunksjonene vil bruke disse funksjonene til å logge og rapportere sine relevante funn.

Opprette helsesjekkfunksjoner

For hver helsesjekk, definer en funksjon som vil innkapsle en spesifikk test som evaluerer et kritisk aspekt ved infrastrukturen din.

Overvåking av CPU-bruk

Start med å definere en funksjon som skal overvåke CPU-bruk. Dette vil tjene som en kritisk indikator på et systems generelle ytelse og ressursutnyttelse. Overdreven CPU-bruk fører til nedgang i systemet, manglende respons og til og med krasjer, noe som alvorlig forstyrrer viktige tjenester.

Ved regelmessig å sjekke CPU-bruken og sette passende terskler, kan systemadministratorer identifisere ytelsesflaskehalser, ressurskrevende prosesser eller potensielle maskinvareproblemer.

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

Funksjonen kontrollerer gjeldende CPU-bruk av systemet. Hvis CPU-bruken overskrider terskelen i prosent, logger den en melding som indikerer høy CPU-bruk og skriver ut en varselmelding.

Overvåking av minnebruk

Definer en annen funksjon som vil overvåke minnebruken. Ved regelmessig å spore minneutnyttelse kan du oppdage minnelekkasjer, ressurskrevende prosesser og potensielle flaskehalser. Denne metoden forhindrer nedgang i systemet, krasjer og strømbrudd.

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-brukskontrollen setter du en terskel for høy minnebruk. Hvis minnebruken overstiger terskelen, logger den og skriver ut et varsel.

Diskplassovervåking

Definer en funksjon som vil overvåke diskplassen. Ved å kontinuerlig overvåke tilgjengeligheten av diskplass, kan du løse potensielle problemer som stammer fra ressursutarming. Å gå tom for diskplass kan føre til systemkrasj, datakorrupsjon og tjenesteavbrudd. Diskplasskontroller bidrar til å sikre at det er tilstrekkelig lagringskapasitet.

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 funksjonen undersøker diskplassbruken til en spesifisert bane. Standard banen er rotkatalogen /. Hvis diskplass faller under terskelen, logger den og skriver ut et varsel.

Nettverkstrafikkovervåking

Definer en siste funksjon som vil overvåke systemets dataflyt. Det vil hjelpe til med tidlig oppdagelse av uventede topper i nettverkstrafikk, noe som kan tyde på sikkerhetsbrudd 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)

Funksjonen overvåker nettverkstrafikk ved å summere bytene som sendes og mottas. Terskelen er i byte. Hvis nettverkstrafikken overskrider terskelen, logger den og skriver ut et varsel.

Implementering av overvåkingslogikk

Nå som du har helsesjekk-funksjonene, ringer du bare hver av dem etter tur fra en kontrollerfunksjon. Du kan skrive ut utdata og logge en melding hver gang denne generelle sjekken kjøres:

# 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 funksjonen kjører alle helsesjekker, og gir en enhetlig oversikt over systemets helsestatus.

Planlegging av automatiserte kontroller og kjøring av programmet

For å automatisere overvåkingen med bestemte intervaller, vil du bruke tidsplanbiblioteket. Du kan justere intervallet etter behov.

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

Kjør nå systemovervåkingsprosessen i en kontinuerlig sløyfe.

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

Denne sløyfen sjekker kontinuerlig for planlagte oppgaver og utfører dem når tiden kommer. Når du kjører programmet er resultatet som følger:

Programmet registrerer overvåkingsloggene på system_monitor.log fil og viser et varsel på terminalen.

Fremme systemovervåkingsprogrammet

Disse overvåkingskontrollene er ikke de eneste som psutil støtter. Du kan legge til flere overvåkingsfunksjoner, ved å bruke en lignende tilnærming, for å passe dine behov.

Du kan også forbedre rapporteringsfunksjonen for å bruke e-post i stedet for å sende ut en enkel melding på konsollen.