Izmantojot vienu bibliotēku, varat pārraudzīt daudzus sistēmas rādītājus un nodrošināt, ka viss darbojas nevainojami.

Lielākā daļa organizāciju savu darbību veikšanai lielā mērā paļaujas uz savu IT infrastruktūru. Neplānotas sistēmas kļūmes vai veiktspējas pasliktināšanās var izraisīt traucējumus, finansiālus zaudējumus un kaitējumu reputācijai.

Automatizētās sistēmas stāvokļa pārbaudes ir ļoti svarīgas, lai nodrošinātu IT infrastruktūras stabilitāti un uzticamību. Pārraugot kritiskos rādītājus un nekavējoties atklājot anomālijas, varat samazināt dīkstāves laiku.

Veselības pārbaužu noteikšana

Ir svarīgi definēt, kādas veselības pārbaudes vēlaties veikt savā sistēmā. Jums ir jānosaka skaidri kritēriji tam, ko pārraudzīsiet un kāpēc. Sāciet, nosakot savas sistēmas primāros mērķus. Kādas funkcijas vai pakalpojumus tas nodrošina?

Pēc tam iestatiet veiktspējas etalonus, pamatojoties uz vēsturiskajiem datiem, un pārliecinieties, ka jūsu veselības pārbaudēs tiek novērtēta sistēmas resursu efektīva izmantošana. Visbeidzot, definējiet sliekšņus, kas norāda uz problēmu. Kādu resursu izmantošanas procentuālo daļu jūs uzskatāt par augstu vai zemu? Kurā brīdī sistēmai vajadzētu aktivizēt brīdinājumu?

instagram viewer

Bibliotēku izvēle un vides iestatīšana

Lai automatizētu sistēmas uzraudzības procesu Python, jums būs nepieciešamas tālāk norādītās bibliotēkas, kas palīdzēs apkopot sistēmas metriku un pēc tam ieplānot pārbaudes.

  • psutil: šī ir starpplatformu bibliotēka, kas nodrošina saskarni informācijas izgūšanai par sistēmas izmantošanu (CPU, atmiņa, diski, tīkls, sensori).
  • grafiks: šī bibliotēka nodrošina vienkāršu veidu, kā ieplānot uzdevumu izpildi noteiktos intervālos.
  • laiks: Python iebūvēta bibliotēka, ko izmantosit ar laiku saistītām darbībām.
  • mežizstrāde: Vēl viena iebūvēta bibliotēka, ko izmantosit sistēmas veselības pārbaužu žurnālu izveidei.

Sāciet iestatīt lietas līdz jaunas Python virtuālās vides izveide. Tas novērsīs iespējamos versiju bibliotēkas konfliktus. Pēc tam palaidiet šādu termināļa komandu uz instalējiet vajadzīgās bibliotēkas ar Pip:

pip install psutil schedule

Kad bibliotēkas ir instalētas jūsu sistēmā, jūsu vide ir gatava.

Pilns avota kods ir pieejams a GitHub repozitorijs.

Nepieciešamo bibliotēku importēšana

Izveidojiet jaunu skriptu, monitorings.py, un sāciet to, importējot vajadzīgās bibliotēkas:

import psutil
import schedule
import time
import logging

Bibliotēku importēšana ļaus izmantot funkcionalitāti, ko tās piedāvā savā kodā.

Mežizstrāde un ziņošana

Jums ir nepieciešams veids, kā reģistrēt savu veselības pārbaužu rezultātus. Mežizstrāde kalpo kā būtisks rīks notikumu vēsturisko ierakstu tveršanai un saglabāšanai un atkļūdošanas problēmas jūsu kodā. Tam ir arī būtiska loma veiktspējas analīzē.

Izmantojiet iebūvēto reģistrēšanas bibliotēku, lai izveidotu žurnālus šim projektam. Jūs varat saglabāt žurnāla ziņojumus failā ar nosaukumu 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)

Lai ziņotu, konsolē izdrukājiet brīdinājuma ziņojumu, lai tas būtu tūlītējs paziņojums par problēmām, kurām jāpievērš uzmanība.

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

Veselības pārbaudes funkcijas izmantos šīs funkcijas, lai reģistrētu un ziņotu par attiecīgajiem konstatējumiem.

Veselības pārbaudes funkciju izveide

Katrai veselības pārbaudei definējiet funkciju, kas iekapsulēs īpašu testu, kas novērtē jūsu infrastruktūras kritisko aspektu.

