Met één enkele bibliotheek kunt u een groot aantal systeemgegevens monitoren en ervoor zorgen dat alles soepel verloopt.

De meeste organisaties zijn voor het uitvoeren van hun activiteiten sterk afhankelijk van hun IT-infrastructuur. Ongeplande systeemstoringen of prestatieverlies kunnen leiden tot verstoringen, financiële verliezen en reputatieschade.

Geautomatiseerde systeemgezondheidscontroles zijn van cruciaal belang om ervoor te zorgen dat de IT-infrastructuur stabiel en betrouwbaar blijft. Door kritische meetgegevens te monitoren en afwijkingen snel te detecteren, kunt u de downtime tot een minimum beperken.

Gezondheidscontroles definiëren

Het is essentieel om te definiëren welke gezondheidscontroles u op uw systeem wilt uitvoeren. U moet duidelijke criteria opstellen voor wat u gaat monitoren en waarom. Begin met het identificeren van de primaire doelen van uw systeem. Welke functies of diensten biedt het?

Stel vervolgens prestatiebenchmarks in op basis van historische gegevens en zorg ervoor dat uw gezondheidscontroles het efficiënte gebruik van systeembronnen beoordelen. Definieer ten slotte de drempelwaarden die op een probleem duiden. Welk percentage van het hulpbronnengebruik beschouwt u als hoog of laag? Op welk moment moet het systeem een ​​waarschuwing activeren?

instagram viewer

Bibliotheken kiezen en uw omgeving instellen

Om het systeemmonitoringproces in Python te automatiseren, hebt u de volgende bibliotheken nodig om u te helpen systeemstatistieken te verzamelen en vervolgens de controles te plannen.

  • psutil: dit is een platformonafhankelijke bibliotheek die een interface biedt voor het ophalen van informatie over het systeemgebruik (CPU, geheugen, schijven, netwerk, sensoren).
  • schema: deze bibliotheek biedt een eenvoudige manier om taken te plannen die met specifieke intervallen worden uitgevoerd.
  • tijd: Een ingebouwde Python-bibliotheek die u gaat gebruiken voor tijdgerelateerde bewerkingen.
  • loggen: nog een ingebouwde bibliotheek die u gaat gebruiken voor het maken van logboeken van de systeemgezondheidscontroles.

Begin met het opzetten van dingen door het creëren van een nieuwe virtuele Python-omgeving. Dit voorkomt mogelijke versiebibliotheekconflicten. Voer vervolgens de volgende terminalopdracht uit naar installeer de vereiste bibliotheken met Pip:

pip install psutil schedule

Zodra de bibliotheken op uw systeem zijn geïnstalleerd, is uw omgeving gereed.

De volledige broncode is beschikbaar in een GitHub-opslagplaats.

De vereiste bibliotheken importeren

Maak een nieuw script, monitoring.pyen begin met het importeren van de vereiste bibliotheken:

import psutil
import schedule
import time
import logging

Door de bibliotheken te importeren, kunt u de functionaliteit die ze bieden in uw code gebruiken.

Loggen en rapporteren

U hebt een manier nodig om de resultaten van uw gezondheidscontroles te registreren. Logboekregistratie is een essentieel hulpmiddel voor het vastleggen en bewaren van historische gebeurtenissen en gebeurtenissen problemen in uw code opsporen. Het speelt ook een cruciale rol bij prestatieanalyse.

Gebruik de ingebouwde logboekbibliotheek om uw logboeken voor dit project te maken. U kunt de logberichten opslaan in een bestand met de naam systeem_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)

Voor rapportage kunt u een waarschuwingsbericht op de console afdrukken, zodat u meteen op de hoogte wordt gesteld van eventuele problemen die aandacht vereisen.

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

De gezondheidscontrolefuncties zullen deze functies gebruiken om hun relevante bevindingen vast te leggen en te rapporteren.

Gezondheidscontrolefuncties creëren

Definieer voor elke statuscheck een functie die een specifieke test omvat die een cruciaal aspect van uw infrastructuur evalueert.

Bewaking van CPU-gebruik

