Z eno samo knjižnico lahko spremljate množico sistemskih meritev in zagotovite, da vse teče gladko.

Večina organizacij se pri izvajanju svojih dejavnosti močno zanaša na svojo IT infrastrukturo. Nenačrtovane okvare sistema ali poslabšanje delovanja lahko povzročijo motnje, finančne izgube in škodo ugledu.

Samodejni pregledi zdravja sistema so ključnega pomena za zagotovitev, da IT infrastruktura ostane stabilna in zanesljiva. S spremljanjem kritičnih meritev in takojšnjim odkrivanjem anomalij lahko zmanjšate čas nedelovanja.

Definiranje zdravstvenih pregledov

Bistveno je, da določite, katere zdravstvene preglede želite izvesti v vašem sistemu. Določiti morate jasna merila za to, kaj boste spremljali in zakaj. Začnite z opredelitvijo primarnih ciljev vašega sistema. Katere funkcije ali storitve ponuja?

Nato nastavite merila uspešnosti na podlagi preteklih podatkov in zagotovite, da vaši zdravstveni pregledi ocenijo učinkovito uporabo sistemskih virov. Na koncu določite pragove, ki kažejo na težavo. Kolikšen odstotek porabe virov se vam zdi visok ali nizek? Na kateri točki naj sistem sproži opozorilo?

Izbira knjižnic in nastavitev vašega okolja

Za avtomatizacijo procesa spremljanja sistema v Pythonu boste potrebovali naslednje knjižnice, ki vam bodo pomagale zbrati sistemske meritve in nato načrtovati preverjanja.

  • psutil: To je knjižnica za več platform, ki nudi vmesnik za pridobivanje informacij o uporabi sistema (CPU, pomnilnik, diski, omrežje, senzorji).
  • urnik: Ta knjižnica ponuja preprost način za načrtovanje izvajanja opravil v določenih intervalih.
  • čas: knjižnica, vgrajena v Python, ki jo boste uporabljali za operacije, povezane s časom.
  • sečnja: Druga vgrajena knjižnica, ki jo boste uporabili za ustvarjanje dnevnikov pregledov zdravja sistema.

Začnite postavljati stvari do ustvarjanje novega virtualnega okolja Python. To bo preprečilo morebitne konflikte knjižnic različic. Nato zaženite naslednji terminalski ukaz za namestite zahtevane knjižnice s Pipom:

pip install psutil schedule

Ko so knjižnice nameščene v vašem sistemu, je vaše okolje pripravljeno.

Celotna izvorna koda je na voljo v a Repozitorij GitHub.

Uvažanje zahtevanih knjižnic

Ustvari nov skript, spremljanje.pyin ga začnite z uvozom zahtevanih knjižnic:

import psutil
import schedule
import time
import logging

Uvoz knjižnic vam bo omogočil uporabo funkcionalnosti, ki jih ponujajo v vaši kodi.

Beleženje in poročanje

Potrebujete način za beleženje rezultatov vaših zdravstvenih pregledov. Beleženje služi kot ključno orodje za zajemanje in ohranjanje zgodovinskega zapisa dogodkov in odpravljanje težav v vaši kodi. Prav tako ima ključno vlogo pri analizi uspešnosti.

Za ustvarjanje dnevnikov za ta projekt uporabite vgrajeno knjižnico za beleženje. Dnevniška sporočila lahko shranite v datoteko z imenom sistemski_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 poročanje natisnite opozorilno sporočilo na konzoli, ki bo služilo kot takojšnje obvestilo o vseh težavah, ki zahtevajo pozornost.

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

Funkcije zdravstvenega pregleda bodo te funkcije uporabile za beleženje in poročanje o svojih ustreznih ugotovitvah.

Ustvarjanje funkcij za preverjanje stanja

Za vsak pregled zdravja definirajte funkcijo, ki bo zajemala poseben test, ki ocenjuje kritični vidik vaše infrastrukture.