CPU lietojuma uzraudzība

Sāciet, definējot funkciju, kas uzraudzīs CPU lietojumu. Tas kalpos kā kritisks sistēmas vispārējās veiktspējas un resursu izmantošanas rādītājs. Pārmērīgs CPU lietojums izraisa sistēmas palēnināšanos, nereaģēšanu un pat avārijas, nopietni traucējot būtisko pakalpojumu darbību.

Regulāri pārbaudot CPU lietojumu un iestatot atbilstošus sliekšņus, sistēmas administratori var noteikt veiktspējas vājās vietas, resursietilpīgus procesus vai iespējamās aparatūras problēmas.

# 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 pārbauda pašreizējo sistēmas CPU lietojumu. Ja CPU lietojums pārsniedz slieksni procentos, tas reģistrē ziņojumu, kas norāda uz augstu CPU lietojumu, un izdrukā brīdinājuma ziņojumu.

Atmiņas izmantošanas uzraudzība

Definējiet citu funkciju, kas pārraudzīs atmiņas lietojumu. Regulāri izsekojot atmiņas izmantošanai, jūs varat atklāt atmiņas noplūdes, resursus izsalkušiem procesiem un iespējamiem sastrēgumiem. Šī metode novērš sistēmas palēnināšanos, avārijas un pārtraukumus.

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)

Līdzīgi kā CPU lietojuma pārbaudē, jūs iestatāt liela atmiņas lietojuma slieksni. Ja atmiņas lietojums pārsniedz slieksni, tas reģistrē un izdrukā brīdinājumu.

Diska vietas uzraudzība

Definējiet funkciju, kas pārraudzīs diska vietu. Nepārtraukti uzraugot diska vietas pieejamību, varat novērst iespējamās problēmas, kas rodas resursu izsīkuma dēļ. Ja diskā trūkst vietas, var rasties sistēmas avārijas, datu bojājumi un pakalpojuma pārtraukumi. Diska vietas pārbaudes palīdz nodrošināt pietiekamu atmiņas ietilpību.

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)

Šī funkcija pārbauda diska vietas izmantošanu noteiktā ceļā. Noklusējuma ceļš ir saknes direktorijs /. Ja diska vieta nokrītas zem sliekšņa, tas reģistrē un izdrukā brīdinājumu.

Tīkla trafika uzraudzība

Definējiet pēdējo funkciju, kas pārraudzīs jūsu sistēmas datu plūsmu. Tas palīdzēs laikus atklāt negaidītus tīkla trafika kāpumus, kas varētu liecināt par drošības pārkāpumiem vai infrastruktūras problēmām.

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 uzrauga tīkla trafiku, summējot nosūtītos un saņemtos baitus. Slieksnis ir norādīts baitos. Ja tīkla trafiks pārsniedz slieksni, tas reģistrē un izdrukā brīdinājumu.

Uzraudzības loģikas ieviešana

Tagad, kad jums ir veselības pārbaudes funkcijas, vienkārši izsauciet katru pēc kārtas no kontroliera funkcijas. Varat izdrukāt izvadi un reģistrēt ziņojumu katru reizi, kad tiek izpildīta šī vispārējā pārbaude:

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

Šī funkcija veic visas veselības pārbaudes, nodrošinot vienotu priekšstatu par jūsu sistēmas veselības stāvokli.

Automatizēto pārbaužu plānošana un programmas palaišana

Lai automatizētu uzraudzību noteiktos intervālos, izmantosit grafiku bibliotēku. Jūs varat pielāgot intervālu pēc vajadzības.

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

Tagad palaidiet sistēmas uzraudzības procesu nepārtrauktā ciklā.

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

Šī cilpa nepārtraukti pārbauda ieplānotos uzdevumus un izpilda tos, kad pienāks laiks. Palaižot programmu, izvade ir šāda:

Programma ieraksta uzraudzības žurnālus uz system_monitor.log failu un terminālī parāda brīdinājumu.

Sistēmas uzraudzības programmas pilnveidošana

Šīs uzraudzības pārbaudes nav vienīgās, ko atbalsta psutil. Varat pievienot vairāk uzraudzības funkciju, izmantojot līdzīgu pieeju, lai tās atbilstu savām prasībām.

Varat arī uzlabot ziņošanas funkciju, lai izmantotu e-pastu, nevis konsolē izvadītu vienkāršu ziņojumu.