Naudodami vieną biblioteką galite stebėti daugybę sistemos metrikų ir užtikrinti, kad viskas veiktų sklandžiai.

Daugelis organizacijų, vykdydamos savo veiklą, labai priklauso nuo savo IT infrastruktūros. Neplanuoti sistemos gedimai arba našumo pablogėjimas gali sukelti sutrikimų, finansinių nuostolių ir pakenkti reputacijai.

Automatizuoti sistemos būklės patikrinimai yra labai svarbūs siekiant užtikrinti, kad IT infrastruktūra išliktų stabili ir patikima. Stebėdami kritines metrikas ir greitai aptikdami anomalijas, galite sumažinti prastovos laiką.

Sveikatos patikrinimų apibrėžimas

Labai svarbu apibrėžti, kokius sveikatos patikrinimus norite atlikti savo sistemoje. Turėtumėte nustatyti aiškius kriterijus, ką ir kodėl stebėsite. Pradėkite nustatydami pagrindinius savo sistemos tikslus. Kokias funkcijas ar paslaugas jis teikia?

Tada, remdamiesi istoriniais duomenimis, nustatykite našumo etalonus ir įsitikinkite, kad sveikatos patikrinimai įvertins efektyvų sistemos išteklių naudojimą. Galiausiai apibrėžkite slenksčius, kurie rodo problemą. Kokį išteklių naudojimo procentą laikote dideliu ar mažu? Kuriuo momentu sistema turėtų suaktyvinti įspėjimą?

instagram viewer

Bibliotekų pasirinkimas ir aplinkos nustatymas

Norėdami automatizuoti sistemos stebėjimo procesą Python, jums reikės šių bibliotekų, kurios padės surinkti sistemos metriką ir suplanuoti patikrinimus.

  • psutil: Tai kelių platformų biblioteka, suteikianti sąsają informacijai apie sistemos naudojimą (procesoriaus, atminties, diskų, tinklo, jutiklių) nuskaityti.
  • tvarkaraštį: Ši biblioteka suteikia paprastą būdą suplanuoti užduotis, kurios būtų vykdomos tam tikrais intervalais.
  • laikas: integruota Python biblioteka, kurią naudosite su laiku susijusioms operacijoms atlikti.
  • medienos ruoša: Kita integruota biblioteka, kurią naudosite kurdami sistemos būklės patikrinimų žurnalus.

Pradėkite tvarkyti dalykus sukurti naują Python virtualią aplinką. Taip išvengsite galimų versijų bibliotekos konfliktų. Tada paleiskite šią terminalo komandą įdiekite reikiamas bibliotekas su Pip:

pip install psutil schedule

Kai bibliotekos bus įdiegtos jūsų sistemoje, jūsų aplinka bus paruošta.

Visą šaltinio kodą rasite a GitHub saugykla.

Reikalingų bibliotekų importavimas

Sukurti naują scenarijų, monitoringas.pyir pradėkite importuodami reikiamas bibliotekas:

import psutil
import schedule
import time
import logging

Importuodami bibliotekas galėsite naudoti kode jų siūlomas funkcijas.

Registravimas ir ataskaitų teikimas

Jums reikia būdo užregistruoti savo sveikatos patikrinimų rezultatus. Registravimas yra gyvybiškai svarbi priemonė fiksuoti ir išsaugoti istorinius įvykių įrašus ir derinimo problemos jūsų kode. Ji taip pat atlieka svarbų vaidmenį atliekant veiklos analizę.

Norėdami sukurti šio projekto žurnalus, naudokite integruotą registravimo biblioteką. Žurnalo pranešimus galite įrašyti į failą pavadinimu 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)

Norėdami pranešti, konsolėje išspausdinkite įspėjimo pranešimą, kad būtų nedelsiant pranešta apie visas problemas, į kurias reikia atkreipti dėmesį.

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

Sveikatos patikrinimo funkcijos naudos šias funkcijas atitinkamoms išvadoms registruoti ir pranešti.

Sveikatos patikrinimo funkcijų kūrimas

Kiekvienam sveikatos patikrinimui apibrėžkite funkciją, kuri apims konkretų testą, įvertinantį svarbų infrastruktūros aspektą.

CPU naudojimo stebėjimas

