Pomocou jedinej knižnice môžete monitorovať množstvo systémových metrík a zaistiť, aby všetko fungovalo hladko.

Väčšina organizácií sa pri prevádzke svojich operácií vo veľkej miere spolieha na svoju IT infraštruktúru. Neplánované zlyhania systému alebo zníženie výkonu môžu viesť k narušeniam, finančným stratám a poškodeniu dobrého mena.

Automatizované kontroly stavu systému sú kľúčové na zabezpečenie toho, aby infraštruktúra IT zostala stabilná a spoľahlivá. Monitorovaním kritických metrík a rýchlym zisťovaním anomálií môžete minimalizovať prestoje.

Definovanie zdravotných kontrol

Je nevyhnutné definovať, aké kontroly stavu chcete vykonať na vašom systéme. Mali by ste si stanoviť jasné kritériá toho, čo budete monitorovať a prečo. Začnite identifikáciou primárnych cieľov vášho systému. Aké funkcie alebo služby poskytuje?

Potom nastavte výkonnostné kritériá založené na historických údajoch a zabezpečte, aby vaše zdravotné kontroly vyhodnotili efektívne využitie systémových prostriedkov. Nakoniec definujte prahové hodnoty, ktoré naznačujú problém. Aké percento využitia zdrojov považujete za vysoké alebo nízke? V ktorom bode by mal systém spustiť výstrahu?

instagram viewer

Výber knižníc a nastavenie prostredia

Na automatizáciu procesu monitorovania systému v Pythone budete potrebovať nasledujúce knižnice, ktoré vám pomôžu zhromaždiť systémové metriky a potom naplánovať kontroly.

  • psutil: Ide o multiplatformovú knižnicu, ktorá poskytuje rozhranie na získavanie informácií o využití systému (CPU, pamäť, disky, sieť, senzory).
  • harmonogram: Táto knižnica poskytuje jednoduchý spôsob, ako naplánovať spustenie úloh v konkrétnych intervaloch.
  • čas: Vstavaná knižnica Pythonu, ktorú budete používať na operácie súvisiace s časom.
  • ťažba dreva: Ďalšia vstavaná knižnica, ktorú budete používať na vytváranie protokolov kontrol stavu systému.

Začnite nastavovať veci vytvorenie nového virtuálneho prostredia Pythonu. Zabráni sa tým možným konfliktom knižníc verzií. Potom spustite nasledujúci príkaz terminálu nainštalujte požadované knižnice pomocou Pip:

pip install psutil schedule

Po nainštalovaní knižníc do vášho systému je vaše prostredie pripravené.

Úplný zdrojový kód je dostupný v a úložisko GitHub.

Import požadovaných knižníc

Vytvorte nový skript, monitoring.pya začnite importovaním požadovaných knižníc:

import psutil
import schedule
import time
import logging

Import knižníc vám umožní využívať funkcie, ktoré ponúkajú vo vašom kóde.

Protokolovanie a podávanie správ

Potrebujete spôsob, ako zaznamenávať výsledky vašich zdravotných kontrol. Protokolovanie slúži ako životne dôležitý nástroj na zachytávanie a uchovávanie historických záznamov udalostí a problémy s ladením vo vašom kóde. Tiež zohráva rozhodujúcu úlohu pri analýze výkonu.

Na vytvorenie protokolov pre tento projekt použite vstavanú knižnicu protokolovania. Správy denníka môžete uložiť do súboru s názvom 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)

Pre hlásenie vytlačte na konzole výstražnú správu, ktorá bude slúžiť ako okamžité upozornenie na akékoľvek problémy, ktoré si vyžadujú pozornosť.

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

Funkcie kontroly stavu budú používať tieto funkcie na zaznamenávanie a hlásenie príslušných zistení.

Vytváranie funkcií kontroly stavu

Pre každú kontrolu stavu definujte funkciu, ktorá bude zahŕňať špecifický test, ktorý vyhodnotí kritický aspekt vašej infraštruktúry.

Monitorovanie využitia CPU

