Egyetlen könyvtárral számos rendszermérőt figyelhet meg, és biztosíthatja, hogy minden zökkenőmentesen működjön.
A legtöbb szervezet nagymértékben támaszkodik informatikai infrastruktúrájára a működése során. A rendszer nem tervezett meghibásodása vagy a teljesítmény romlása zavarokhoz, pénzügyi veszteségekhez és a jó hírnév károsodásához vezethet.
Az automatizált rendszerállapot-ellenőrzések kulcsfontosságúak az IT-infrastruktúra stabilitása és megbízhatósága szempontjából. A kritikus mutatók figyelésével és az anomáliák azonnali észlelésével minimalizálhatja az állásidőt.
Az egészségügyi ellenőrzések meghatározása
Alapvető fontosságú annak meghatározása, hogy milyen állapotellenőrzéseket kíván végrehajtani a rendszerén. Egyértelmű kritériumokat kell megállapítania arra vonatkozóan, hogy mit és miért fog ellenőrizni. Kezdje a rendszer elsődleges céljainak azonosításával. Milyen funkciókat, szolgáltatásokat nyújt?
Ezután állítson be teljesítmény-referenciaértékeket a múltbeli adatok alapján, és gondoskodjon arról, hogy az állapotfelmérés során felmérjék a rendszererőforrások hatékony felhasználását. Végül határozza meg a problémát jelző küszöbértékeket. Az erőforrás-felhasználás hány százalékát tartja magasnak vagy alacsonynak? Mikor kell a rendszernek riasztást kiváltania?
Könyvtárak kiválasztása és környezetének beállítása
A Python rendszerfigyelési folyamatának automatizálásához a következő könyvtárakra lesz szüksége a rendszermutatók összegyűjtéséhez, majd az ellenőrzések ütemezéséhez.
- psutil: Ez egy többplatformos könyvtár, amely interfészt biztosít a rendszerhasználattal kapcsolatos információk lekéréséhez (CPU, memória, lemezek, hálózat, érzékelők).
- menetrend: Ez a könyvtár egyszerű módot biztosít a feladatok meghatározott időközönkénti futtatására.
- idő: Egy beépített Python könyvtár, amelyet az időhöz kapcsolódó műveletekhez fog használni.
- fakitermelés: Egy másik beépített könyvtár, amelyet a rendszer állapotellenőrzési naplóinak létrehozására fog használni.
Kezdje el beállítani a dolgokat új Python virtuális környezet létrehozása. Ez megakadályozza a lehetséges verziókönyvtár-ütközéseket. Ezután futtassa a következő terminálparancsot telepítse a szükséges könyvtárakat a Pip segítségével:
pip install psutil schedule
Amint a könyvtárak telepítve vannak a rendszeren, a környezet készen áll.
A teljes forráskód elérhető a GitHub adattár.
A szükséges könyvtárak importálása
Hozzon létre egy új szkriptet, monitoring.py, és kezdje a szükséges könyvtárak importálásával:
import psutil
import schedule
import time
import logging
A könyvtárak importálása lehetővé teszi a kódban kínált funkciók használatát.
Naplózás és jelentéskészítés
Szüksége van egy módra az egészségügyi ellenőrzések eredményeinek naplózására. A naplózás létfontosságú eszköz az események történelmi feljegyzéseinek rögzítéséhez és megőrzéséhez hibakeresési problémák a kódban. A teljesítményelemzésben is kritikus szerepet játszik.
A projekt naplóinak létrehozásához használja a beépített naplózási könyvtárat. A naplóüzeneteket elmentheti egy nevű fájlba 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)
Jelentéshez nyomtasson ki egy figyelmeztető üzenetet a konzolra, amely azonnali értesítésként szolgál a figyelmet igénylő problémákról.
# Function to print alerts to the console
defprint_alert(message):
print(f"ALERT: {message}")
Az állapotfelmérés funkciói ezeket a funkciókat használják a vonatkozó megállapításaik naplózására és jelentésére.
Állapotellenőrző funkciók létrehozása
Minden állapotfelmérésnél definiáljon egy függvényt, amely egy adott tesztet tartalmaz, amely az infrastruktúra egy kritikus aspektusát értékeli.
CPU-használat figyelése
Kezdje egy olyan funkció meghatározásával, amely figyeli a CPU-használatot. Ez a rendszer általános teljesítményének és erőforrás-felhasználásának kritikus mutatójaként fog szolgálni. A túlzott CPU-használat a rendszer lelassulásához, reakcióhiányhoz, sőt összeomláshoz vezet, ami súlyosan megzavarja az alapvető szolgáltatásokat.
A CPU-használat rendszeres ellenőrzésével és a megfelelő küszöbértékek beállításával a rendszergazdák azonosíthatják a teljesítmény szűk keresztmetszeteit, az erőforrás-igényes folyamatokat vagy a lehetséges hardverproblémákat.
# 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)
A funkció ellenőrzi a rendszer aktuális CPU-használatát. Ha a CPU-használat meghaladja a százalékban kifejezett küszöbértéket, akkor naplóz egy üzenetet, amely jelzi a magas CPU-használatot, és egy figyelmeztető üzenetet nyomtat.
Memóriahasználat figyelése
Határozzon meg egy másik funkciót, amely figyeli a memóriahasználatot. A memóriahasználat rendszeres nyomon követésével megteheti memóriaszivárgás észlelése, erőforrás-éhes folyamatok és lehetséges szűk keresztmetszetek. Ez a módszer megakadályozza a rendszer lelassulását, összeomlását és leállását.
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)
A CPU-használat ellenőrzéséhez hasonlóan a magas memóriahasználat küszöbértékét állítja be. Ha a memóriahasználat meghaladja a küszöbértéket, naplózza és kinyomtat egy figyelmeztetést.
Lemezterület figyelése
Határozzon meg egy függvényt, amely figyeli a lemezterületet. A lemezterület rendelkezésre állásának folyamatos figyelésével megoldhatja az erőforrások kimerüléséből adódó lehetséges problémákat. A lemezterület kimerülése rendszerösszeomláshoz, adatsérüléshez és a szolgáltatás megszakadásához vezethet. A lemezterület-ellenőrzések segítenek biztosítani, hogy elegendő tárkapacitás álljon rendelkezésre.
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)
Ez a függvény egy megadott elérési út lemezterület-használatát vizsgálja. Az alapértelmezett elérési út a gyökérkönyvtár /. Ha a lemezterület a küszöb alá esik, naplózza és kinyomtat egy figyelmeztetést.
Hálózati forgalom figyelése
Határozzon meg egy végső funkciót, amely figyeli a rendszer adatfolyamát. Segít a hálózati forgalom váratlan kiugrásainak korai észlelésében, amelyek biztonsági résekre vagy infrastrukturális problémákra utalhatnak.
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)
A funkció a küldött és fogadott bájtok összegzésével figyeli a hálózati forgalmat. A küszöb bájtban van megadva. Ha a hálózati forgalom meghaladja a küszöbértéket, akkor naplózza és kinyomtat egy figyelmeztetést.
Monitoring Logic megvalósítása
Most, hogy megvannak az állapotfelmérés funkciói, egyszerűen hívja meg mindegyiket egy vezérlő funkcióból. Kinyomtathatja a kimenetet és naplózhat egy üzenetet minden alkalommal, amikor ez az általános ellenőrzés lefut:
# 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.")
Ez a funkció minden állapotellenőrzést futtat, egységes képet adva a rendszer állapotáról.
Automatikus ellenőrzések ütemezése és a program futtatása
A megfigyelés meghatározott időközönkénti automatizálásához használja az ütemezési könyvtárat. Szükség szerint módosíthatja az intervallumot.
# Schedule health checks to run every minute
schedule.every(1).minutes.do(run_health_checks)
Most futtassa a rendszerfelügyeleti folyamatot folyamatos hurokban.
# Main loop to run scheduled tasks
whileTrue:
schedule.run_pending()
time.sleep(1)
Ez a hurok folyamatosan ellenőrzi az ütemezett feladatokat, és végrehajtja azokat, amikor eljön az ideje. A program futtatásakor a kimenet a következő:
A program rögzíti a megfigyelési naplókat a system_monitor.log fájlt, és figyelmeztetést jelenít meg a terminálon.
A rendszerfigyelő program fejlesztése
A psutil nem csak ezeket a megfigyelési ellenőrzéseket támogatja. Hasonló megközelítéssel további felügyeleti funkciókat is hozzáadhat az igényeinek megfelelően.
A jelentéskészítési funkciót úgy is javíthatja, hogy e-maileket használjon ahelyett, hogy egyszerű üzenetet küldjön ki a konzolon.