Contents

Systeemmonitoring automatiseren met Python

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

Een geautomatiseerd systeem voor het uitvoeren van periodieke gezondheidsbeoordelingen is essentieel voor het waarborgen van de stabiliteit en betrouwbaarheid van de IT-infrastructuur van een organisatie. Door continu vitale indicatoren bij te houden en afwijkingen van normale patronen tijdig te identificeren, kan de kans op langere perioden van operationele onderbreking aanzienlijk worden verkleind.

Gezondheidscontroles definiëren

Om het welzijn van een bepaald systeem effectief te evalueren, is het noodzakelijk om te bepalen welke gezondheidscontroles noodzakelijk worden geacht. Dit houdt in dat er expliciete richtlijnen moeten worden opgesteld met betrekking tot de parameters die nauwlettend in de gaten moeten worden gehouden en dat de beweegredenen voor deze controles moeten worden gedefinieerd. Om dit proces te starten, moeten eerst de overkoepelende doelstellingen van het systeem in kwestie worden vastgesteld. Welke functionaliteiten of aanbiedingen levert het?

Om effectieve prestatiecijfers voor uw IT-infrastructuur vast te stellen, is het cruciaal om basisregels vast te stellen door trends in het systeemgebruik uit het verleden te analyseren. Hierdoor kunt u de juiste niveaus van resourcegebruik bepalen en potentiële knelpunten identificeren. Daarnaast kan het instellen van specifieke criteria voor wanneer waarschuwingen worden geactiveerd, beheerders helpen snel te reageren op problemen voordat ze escaleren. De drempelwaarden voor het beschouwen van resourcegebruik als hoog of laag kunnen variëren afhankelijk van factoren zoals werklastpatronen en beschikbare capaciteit. Het is essentieel om deze parameters zorgvuldig te overwegen en ze duidelijk over de teams te communiceren om optimale systeemprestaties te handhaven.

Bibliotheken kiezen en uw omgeving instellen

Om een geautomatiseerde systeemmonitoringoplossing met Python te implementeren, moet een set bibliotheken worden gebruikt voor het verzamelen van gegevens over systeemprestaties en het maken van regelmatige controlepunten. Deze bibliotheken maken het mogelijk om taken efficiënt uit te voeren en tegelijkertijd een betrouwbare prestatiebeoordeling te garanderen.

Psutil is een veelzijdige bibliotheek waarmee gebruikers gegevens kunnen verzamelen over systeemprestaties op verschillende platforms, waaronder CPU-gebruik, geheugentoewijzing, schijfactiviteit, netwerkbandbreedte en sensorgegevens.

Deze bibliotheek biedt een ongecompliceerde manier om te regelen dat ondernemingen op vooraf bepaalde tijdstippen worden uitgevoerd.

De standaardbibliotheek van Python bevat een ingebouwde module genaamd “time” die functionaliteiten biedt voor het beheren en manipuleren van tijdsgegevens, zoals het ophalen van de huidige datum en tijd, het berekenen van verstreken intervallen tussen twee punten in de tijd, het instellen van systeemklokken en meer. Deze module dient als een essentiële bron voor applicaties die tijdregistratiemogelijkheden nodig hebben binnen hun softwareframework.

De Python logging module dient als een ingebouwd hulpprogramma voor het genereren en onderhouden van logboekrecords, waarmee ontwikkelaars de prestaties en status van hun systemen kunnen volgen en bewaken door middel van georganiseerde registratie.

Maak om te beginnen een nieuwe virtuele Python-omgeving aan die mogelijke verschillen in bibliotheekversies tegengaat. Voer vervolgens de volgende terminalinstructie uit met ‘Pip’ om de benodigde bibliotheken te installeren.

 pip install psutil schedule

Zodra de benodigde bibliotheken met succes zijn geïnstalleerd en geconfigureerd binnen uw computeromgeving, kunt u ze met vertrouwen gebruiken om de beoogde functionaliteit te bereiken.

De volledige broncode is toegankelijk via eenGitHub repository, die gemakkelijk toegang biedt tot de bestanden en bronnen van het project voor verdere ontwikkeling of aanpassing.

De benodigde bibliotheken importeren

