S jednom jedinom bibliotekom možete pratiti mnoštvo sistemskih metrika i osigurati da sve radi glatko.

Većina organizacija uvelike se oslanja na svoju IT infrastrukturu za vođenje svojih operacija. Neplanirani kvarovi sustava ili degradacija performansi mogu dovesti do prekida, financijskih gubitaka i štete ugledu.

Automatizirane provjere ispravnosti sustava ključne su kako bi se osiguralo da IT infrastruktura ostane stabilna i pouzdana. Praćenjem kritičnih mjernih podataka i brzim otkrivanjem anomalija možete minimizirati vrijeme prekida rada.

Definiranje zdravstvenih provjera

Bitno je definirati koje provjere zdravlja želite izvršiti na svom sustavu. Trebali biste uspostaviti jasne kriterije za ono što ćete pratiti i zašto. Započnite identificiranjem primarnih ciljeva vašeg sustava. Koje funkcije ili usluge pruža?

Zatim postavite referentne vrijednosti performansi na temelju povijesnih podataka i osigurajte da vaše provjere ispravnosti procjenjuju učinkovito korištenje resursa sustava. Na kraju, definirajte pragove koji ukazuju na problem. Koji postotak upotrebe resursa smatrate visokim ili niskim? U kojem trenutku bi sustav trebao pokrenuti upozorenje?

instagram viewer

Odabir knjižnica i postavljanje vašeg okruženja

Da biste automatizirali proces praćenja sustava u Pythonu, trebat će vam sljedeće biblioteke koje će vam pomoći prikupiti metriku sustava i zatim rasporediti provjere.

  • psutil: Ovo je biblioteka za više platformi koja pruža sučelje za dohvaćanje informacija o korištenju sustava (CPU, memorija, diskovi, mreža, senzori).
  • raspored: Ova biblioteka pruža jednostavan način za raspored zadataka koji će se izvoditi u određenim intervalima.
  • vrijeme: knjižnica ugrađena u Python koju ćete koristiti za operacije povezane s vremenom.
  • sječa: Još jedna ugrađena biblioteka koju ćete koristiti za kreiranje dnevnika provjera zdravlja sustava.

Počnite postavljati stvari do stvaranje novog Python virtualnog okruženja. To će spriječiti sve potencijalne sukobe biblioteke verzija. Zatim pokrenite sljedeću naredbu terminala za instalirajte potrebne biblioteke s Pipom:

pip install psutil schedule

Nakon što su biblioteke instalirane na vašem sustavu, vaše okruženje je spremno.

Puni izvorni kod dostupan je u a GitHub spremište.

Uvoz potrebnih biblioteka

Napravite novu skriptu, praćenje.pyi započnite uvozom potrebnih biblioteka:

import psutil
import schedule
import time
import logging

Uvoz biblioteka omogućit će vam korištenje funkcionalnosti koje nude u vašem kodu.

Zapisivanje i izvješćivanje

Potreban vam je način za bilježenje rezultata vaših zdravstvenih pregleda. Bilježenje služi kao vitalni alat za bilježenje i očuvanje povijesnih zapisa događaja i otklanjanje pogrešaka u vašem kodu. Također igra ključnu ulogu u analizi učinka.

Upotrijebite ugrađenu biblioteku za bilježenje za izradu svojih zapisa za ovaj projekt. Možete spremiti zapisničke poruke u datoteku pod nazivom sustav_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)

Za izvješćivanje ispišite poruku upozorenja na konzoli koja će poslužiti kao neposredna obavijest o svim problemima koji zahtijevaju pozornost.

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

Funkcije provjere zdravlja koristit će te funkcije za evidentiranje i izvješćivanje o relevantnim nalazima.

Stvaranje funkcija provjere ispravnosti

Za svaku provjeru ispravnosti definirajte funkciju koja će obuhvatiti određeni test koji procjenjuje kritični aspekt vaše infrastrukture.

