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
...
tags
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.