De ontwikkeling starten van een innovatief Python-script getiteld “monitoring.py” dat zal beginnen met het importeren van onmisbare modules en frameworks die nodig zijn voor de uitvoering ervan.

 import psutil
import schedule
import time
import logging 

Inderdaad, het importeren van deze bibliotheken maakt het mogelijk om hun respectievelijke functies te gebruiken in iemands codebase.

Vastleggen en rapporteren

Om de resultaten van uw gezondheidsonderzoeken effectief bij te houden, is het essentieel om een systeem op te zetten voor het vastleggen van dergelijke informatie. Deze praktijk dient niet alleen voor het documenteren en bewaren van een archief van voorvallen uit het verleden, maar vergemakkelijkt ook de identificatie en oplossing van eventuele problemen die zich binnen de code voordoen. Bovendien kan een grondige documentatie door middel van logging aanzienlijk bijdragen aan de evaluatie van de algehele efficiëntie.

Gebruik de ingebouwde logfaciliteit om logs te genereren voor deze onderneming. De logboekvermeldingen kunnen worden opgeslagen in een bestand met de naam “system_monitor.log”.

 # Function to log messages
def log_message(message):
    # Configure logging
    logging.basicConfig(filename='system_monitor.log', level=logging.INFO,
                       format='%(asctime)s - %(message)s')
    logging.info(message) 

Om onmiddellijke communicatie over dringende problemen te vergemakkelijken, wordt aanbevolen om een visuele indicatie in de vorm van een waarschuwingsbericht weer te geven op de console van het systeem zodat er onmiddellijk aandacht aan kan worden besteed.

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

De functies voor gezondheidscontrole maken gebruik van deze functies voor het vastleggen en verspreiden van relevante informatie.

Functies voor gezondheidscontroles creëren

Om effectieve gezondheidscontroles voor uw IT-infrastructuur te implementeren, wordt aanbevolen om aparte functies binnen uw monitoringsysteem te creëren die zich richten op het onderzoeken van cruciale aspecten van de prestaties en stabiliteit van uw netwerk. Door deze tests in speciale functies te isoleren, kunt u het welzijn van verschillende componenten effectiever volgen en potentiële problemen detecteren voordat ze escaleren tot grotere problemen.

CPU Usage Monitoring

De implementatie van een effectief monitoringmechanisme voor CPU-gebruik is van fundamenteel belang voor het meten van de operationele efficiëntie en de toewijzing van bronnen van een bepaald systeem. Het detecteren van hoge niveaus van CPU-gebruik kan helpen bij het identificeren van potentiële knelpunten of problemen die kunnen leiden tot verminderde prestaties, trage reacties en mogelijk systeemstoringen, wat cruciale diensten waar gebruikers op vertrouwen aanzienlijk kan schaden.

Door consistent CPU-gebruik te monitoren en geschikte drempelniveaus in te stellen, kunnen systeembeheerders prestatieproblemen, procedures die veel bronnen gebruiken of vermoedelijke hardwareproblemen lokaliseren door afwijkingen van verwachte gedragspatronen te identificeren.

 # Health check functions
def check_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 gegeven functie controleert het huidige gebruik van de centrale verwerkingseenheid (CPU) in het systeem. Als het CPU-gebruik een vooraf bepaalde drempelwaarde overschrijdt, uitgedrukt als een percentage, registreert de functie een melding van het verhoogde CPU-gebruik en geeft deze een waarschuwingsbericht weer op het scherm.

Controle geheugengebruik

De uitvinding biedt verder een mechanisme voor het controleren van geheugengebruik door middel van een extra functie. Door het geheugengebruik regelmatig bij te houden kunnen geheugenlekken worden opgespoord, resource-intensieve processen worden geïdentificeerd en potentiële knelpunten worden blootgelegd. Door deze aanpak te implementeren is het mogelijk om systeemvertragingen, crashes en uitval als gevolg van overmatig geheugengebruik of inefficiënt gebruik van bronnen te voorkomen.

 def check_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) 

Op een manier die vergelijkbaar is met het monitoren van CPU-gebruik, wordt een vooraf bepaalde drempel ingesteld voor verhoogde niveaus van geheugengebruik. Telkens wanneer de accumulatie van geheugen deze benchmark bereikt of overschrijdt, wordt dit geregistreerd en wordt een melding ter controle verzonden.