Spremljanje porabe procesorja

Začnite z definiranjem funkcije, ki bo spremljala porabo procesorja. To bo služilo kot kritičen kazalnik celotne zmogljivosti sistema in izkoriščenosti virov. Prekomerna obremenitev procesorja povzroči upočasnitev sistema, neodzivnost in celo zrušitve, kar močno moti osnovne storitve.

Z rednim preverjanjem porabe procesorja in nastavitvijo ustreznih pragov lahko sistemski skrbniki prepoznajo ozka grla pri delovanju, procese, ki zahtevajo veliko virov, ali morebitne težave s strojno opremo.

# 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 preverja trenutno porabo procesorja sistema. Če poraba procesorja preseže prag v odstotkih, zabeleži sporočilo, ki kaže visoko obremenitev procesorja, in natisne opozorilno sporočilo.

Spremljanje uporabe pomnilnika

Določite drugo funkcijo, ki bo spremljala porabo pomnilnika. Z rednim spremljanjem uporabe pomnilnika lahko odkrivanje puščanja pomnilnikaprocesi, ki zahtevajo veliko virov, in morebitna ozka grla. Ta metoda preprečuje upočasnitev sistema, zrušitve in izpade.

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)

Podobno kot pri preverjanju porabe procesorja nastavite prag za visoko porabo pomnilnika. Če uporaba pomnilnika preseže prag, se zabeleži in natisne opozorilo.

Nadzor prostora na disku

Določite funkcijo, ki bo spremljala prostor na disku. Z nenehnim spremljanjem razpoložljivosti prostora na disku lahko odpravite morebitne težave, ki izhajajo iz izčrpanosti virov. Če vam zmanjka prostora na disku, lahko pride do zrušitev sistema, poškodb podatkov in prekinitev storitev. Preverjanje prostora na disku pomaga zagotoviti, da je dovolj prostora za shranjevanje.

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)

Ta funkcija preverja porabo prostora na disku določene poti. Privzeta pot je korenski imenik /. Če prostor na disku pade pod prag, se zabeleži in natisne opozorilo.

Nadzor omrežnega prometa

Določite končno funkcijo, ki bo spremljala pretok podatkov vašega sistema. Pomagal bo pri zgodnjem odkrivanju nepričakovanih skokov v omrežnem prometu, ki bi lahko kazali na kršitve varnosti ali težave z infrastrukturo.

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 spremlja omrežni promet s seštevanjem poslanih in prejetih bajtov. Prag je v bajtih. Če omrežni promet preseže prag, se zabeleži in natisne opozorilo.

Izvajanje logike spremljanja

Zdaj, ko imate funkcije za preverjanje zdravja, preprosto pokličite vsako od njih iz funkcije krmilnika. Vsakič, ko se izvede to splošno preverjanje, lahko natisnete izpis in zabeležite sporočilo:

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

Ta funkcija izvaja vse preglede zdravja in zagotavlja enoten pogled na zdravstveno stanje vašega sistema.

Načrtovanje avtomatiziranih pregledov in izvajanje programa

Če želite avtomatizirati spremljanje v določenih intervalih, boste uporabili knjižnico razporeda. Interval lahko prilagodite po potrebi.

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

Zdaj zaženite postopek spremljanja sistema v neprekinjeni zanki.

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

Ta zanka nenehno preverja načrtovana opravila in jih izvaja, ko pride čas. Ko zaženete program, je rezultat naslednji:

Program beleži dnevnike spremljanja na sistemski_monitor.log datoteko in na terminalu prikaže opozorilo.

Napredovanje programa za spremljanje sistema

Ta nadzorna preverjanja niso edina, ki jih psutil podpira. S podobnim pristopom lahko dodate več nadzornih funkcij, da ustrezajo vašim zahtevam.

Funkcijo poročanja lahko izboljšate tudi tako, da namesto preprostega sporočila na konzoli uporabljate e-pošto.