Pomocí jediné knihovny můžete monitorovat řadu systémových metrik a zajistit, aby vše fungovalo hladce.
Většina organizací při provozování svých operací silně spoléhá na svou IT infrastrukturu. Neplánovaná selhání systému nebo snížení výkonu mohou vést k narušení, finančním ztrátám a poškození pověsti.
Automatizované kontroly stavu systému jsou zásadní pro zajištění stability a spolehlivosti IT infrastruktury. Sledováním kritických metrik a rychlou detekcí anomálií můžete minimalizovat prostoje.
Definování zdravotních kontrol
Je nezbytné definovat, jaké kontroly stavu chcete ve svém systému provádět. Měli byste si stanovit jasná kritéria pro to, co budete sledovat a proč. Začněte identifikací primárních cílů vašeho systému. Jaké funkce nebo služby poskytuje?
Poté nastavte výkonnostní benchmarky na základě historických dat a zajistěte, aby vaše kontroly stavu vyhodnotily efektivní využití systémových prostředků. Nakonec definujte prahové hodnoty, které indikují problém. Jaké procento využití zdrojů považujete za vysoké nebo nízké? V jakém okamžiku by měl systém spustit výstrahu?
Výběr knihoven a nastavení prostředí
Chcete-li automatizovat proces monitorování systému v Pythonu, budete potřebovat následující knihovny, které vám pomohou shromáždit systémové metriky a poté naplánovat kontroly.
- psutil: Jedná se o multiplatformní knihovnu, která poskytuje rozhraní pro získávání informací o využití systému (CPU, paměť, disky, síť, senzory).
- plán: Tato knihovna poskytuje jednoduchý způsob, jak naplánovat spouštění úloh v určitých intervalech.
- čas: Vestavěná knihovna Pythonu, kterou budete používat pro operace související s časem.
- protokolování: Další vestavěná knihovna, kterou budete používat pro vytváření protokolů kontrol stavu systému.
Začněte nastavovat věci tím vytvoření nového virtuálního prostředí Pythonu. Předejdete tak případným konfliktům knihoven verzí. Poté spusťte následující příkaz terminálu nainstalujte požadované knihovny pomocí Pip:
pip install psutil schedule
Jakmile jsou knihovny nainstalovány do vašeho systému, vaše prostředí je připraveno.
Úplný zdrojový kód je k dispozici v a úložiště GitHub.
Import požadovaných knihoven
Vytvořte nový skript, monitoring.pya začněte importováním požadovaných knihoven:
import psutil
import schedule
import time
import logging
Import knihoven vám umožní používat funkce, které nabízejí ve vašem kódu.
Protokolování a hlášení
Potřebujete způsob, jak zaznamenat výsledky vašich zdravotních kontrol. Protokolování slouží jako zásadní nástroj pro zachycení a uchování historických záznamů událostí a ladění problémů ve vašem kódu. Hraje také klíčovou roli v analýze výkonu.
K vytvoření protokolů pro tento projekt použijte vestavěnou knihovnu protokolování. Zprávy protokolu můžete uložit do souboru s názvem 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)
Pro hlášení vytiskněte na konzole výstražnou zprávu, která bude sloužit jako okamžité upozornění na jakékoli problémy, které vyžadují pozornost.
# Function to print alerts to the console
defprint_alert(message):
print(f"ALERT: {message}")
Funkce kontroly stavu budou tyto funkce používat k protokolování a hlášení příslušných nálezů.
Vytváření funkcí kontroly stavu
Pro každou kontrolu stavu definujte funkci, která zapouzdří konkrétní test, který vyhodnotí kritický aspekt vaší infrastruktury.
Monitorování využití CPU
Začněte definováním funkce, která bude sledovat využití procesoru. To bude sloužit jako kritický ukazatel celkového výkonu systému a využití zdrojů. Nadměrné vytížení procesoru vede ke zpomalení systému, nereagování a dokonce pádům, což vážně naruší základní služby.
Pravidelnou kontrolou využití procesoru a nastavením příslušných prahových hodnot mohou správci systému identifikovat úzká hrdla výkonu, procesy náročné na zdroje nebo potenciální problémy s hardwarem.
# 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)
Funkce kontroluje aktuální využití CPU systému. Pokud využití procesoru překročí prahovou hodnotu v procentech, zaprotokoluje se zpráva o vysokém využití procesoru a vytiskne se výstražná zpráva.
Sledování využití paměti
Definujte další funkci, která bude sledovat využití paměti. Pravidelným sledováním využití paměti můžete detekovat úniky pamětiprocesy náročné na zdroje a potenciální úzká místa. Tato metoda zabraňuje zpomalení systému, pádům a výpadkům.
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)
Podobně jako u kontroly využití procesoru nastavíte práh pro vysoké využití paměti. Pokud využití paměti překročí práh, zaznamená se a vytiskne výstraha.
Monitorování místa na disku
Definujte funkci, která bude monitorovat místo na disku. Neustálým sledováním dostupnosti místa na disku můžete řešit potenciální problémy pramenící z vyčerpání zdrojů. Nedostatek místa na disku může vést k selhání systému, poškození dat a přerušení služeb. Kontroly místa na disku pomáhají zajistit dostatečnou kapacitu úložiště.
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)
Tato funkce zkoumá využití místa na disku zadané cesty. Výchozí cesta je kořenový adresář /. Pokud místo na disku klesne pod prahovou hodnotu, zaznamená se a vytiskne výstraha.
Sledování síťového provozu
Definujte konečnou funkci, která bude monitorovat datový tok vašeho systému. Pomůže při včasné detekci neočekávaných špiček v síťovém provozu, které by mohly naznačovat narušení bezpečnosti nebo problémy s infrastrukturou.
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)
Funkce monitoruje síťový provoz sečtením odeslaných a přijatých bajtů. Práh je v bajtech. Pokud síťový provoz překročí prahovou hodnotu, zaprotokoluje se a vytiskne výstrahu.
Implementace monitorovací logiky
Nyní, když máte funkce kontroly stavu, jednoduše zavolejte postupně každou z funkcí ovladače. Při každém spuštění této celkové kontroly můžete vytisknout výstup a zaprotokolovat zprá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.")
Tato funkce spouští všechny kontroly stavu a poskytuje jednotný pohled na zdravotní stav vašeho systému.
Plánování automatických kontrol a spuštění programu
Chcete-li automatizovat sledování v určitých intervalech, použijete knihovnu plánů. Interval můžete upravit podle potřeby.
# Schedule health checks to run every minute
schedule.every(1).minutes.do(run_health_checks)
Nyní spusťte proces monitorování systému v nepřetržité smyčce.
# Main loop to run scheduled tasks
whileTrue:
schedule.run_pending()
time.sleep(1)
Tato smyčka nepřetržitě kontroluje naplánované úlohy a spouští je, když přijde jejich čas. Po spuštění programu je výstup následující:
Program zaznamenává monitorovací protokoly na system_monitor.log soubor a zobrazí upozornění na terminálu.
Rozšíření programu monitorování systému
Tyto kontroly monitorování nejsou jediné, které psutil podporuje. Pomocí podobného přístupu můžete přidat další monitorovací funkce, aby vyhovovaly vašim požadavkům.
Můžete také vylepšit funkci hlášení tak, aby používala e-mail místo výstupu jednoduché zprávy na konzoli.