Praćenje korištenja CPU-a

Započnite definiranjem funkcije koja će nadzirati korištenje CPU-a. To će poslužiti kao kritičan pokazatelj ukupne izvedbe sustava i iskorištenosti resursa. Pretjerano korištenje CPU-a dovodi do usporavanja sustava, nereagiranja, pa čak i padova, ozbiljno ometajući osnovne usluge.

Redovitim provjeravanjem upotrebe CPU-a i postavljanjem odgovarajućih pragova, administratori sustava mogu identificirati uska grla u performansama, procese koji zahtijevaju velike resurse ili potencijalne hardverske probleme.

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

Funkcija provjerava trenutnu upotrebu CPU-a sustava. Ako korištenje CPU-a premaši prag u postotku, bilježi poruku koja ukazuje na visoku upotrebu CPU-a i ispisuje poruku upozorenja.

Praćenje korištenja memorije

Definirajte drugu funkciju koja će pratiti korištenje memorije. Redovitim praćenjem korištenja memorije možete otkriti curenje memorije, procesi koji zahtijevaju resurse i potencijalna uska grla. Ova metoda sprječava usporavanje sustava, padove i prekide rada.

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)

Slično provjeri upotrebe CPU-a, postavljate prag za veliku upotrebu memorije. Ako upotreba memorije prijeđe prag, bilježi se i ispisuje upozorenje.

Praćenje prostora na disku

Definirajte funkciju koja će nadzirati prostor na disku. Kontinuiranim praćenjem dostupnosti prostora na disku možete riješiti potencijalne probleme koji proizlaze iz iscrpljenosti resursa. Nedostatak prostora na disku može rezultirati padovima sustava, oštećenjem podataka i prekidima usluge. Provjere prostora na disku pomažu osigurati da postoji dovoljan kapacitet za pohranu.

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)

Ova funkcija ispituje korištenje prostora na disku za određenu stazu. Zadana staza je korijenski direktorij /. Ako prostor na disku padne ispod praga, zapisuje i ispisuje upozorenje.

Praćenje mrežnog prometa

Definirajte konačnu funkciju koja će nadzirati protok podataka vašeg sustava. Pomoći će u ranom otkrivanju neočekivanih skokova u mrežnom prometu, što bi moglo biti pokazatelj sigurnosnih proboja ili problema s infrastrukturom.

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)

Funkcija prati mrežni promet zbrajanjem poslanih i primljenih bajtova. Prag je u bajtovima. Ako mrežni promet premaši prag, bilježi se i ispisuje upozorenje.

Implementacija logike praćenja

Sada kada imate funkcije provjere zdravlja, jednostavno pozovite svaku redom iz funkcije kontrolera. Možete ispisati izlaz i zabilježiti poruku svaki put kada se pokrene ova cjelokupna provjera:

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

Ova funkcija pokreće sve provjere zdravlja, pružajući objedinjeni pregled zdravstvenog statusa vašeg sustava.

Zakazivanje automatskih provjera i pokretanje programa

Za automatizaciju nadzora u određenim intervalima, koristit ćete biblioteku rasporeda. Interval možete prilagoditi prema potrebi.

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

Sada pokrenite proces praćenja sustava u neprekidnoj petlji.

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

Ova petlja kontinuirano provjerava raspoređene zadatke i izvršava ih kada za to dođe vrijeme. Kada pokrenete program izlaz je sljedeći:

Program bilježi zapisnike praćenja na sustav_monitor.log datoteku i prikazuje upozorenje na terminalu.

Unapređenje programa za praćenje sustava

Ove nadzorne provjere nisu jedine koje psutil podržava. Možete dodati više funkcija nadzora, koristeći sličan pristup, kako bi odgovarale vašim zahtjevima.

Također možete poboljšati funkciju izvješćivanja za korištenje e-pošte umjesto ispisivanja jednostavne poruke na konzoli.