Cu o singură bibliotecă, puteți monitoriza o serie de valori de sistem și vă puteți asigura că totul funcționează fără probleme.

Majoritatea organizațiilor se bazează foarte mult pe infrastructura lor IT pentru a-și desfășura operațiunile. Eșecurile neplanificate ale sistemului sau degradarea performanței pot duce la întreruperi, pierderi financiare și deteriorarea reputației.

Verificările automate ale stării sistemului sunt cruciale pentru a se asigura că infrastructura IT rămâne stabilă și fiabilă. Prin monitorizarea valorilor critice și prin detectarea promptă a anomaliilor, puteți minimiza timpul de nefuncționare.

Definirea controalelor de sănătate

Este esențial să definiți ce verificări de sănătate doriți să efectuați pe sistemul dvs. Ar trebui să stabiliți criterii clare pentru ceea ce veți monitoriza și de ce. Începeți prin a identifica obiectivele principale ale sistemului dvs. Ce funcții sau servicii oferă?

Apoi, setați benchmark-uri de performanță pe baza datelor istorice și asigurați-vă că verificările dumneavoastră de sănătate evaluează utilizarea eficientă a resurselor sistemului. În cele din urmă, definiți pragurile care indică o problemă. Ce procent din utilizarea resurselor considerați ridicat sau scăzut? În ce moment ar trebui sistemul să declanșeze o alertă?

Alegerea bibliotecilor și configurarea mediului

Pentru a automatiza procesul de monitorizare a sistemului în Python, veți avea nevoie de următoarele biblioteci pentru a vă ajuta să culegeți valorile sistemului și apoi să programați verificările.

  • psutil: Aceasta este o bibliotecă multiplatformă care oferă o interfață pentru preluarea informațiilor despre utilizarea sistemului (CPU, memorie, discuri, rețea, senzori).
  • programa: Această bibliotecă oferă o modalitate simplă de a programa sarcinile pentru a rula la intervale specifice.
  • timp: O bibliotecă Python încorporată pe care o veți folosi pentru operațiuni legate de timp.
  • Logare: O altă bibliotecă încorporată pe care o veți folosi pentru a crea jurnale ale verificărilor de sănătate a sistemului.

Începeți să configurați lucrurile până la crearea unui nou mediu virtual Python. Acest lucru va preveni eventualele conflicte de bibliotecă de versiuni. Apoi rulați următoarea comandă de terminal la instalați bibliotecile necesare cu Pip:

pip install psutil schedule

Odată ce bibliotecile sunt instalate pe sistemul dumneavoastră, mediul dumneavoastră este gata.

Codul sursă complet este disponibil în a Depozitul GitHub.

Importarea bibliotecilor necesare

Creați un nou script, monitorizare.pyși începeți prin importul bibliotecilor necesare:

import psutil
import schedule
import time
import logging

Importarea bibliotecilor vă va permite să utilizați funcționalitatea pe care acestea le oferă în codul dvs.

Înregistrare și raportare

Aveți nevoie de o modalitate de a înregistra rezultatele controalelor dvs. de sănătate. Jurnalul servește ca un instrument vital pentru capturarea și păstrarea unei evidențe istorice a evenimentelor și probleme de depanare în codul dvs. De asemenea, joacă un rol critic în analiza performanței.

Utilizați biblioteca de înregistrare încorporată pentru a vă crea jurnale pentru acest proiect. Puteți salva mesajele de jurnal într-un fișier numit 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)

Pentru raportare, tipăriți un mesaj de alertă pe consolă pentru a servi drept notificare imediată despre orice probleme care necesită atenție.

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

Funcțiile de verificare a stării de sănătate vor folosi aceste funcții pentru a înregistra și a raporta constatările relevante.

Crearea funcțiilor de verificare a stării de sănătate

Pentru fiecare verificare a stării de sănătate, definiți o funcție care va încapsula un test specific care evaluează un aspect critic al infrastructurii dvs.