Začnite definovaním funkcie, ktorá bude monitorovať využitie procesora. Toto bude slúžiť ako kritický ukazovateľ celkového výkonu systému a využitia zdrojov. Nadmerné využitie procesora vedie k spomaleniu systému, nereagovaniu a dokonca k zlyhaniam, čo vážne narúša základné služby.

Pravidelnou kontrolou využitia procesora a nastavením vhodných prahových hodnôt môžu správcovia systému identifikovať slabé miesta výkonu, procesy náročné na zdroje alebo potenciálne problémy s hardvérom.

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

Funkcia kontroluje aktuálne využitie procesora systému. Ak využitie procesora prekročí prahovú hodnotu v percentách, zaprotokoluje sa správa označujúca vysoké využitie procesora a vytlačí sa výstražná správa.

Monitorovanie využitia pamäte

Definujte ďalšiu funkciu, ktorá bude monitorovať využitie pamäte. Pravidelným sledovaním využitia pamäte môžete odhaliť úniky pamäteprocesy náročné na zdroje a potenciálne úzke miesta. Táto metóda zabraňuje spomaleniu, pádom a výpadkom systému.

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)

Podobne ako pri kontrole využitia procesora nastavíte prah pre vysoké využitie pamäte. Ak využitie pamäte prekročí prahovú hodnotu, zaznamená sa a vytlačí sa upozornenie.

Monitorovanie miesta na disku

Definujte funkciu, ktorá bude monitorovať miesto na disku. Neustálym monitorovaním dostupnosti miesta na disku môžete riešiť potenciálne problémy vyplývajúce z vyčerpania zdrojov. Nedostatok miesta na disku môže viesť k zlyhaniu systému, poškodeniu údajov a prerušeniu služieb. Kontroly miesta na disku pomáhajú zabezpečiť dostatočnú úložnú kapacitu.

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)

Táto funkcia skúma využitie miesta na disku zadanej cesty. Predvolená cesta je koreňový adresár /. Ak miesto na disku klesne pod prahovú hodnotu, zaznamená sa a vytlačí sa upozornenie.

Monitorovanie sieťovej prevádzky

Definujte konečnú funkciu, ktorá bude monitorovať tok údajov vášho systému. Pomôže to pri včasnej detekcii neočakávaných špičiek v sieťovej prevádzke, ktoré by mohli naznačovať narušenia bezpečnosti alebo problémy s infraštruktúrou.

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)

Funkcia monitoruje sieťovú prevádzku sčítaním odoslaných a prijatých bajtov. Prah je v bajtoch. Ak sieťová prevádzka prekročí prah, zaznamená sa a vytlačí sa upozornenie.

Implementácia monitorovacej logiky

Teraz, keď máte funkcie kontroly stavu, jednoducho zavolajte postupne každú z funkcií ovládača. Pri každom spustení tejto celkovej kontroly môžete vytlačiť výstup a zaprotokolovať správu:

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

Táto funkcia spúšťa všetky kontroly stavu a poskytuje jednotný pohľad na zdravotný stav vášho systému.

Plánovanie automatických kontrol a spustenie programu

Na automatizáciu sledovania v konkrétnych intervaloch použijete knižnicu plánov. Interval môžete upraviť podľa potreby.

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

Teraz spustite proces monitorovania systému v nepretržitej slučke.

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

Táto slučka nepretržite kontroluje naplánované úlohy a vykonáva ich, keď príde ich čas. Keď spustíte program, výstup je nasledujúci:

Program zaznamenáva monitorovacie protokoly na system_monitor.log súbor a zobrazí upozornenie na termináli.

Pokrok v programe monitorovania systému

Tieto kontroly monitorovania nie sú jediné, ktoré psutil podporuje. Podobným prístupom môžete pridať ďalšie monitorovacie funkcie, aby vyhovovali vašim požiadavkám.

Môžete tiež vylepšiť funkciu hlásenia tak, aby namiesto odosielania jednoduchej správy na konzolu používala e-mail.