Pradėkite nustatydami funkciją, kuri stebės procesoriaus naudojimą. Tai bus esminis bendro sistemos veikimo ir išteklių panaudojimo rodiklis. Pernelyg didelis procesoriaus naudojimas sukelia sistemos sulėtėjimą, nereaguoja ir net gedimus, labai sutrikdo pagrindines paslaugas.

Reguliariai tikrindami procesoriaus naudojimą ir nustatydami atitinkamus slenksčius, sistemos administratoriai gali nustatyti našumo kliūtis, daug išteklių reikalaujančius procesus arba galimas aparatinės įrangos problemas.

# 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 tikrina esamą sistemos procesoriaus naudojimą. Jei procesoriaus naudojimas viršija slenkstį procentais, jis registruoja pranešimą, nurodantį didelį procesoriaus naudojimą, ir išspausdina įspėjimo pranešimą.

Atminties naudojimo stebėjimas

Apibrėžkite kitą funkciją, kuri stebės atminties naudojimą. Reguliariai stebėdami atminties naudojimą, galite aptikti atminties nutekėjimą, išteklių reikalaujantys procesai ir galimos kliūtys. Šis metodas apsaugo nuo sistemos sulėtėjimo, gedimų ir gedimų.

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)

Panašiai kaip ir tikrinant procesoriaus naudojimą, jūs nustatote didelio atminties naudojimo slenkstį. Jei atminties naudojimas viršija slenkstį, jis registruoja ir išspausdina įspėjimą.

Vietos diske stebėjimas

Apibrėžkite funkciją, kuri stebės vietos diske. Nuolat stebėdami, ar yra vietos diske, galite išspręsti galimas problemas, kylančias dėl išteklių išeikvojimo. Pritrūkus vietos diske gali sugesti sistema, sugadinti duomenys ir nutrūkti paslauga. Vietos diske patikrinimai padeda užtikrinti, kad yra pakankamai atminties.

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)

Ši funkcija tiria disko vietos naudojimą nurodytu keliu. Numatytasis kelias yra šakninis katalogas /. Jei vietos diske nukrenta žemiau slenksčio, jis registruojasi ir išspausdina įspėjimą.

Tinklo srauto stebėjimas

Apibrėžkite paskutinę funkciją, kuri stebės jūsų sistemos duomenų srautą. Tai padės anksti aptikti netikėtus tinklo srauto šuolius, kurie gali rodyti saugumo pažeidimus arba infrastruktūros problemas.

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 stebi tinklo srautą susumavus išsiųstus ir gautus baitus. Slenkstis nurodytas baitais. Jei tinklo srautas viršija slenkstį, jis registruoja ir išspausdina įspėjimą.

Stebėjimo logikos įgyvendinimas

Dabar, kai turite sveikatos patikrinimo funkcijas, tiesiog iškvieskite kiekvieną iš jų iš eilės iš valdiklio funkcijos. Galite atspausdinti išvestį ir užregistruoti pranešimą kiekvieną kartą, kai vykdoma ši bendra patikra:

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

Ši funkcija atlieka visus sveikatos patikrinimus ir pateikia vieningą jūsų sistemos sveikatos būklės vaizdą.

Automatinių patikrinimų planavimas ir programos vykdymas

Norėdami automatizuoti stebėjimą tam tikrais intervalais, naudosite tvarkaraščio biblioteką. Galite reguliuoti intervalą pagal poreikį.

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

Dabar paleiskite sistemos stebėjimo procesą nuolatine kilpa.

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

Ši kilpa nuolat tikrina suplanuotas užduotis ir vykdo jas, kai ateina laikas. Kai paleidžiate programą, išvestis yra tokia:

Programa įrašo stebėjimo žurnalus system_monitor.log failą ir terminale parodo įspėjimą.

Sistemos stebėjimo programos tobulinimas

Šie stebėjimo patikrinimai nėra vieninteliai, kuriuos palaiko „psutil“. Galite pridėti daugiau stebėjimo funkcijų, naudodami panašų metodą, kad atitiktų jūsų poreikius.

Taip pat galite patobulinti ataskaitų teikimo funkciją ir naudoti el. paštą, o ne pateikti paprastą pranešimą konsolėje.