Schijfruimtebewaking

Er moet een hulpprogramma worden geïmplementeerd om consequent de resterende schijfruimte te evalueren.Door de beschikbare schijfruimte voortdurend te controleren, kunnen mogelijke complicaties als gevolg van onvoldoende bronnen worden beperkt. Onvoldoende schijfruimte kan leiden tot systeemstoringen, corruptie van informatie en onderbroken diensten. Periodieke beoordelingen van schijfruimte zorgen voor voldoende opslagcapaciteit.

 def check_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 de toegewezen opslagcapaciteit die is gekoppeld aan een aangewezen bestandspad. Standaard omvat de locatie die wordt beoordeeld de primaire directory die wordt vertegenwoordigd door de symbolische weergave “/”. In het geval dat de hoeveelheid beschikbare ruimte binnen dit gebied afneemt tot een vooraf bepaald niveau, genereert het systeem zowel een logboekvermelding als een hoorbare waarschuwingsmelding.

Netwerkverkeer bewaking

Integreer een afsluitende functie om de gegevensstroom van je systeem te bewaken met als doel potentiële afwijkingen in netwerkactiviteit in een vroeg stadium te identificeren. Dergelijke afwijkingen kunnen duiden op inbraken in de beveiliging of technische afwijkingen en kunnen snelle herstelmaatregelen vergemakkelijken.

 def check_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 bovengenoemde functionaliteit houdt netwerkactiviteit bij door de totale hoeveelheid verzonden en ontvangen bytes te berekenen. Deze metriek wordt uitgedrukt in termen van bytemetingen. Als het volume van het netwerkverkeer deze vooraf gedefinieerde limiet overschrijdt, wordt een logboekvermelding gegenereerd en een melding weergegeven om dit aan te geven.

Implementatie van bewakingslogica

Het opnemen van deze functies voor gezondheidscontrole in een aangewezen controllerfunctie is een effectieve aanpak. Door ze opeenvolgend uit te voeren, kan relevante informatie worden afgedrukt en kunnen berichten worden gelogd tijdens elke iteratie van het uitgebreide beoordelingsproces.

 # Function to run health checks
def run_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 specifieke bewerking voert een geaggregeerde beoordeling uit van het algehele welzijn van uw infrastructuur door meerdere gezondheidscontroles op een samenhangende en uitgebreide manier uit te voeren, waardoor een geconsolideerd overzicht wordt gepresenteerd van de huidige staat van de vitaliteit van uw systeem.

Geautomatiseerde controles plannen en het programma uitvoeren

Gebruik de bibliotheek Schedule om automatische bewaking op vooraf bepaalde tijdstippen mogelijk te maken. Dit biedt flexibiliteit bij het instellen van de frequentie van updates zoals vereist.

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

Om de prestaties van uw computer voortdurend te bewaken, is het noodzakelijk om het systeembewakingsproces doorlopend uit te voeren.

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

De bovengenoemde lus gaat door met het onderzoeken van geplande taken en voert de taken uit die op de vooraf bepaalde intervallen moeten worden uitgevoerd.Na het uitvoeren van de software toont het scherm de volgende resultaten:

/nl/images/how-to-automate-system-monitoring-using-python-output.jpg

De software houdt een logboek bij van de bewakingsactiviteiten in het bestand system\_monitor.log en genereert tegelijkertijd een waarschuwing die wordt weergegeven op de opdrachtregelinterface.

Het systeembewakingsprogramma uitbreiden

Psutil biedt extra bewakingsmogelijkheden die verder gaan dan de mogelijkheden die hier worden genoemd, zodat het kan worden aangepast aan specifieke behoeften en voorkeuren.

Een mogelijke manier om de functionaliteit van de rapportagefunctie te verbeteren is door een e-mailnotificatiesysteem op te nemen, in plaats van alleen berichten weer te geven op de opdrachtregelinterface. Hierdoor zouden gebruikers realtime updates en waarschuwingen over de prestaties van hun website direct in hun inbox kunnen ontvangen, waardoor ze eventuele problemen makkelijker kunnen controleren en aanpakken.