slogan3

Help me een Python-script implementeren dat systeemprestaties en resourcegebruik monitort.

description

Door dit script te implementeren, kunnen gebruikers proactief de prestaties van hun systeem beheren, resourceknelpunten voorkomen en tijdig meldingen ontvangen over kritieke problemen.

prompt

try_prompt

Ik wil een Python-script maken dat continu de prestaties en resourcegebruik van mijn systeem monitort, zoals CPU, geheugen en schijfruimte. Het script moet deze gegevens loggen op gespecificeerde intervallen en waarschuwingen gev ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een Python-script dat systematische monitoring uitvoert van CPU, geheugen en schijfruimte, en waarschuwingen geeft als bepaalde drempels worden overschreden. Het script gebruikt de bibliotheek `psutil` voor resourcegebruik en `logging` voor het loggen van gegevens. Voor meldingen kun je bijvoorbeeld gebruik maken van de `notify2` bibliotheek op Linux of `plyer` voor cross-platform meldingen. **Benodigdheden:** - Installeer de benodigde bibliotheken: ```bash pip install psutil notify2 ``` **Voor Windows of cross-platform meldingen:** Gebruik `plyer`: ```bash pip install plyer ``` --- ### Python-script: ```python import psutil import time import logging import notify2 # Voor Linux notificaties # of # from plyer import notification # Voor cross-platform notificaties # Configuratie INTERVAL = 60 # in seconden CPU_DREMPEL = 80 # in procenten MEMORY_DREMPEL = 80 # in procenten DISK_DREMPEL = 90 # in procenten # Logbestand instellen logging.basicConfig( filename='system_monitor.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s' ) # Initializeer notificaties (Linux) notify2.init("Systeemmonitor") def stuur_melding(bericht): # Voor Linux n = notify2.Notification("Systeemwaarschuwing", bericht) n.show() # Voor cross-platform: # notification.notify( # title='Systeemwaarschuwing', # message=bericht, # timeout=10 # ) def monitor(): while True: # CPU gebruik cpu_percent = psutil.cpu_percent(interval=1) # Geheugen gebruik geheugen = psutil.virtual_memory() mem_percent = geheugen.percent # Schijfgebruik disk = psutil.disk_usage('/') disk_percent = disk.percent # Log gegevens logging.info(f'CPU: {cpu_percent}%, Geheugen: {mem_percent}%, Schijf: {disk_percent}%') # Controleer drempels en geef waarschuwingen if cpu_percent > CPU_DREMPEL: bericht = f"CPU gebruik is hoog: {cpu_percent}%" logging.warning(bericht) stuur_melding(bericht) if mem_percent > MEMORY_DREMPEL: bericht = f"Geheugen gebruik is hoog: {mem_percent}%" logging.warning(bericht) stuur_melding(bericht) if disk_percent > DISK_DREMPEL: bericht = f"Schijfruimte is bijna vol: {disk_percent}%" logging.warning(bericht) stuur_melding(bericht) # Wacht tot het volgende interval time.sleep(INTERVAL - 1) if __name__ == "__main__": monitor() ``` --- ### Uitleg: - **Bibliotheken:** - `psutil`: voor het verzamelen van systeeminformatie zoals CPU, geheugen en diskgebruik. - `logging`: voor het loggen van gegevens en waarschuwingen. - `notify2` of `plyer`: voor het tonen van meldingen op je systeem. - **Werking:** - Het script voert elke 60 seconden een meting uit. - Het logt de prestaties in `system_monitor.log`. - Als een resource de ingestelde drempel overschrijdt, wordt een waarschuwing gelogd en een notificatie getoond. ### Opmerkingen: - Pas de drempels aan naar wens. - Voor Windows, vervang de notificatiefunctie door `plyer` of gebruik andere meldingsbibliotheken. - Zorg dat je de juiste rechten hebt om meldingen te tonen. Wil je dat ik de code verder aanpas of uitbreid met bijvoorbeeld e-mail waarschuwingen of grafieken?
provider: deepseek
model: deepseek-chat
Hier is een Python-script voor systeemmonitoring met de gevraagde specificaties: ```python import psutil import time import logging from datetime import datetime import smtplib from email.mime.text import MimeText # Configuratie MONITORING_INTERVAL = 60 # seconden CPU_WAARSCHUWING_DRUMPEL = 80 # percentage GEHEUGEN_WAARSCHUWING_DRUMPEL = 85 # percentage SCHIJF_WAARSCHUWING_DRUMPEL = 90 # percentage # E-mail configuratie (optioneel) EMAIL_INGESCHAKELD = False # Zet op True om e-mailwaarschuwingen in te schakelen SMTP_SERVER = "smtp.gmail.com" SMTP_PORT = 587 EMAIL_VAN = "jouw.email@gmail.com" EMAIL_NAAR = "ontvanger@email.com" EMAIL_WACHTWOORD = "jouw_wachtwoord" # Logging instellen logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler('systeem_monitor.log'), logging.StreamHandler() ] ) def stuur_email_waarschuwing(onderwerp, bericht): """Stuur een e-mailwaarschuwing""" if not EMAIL_INGESCHAKELD: return try: msg = MimeText(bericht) msg['Subject'] = onderwerp msg['From'] = EMAIL_VAN msg['To'] = EMAIL_NAAR server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT) server.starttls() server.login(EMAIL_VAN, EMAIL_WACHTWOORD) server.send_message(msg) server.quit() logging.info("E-mailwaarschuwing verzonden") except Exception as e: logging.error(f"Fout bij verzenden e-mail: {e}") def controleer_drempels(cpu_gebruik, geheugen_gebruik, schijf_gebruik): """Controleer of gebruik boven drempels komt en geef waarschuwingen""" waarschuwingen = [] if cpu_gebruik > CPU_WAARSCHUWING_DRUMPEL: waarschuwing = f"CPU gebruik te hoog: {cpu_gebruik}% (drempel: {CPU_WAARSCHUWING_DRUMPEL}%)" waarschuwingen.append(waarschuwing) logging.warning(waarschuwing) if geheugen_gebruik > GEHEUGEN_WAARSCHUWING_DRUMPEL: waarschuwing = f"Geheugen gebruik te hoog: {geheugen_gebruik}% (drempel: {GEHEUGEN_WAARSCHUWING_DRUMPEL}%)" waarschuwingen.append(waarschuwing) logging.warning(waarschuwing) if schijf_gebruik > SCHIJF_WAARSCHUWING_DRUMPEL: waarschuwing = f"Schijfruimte bijna vol: {schijf_gebruik}% (drempel: {SCHIJF_WAARSCHUWING_DRUMPEL}%)" waarschuwingen.append(waarschuwing) logging.warning(waarschuwing) # Stuur e-mail als er waarschuwingen zijn if waarschuwingen and EMAIL_INGESCHAKELD: onderwerp = "Systeem Waarschuwing - Hoge Resource Gebruik" bericht = "\n".join(waarschuwingen) stuur_email_waarschuwing(onderwerp, bericht) def monitor_systeem(): """Hoofdfunctie voor systeemmonitoring""" logging.info("Systeemmonitoring gestart...") try: while True: # Verzamel systeeminformatie cpu_gebruik = psutil.cpu_percent(interval=1) geheugen = psutil.virtual_memory() schijf = psutil.disk_usage('/') # Bereken percentages geheugen_gebruik = geheugen.percent schijf_gebruik = schijf.percent # Log de gegevens logging.info(f"CPU: {cpu_gebruik}% | Geheugen: {geheugen_gebruik}% | Schijf: {schijf_gebruik}%") # Controleer drempels controleer_drempels(cpu_gebruik, geheugen_gebruik, schijf_gebruik) # Wacht voor volgende meting time.sleep(MONITORING_INTERVAL) except KeyboardInterrupt: logging.info("Monitoring gestopt door gebruiker") except Exception as e: logging.error(f"Onverwachte fout: {e}") if __name__ == "__main__": monitor_systeem() ``` ## Benodigde bibliotheken: Installeer de vereiste bibliotheek: ```bash pip install psutil ``` ## Uitgebreide uitleg: ### 1. **psutil** bibliotheek: - `psutil.cpu_percent()` - CPU gebruik percentage - `psutil.virtual_memory()` - Geheugen informatie - `psutil.disk_usage('/')` - Schijfruimte gebruik ### 2. **Meldingen instellen:** **Logging (standaard):** - Alle gegevens worden gelogd naar `systeem_monitor.log` - Waarschuwingen verschijnen in console en logbestand **E-mail waarschuwingen (optioneel):** - Stel `EMAIL_INGESCHAKELD = True` - Configureer SMTP-instellingen voor je e-mailprovider - Waarschuwingen worden automatisch verzonden bij overschrijding drempels ### 3. **Uitvoeren:** ```bash python monitor_script.py ``` ### 4. **Aanvullende opties:** Voor desktop notificaties (Linux): ```python import subprocess def desktop_notificatie(bericht): subprocess.Popen(['notify-send', "Systeem Waarschuwing", bericht]) ``` Het script draait continu tot je het stopt met Ctrl+C en logt elke 60 seconden de systeemprestaties.