Monitorizarea utilizării procesorului

Începeți prin a defini o funcție care va monitoriza utilizarea procesorului. Acesta va servi ca un indicator critic al performanței generale a unui sistem și al utilizării resurselor. Utilizarea excesivă a procesorului duce la încetiniri ale sistemului, lipsă de răspuns și chiar blocări, perturbând grav serviciile esențiale.

Prin verificarea regulată a utilizării procesorului și stabilirea pragurilor adecvate, administratorii de sistem pot identifica blocajele de performanță, procesele consumatoare de resurse sau potențiale probleme hardware.

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

Funcția verifică utilizarea curentă a CPU a sistemului. Dacă utilizarea procesorului depășește pragul în procente, acesta înregistrează un mesaj care indică utilizarea ridicată a procesorului și tipărește un mesaj de alertă.

Monitorizarea utilizării memoriei

Definiți o altă funcție care va monitoriza utilizarea memoriei. Urmărind în mod regulat utilizarea memoriei, puteți detecta scurgeri de memorie, procese care necesită resurse și potențiale blocaje. Această metodă previne încetinirile sistemului, blocările și întreruperile.

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)

Similar cu verificarea utilizării procesorului, setați un prag pentru utilizarea ridicată a memoriei. Dacă utilizarea memoriei depășește pragul, acesta înregistrează și imprimă o alertă.

Monitorizarea spațiului pe disc

Definiți o funcție care va monitoriza spațiul pe disc. Prin monitorizarea continuă a disponibilității spațiului pe disc, puteți rezolva problemele potențiale care decurg din epuizarea resurselor. Epuizarea spațiului pe disc poate duce la blocări ale sistemului, coruperea datelor și întreruperi ale serviciului. Verificările spațiului pe disc vă ajută să vă asigurați că există o capacitate de stocare suficientă.

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)

Această funcție examinează utilizarea spațiului pe disc pentru o cale specificată. Calea implicită este directorul rădăcină /. Dacă spațiul pe disc scade sub pragul, acesta înregistrează și imprimă o alertă.

Monitorizarea traficului în rețea

Definiți o funcție finală care va monitoriza fluxul de date al sistemului dvs. Va ajuta la detectarea timpurie a vârfurilor neașteptate ale traficului de rețea, care ar putea indica încălcări de securitate sau probleme de infrastructură.

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)

Funcția monitorizează traficul de rețea prin însumarea octeților trimiși și primiți. Pragul este în octeți. Dacă traficul în rețea depășește pragul, acesta înregistrează și imprimă o alertă.

Implementarea logicii de monitorizare

Acum că aveți funcțiile de verificare a stării de sănătate, pur și simplu apelați pe fiecare pe rând dintr-o funcție de controler. Puteți imprima rezultate și înregistrați un mesaj de fiecare dată când se execută această verificare generală:

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

Această funcție rulează toate verificările de sănătate, oferind o vedere unificată a stării de sănătate a sistemului dumneavoastră.

Programarea verificărilor automate și rularea programului

Pentru a automatiza monitorizarea la intervale specifice, veți folosi biblioteca de programe. Puteți ajusta intervalul după cum este necesar.

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

Acum rulați procesul de monitorizare a sistemului într-o buclă continuă.

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

Această buclă verifică în mod continuu sarcinile programate și le execută atunci când le vine momentul. Când rulați programul, rezultatul este după cum urmează:

Programul înregistrează jurnalele de monitorizare pe system_monitor.log fișier și afișează o alertă pe terminal.

Avansarea programului de monitorizare a sistemului

Aceste verificări de monitorizare nu sunt singurele pe care le acceptă psutil. Puteți adăuga mai multe funcții de monitorizare, folosind o abordare similară, pentru a se potrivi cerințelor dumneavoastră.

De asemenea, puteți îmbunătăți funcția de raportare pentru a utiliza e-mailul în loc să trimiteți un mesaj simplu pe consolă.