Begin met het definiëren van een functie die het CPU-gebruik bewaakt. Dit zal dienen als een kritische indicator voor de algehele prestaties en het gebruik van bronnen van een systeem. Overmatig CPU-gebruik leidt tot systeemvertragingen, het niet reageren en zelfs crashes, waardoor essentiële services ernstig worden verstoord.

Door regelmatig het CPU-gebruik te controleren en de juiste drempelwaarden in te stellen, kunnen systeembeheerders prestatieknelpunten, resource-intensieve processen of potentiële hardwareproblemen identificeren.

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

De functie controleert het huidige CPU-gebruik van het systeem. Als het CPU-gebruik de drempel in percentage overschrijdt, wordt er een bericht geregistreerd dat een hoog CPU-gebruik aangeeft en wordt er een waarschuwingsbericht afgedrukt.

Controle van geheugengebruik

Definieer een andere functie die het geheugengebruik bewaakt. Door regelmatig het geheugengebruik bij te houden, kunt u dat doen geheugenlekken opsporen, processen die veel hulpbronnen vergen en potentiële knelpunten. Deze methode voorkomt systeemvertragingen, crashes en uitval.

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)

Net als bij de CPU-gebruikscontrole stelt u een drempelwaarde in voor hoog geheugengebruik. Als het geheugengebruik de drempel overschrijdt, wordt er een waarschuwing geregistreerd en afgedrukt.

Controle van schijfruimte

Definieer een functie die de schijfruimte bewaakt. Door voortdurend de beschikbaarheid van schijfruimte te monitoren, kunt u potentiële problemen aanpakken die voortkomen uit het uitputten van bronnen. Als u onvoldoende schijfruimte heeft, kan dit leiden tot systeemcrashes, gegevensbeschadiging en serviceonderbrekingen. Controles van de schijfruimte zorgen ervoor dat er voldoende opslagcapaciteit is.

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)

Deze functie onderzoekt het schijfruimtegebruik van een opgegeven pad. Het standaardpad is de hoofdmap /. Als de schijfruimte onder de drempel komt, wordt er een waarschuwing geregistreerd en afgedrukt.

Monitoring van netwerkverkeer

Definieer een laatste functie die de gegevensstroom van uw systeem bewaakt. Het zal helpen bij het vroegtijdig opsporen van onverwachte pieken in het netwerkverkeer, die een indicatie kunnen zijn voor beveiligingsinbreuken of infrastructuurproblemen.

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)

De functie bewaakt het netwerkverkeer door de verzonden en ontvangen bytes bij elkaar op te tellen. De drempelwaarde is in bytes. Als het netwerkverkeer de drempel overschrijdt, wordt er een waarschuwing geregistreerd en afgedrukt.

Monitoringlogica implementeren

Nu u over de statuscontrolefuncties beschikt, kunt u ze allemaal om de beurt aanroepen vanuit een controllerfunctie. Elke keer dat deze algemene controle wordt uitgevoerd, kunt u de uitvoer afdrukken en een bericht vastleggen:

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

Deze functie voert alle gezondheidscontroles uit en biedt een uniform beeld van de gezondheidsstatus van uw systeem.

Geautomatiseerde controles plannen en het programma uitvoeren

Om de monitoring op specifieke intervallen te automatiseren, maakt u gebruik van de planningsbibliotheek. U kunt het interval indien nodig aanpassen.

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

Voer nu het systeembewakingsproces in een continue lus uit.

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

Deze lus controleert voortdurend op geplande taken en voert deze uit wanneer het tijd is. Wanneer u het programma uitvoert, is de uitvoer als volgt:

Het programma registreert de monitoringlogboeken op het systeem_monitor.log bestand en geeft een waarschuwing weer op de terminal.

Het systeembewakingsprogramma bevorderen

Deze monitoringcontroles zijn niet de enige die psutil ondersteunt. U kunt meer bewakingsfuncties toevoegen via een vergelijkbare aanpak, afhankelijk van uw vereisten.

U kunt ook de rapportagefunctie verbeteren om e-mail te gebruiken in plaats van een eenvoudig bericht op de console uit te voeren.