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?

instagram viewer

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.