slogan3

Ontwikkel een Bash of PowerShell Script voor Geautomatiseerde Server Resource Monitoring met Alerting

description

Met deze prompt kun je een script ontwikkelen dat je helpt serverresources proactief te bewaken en snel te reageren op problemen door automatische alerts. Dit voorkomt overbelasting, verbetert de stabiliteit van je servers en bespaart handmatig toezicht. Het is specifiek gericht op realtime monitoring met configureerbare drempels en alertmethoden, wat het veelzijdig en aanpasbaar maakt.

prompt

Help me een Bash of PowerShell script te maken dat continu server resources bewaakt, zoals CPU-, geheugen- en schijfgebruik, en automatisch waarschuwingen verstuurt wanneer drempelwaarden worden overschreden. Welke resources wil ik monitoren: <voer de te monitoren resources in zoals CPU, geheugen, schijfruimte> Drempelwaarden voor waarschuwingen: <bes ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een Bash-script dat continu serverresources bewaakt, waarschuwingen verstuurt via e-mail bij overschrijding van de drempelwaarden, en logs bijhoudt. **Benodigdheden:** - `mail` of `sendmail` voor het versturen van e-mails. - Toegang tot `/proc` en `df` voor monitoring. - Cron of een andere scheduler om het script periodiek uit te voeren. **Script:** ```bash #!/bin/bash # Configuratie LOGFILE="/var/log/server_monitor.log" ADMIN_EMAIL="admin@example.com" CPU_THRESHOLD=85 MEMORY_THRESHOLD=90 DISK_THRESHOLD=80 DISK_MOUNT="/" # Functie voor het loggen log() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOGFILE" } # CPU gebruik ophalen (percentage van CPU dat wordt gebruikt door gebruikers) cpu_idle=$(grep 'cpu ' /proc/stat | awk '{print $5+$6}' ) cpu_total=$(grep 'cpu ' /proc/stat | awk '{sum=0; for(i=2;i<=10;i++) sum+=$i; print sum}') cpu_usage=$(( ( (cpu_total - cpu_idle) * 100 ) / cpu_total )) # Geheugen gebruik ophalen mem_total=$(grep MemTotal /proc/meminfo | awk '{print $2}') mem_available=$(grep MemAvailable /proc/meminfo | awk '{print $2}') mem_used=$((mem_total - mem_available)) mem_usage=$(( (mem_used * 100) / mem_total )) # Schijfgebruik ophalen disk_usage=$(df -h "$DISK_MOUNT" | awk 'NR==2 {print $5}' | sed 's/%//') # Boodschappen verzamelen alerts="" # CPU check if [ "$cpu_usage" -gt "$CPU_THRESHOLD" ]; then alerts+="CPU-gebruik is hoog: ${cpu_usage}%\n" fi # Geheugen check if [ "$mem_usage" -gt "$MEMORY_THRESHOLD" ]; then alerts+="Geheugengebruik is hoog: ${mem_usage}%\n" fi # Schijfgebruik check if [ "$disk_usage" -gt "$DISK_THRESHOLD" ]; then alerts+="Schijfgebruik op $DISK_MOUNT is hoog: ${disk_usage}%\n" fi # Verstuur e-mail als er waarschuwingen zijn if [ -n "$alerts" ]; then echo -e "Waarschuwingen op de server:\n$alerts" | mail -s "Server Resource Alert" "$ADMIN_EMAIL" log "Waarschuwing verstuurd:\n$alerts" else log "Geen waarschuwingen. Resources binnen de drempelwaarden." fi ``` **Gebruik:** 1. Sla dit script op als bijvoorbeeld `/usr/local/bin/server_monitor.sh`. 2. Maak het uitvoerbaar: `chmod +x /usr/local/bin/server_monitor.sh`. 3. Plan het in cron om bijvoorbeeld elke 5 minuten uit te voeren: ```bash crontab -e ``` Voeg toe: ```bash */5 * * * * /usr/local/bin/server_monitor.sh ``` **Let op:** - Zorg dat `mail` correct is geconfigureerd op je server. - Pas de paden en drempelwaarden aan indien nodig. - Controleer de logbestanden regelmatig voor verdere analyse. Wil je dit script in PowerShell?
provider: deepseek
model: deepseek-chat
Hier is een Bash-script dat voldoet aan uw vereisten: ```bash #!/bin/bash # Configuratie THRESHOLD_CPU=85 THRESHOLD_MEMORY=90 THRESHOLD_DISK=80 ALERT_EMAIL="admin@example.com" LOG_FILE="/var/log/server_monitor.log" # Functie om logboekvermeldingen te maken log_message() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE" } # Functie om e-mail waarschuwing te versturen send_alert() { local subject="Server Resource Waarschuwing: $1" local message="Waarschuwing: $2 heeft drempelwaarde overschreden op $(date '+%Y-%m-%d %H:%M:%S').\nHuidige waarde: $3%\nDrempel: $4%" echo -e "$message" | mail -s "$subject" "$ALERT_EMAIL" log_message "ALERT: $subject - Waarde: $3%" } # Functie om CPU-gebruik te controleren check_cpu() { local cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1) cpu_usage=${cpu_usage%.*} if [ "$cpu_usage" -gt "$THRESHOLD_CPU" ]; then send_alert "CPU" "CPU-gebruik" "$cpu_usage" "$THRESHOLD_CPU" fi } # Functie om geheugengebruik te controleren check_memory() { local mem_total=$(free | grep Mem | awk '{print $2}') local mem_used=$(free | grep Mem | awk '{print $3}') local mem_usage=$((mem_used * 100 / mem_total)) if [ "$mem_usage" -gt "$THRESHOLD_MEMORY" ]; then send_alert "Geheugen" "Geheugengebruik" "$mem_usage" "$THRESHOLD_MEMORY" fi } # Functie om schijfgebruik te controleren check_disk() { local disk_usage=$(df / | awk 'NR==2 {print $5}' | cut -d'%' -f1) if [ "$disk_usage" -gt "$THRESHOLD_DISK" ]; then send_alert "Schijf" "Schijfgebruik" "$disk_usage" "$THRESHOLD_DISK" fi } # Hoofd monitoring loop log_message "Server monitoring gestart" while true; do check_cpu check_memory check_disk sleep 60 # Wacht 60 seconden tussen checks done ``` **Installatie-instructies:** 1. **Script opslaan:** ```bash sudo nano /usr/local/bin/server_monitor.sh ``` 2. **Script uitvoerbaar maken:** ```bash sudo chmod +x /usr/local/bin/server_monitor.sh ``` 3. **E-mail configureren (vereist postfix/mailutils):** ```bash sudo apt-get install mailutils postfix ``` 4. **Log directory aanmaken:** ```bash sudo mkdir -p /var/log sudo touch /var/log/server_monitor.log ``` 5. **Script als service uitvoeren:** ```bash # Voeg toe aan crontab voor automatische start (crontab -l 2>/dev/null; echo "@reboot /usr/local/bin/server_monitor.sh") | crontab - ``` **Alternatieve PowerShell versie voor Windows:** ```powershell # server_monitor.ps1 $ThresholdCPU = 85 $ThresholdMemory = 90 $ThresholdDisk = 80 $AlertEmail = "admin@example.com" $LogFile = "C:\Logs\server_monitor.log" while ($true) { $Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" # CPU check $CPU = (Get-Counter "\Processor(_Total)\% Processor Time").CounterSamples.CookedValue if ($CPU -gt $ThresholdCPU) { "$Timestamp - ALERT: CPU usage $CPU% > $ThresholdCPU%" | Out-File $LogFile -Append Send-MailMessage -To $AlertEmail -Subject "CPU Alert" -Body "CPU usage is $CPU%" -SmtpServer "localhost" } # Memory check $Memory = (Get-Counter "\Memory\% Committed Bytes In Use").CounterSamples.CookedValue if ($Memory -gt $ThresholdMemory) { "$Timestamp - ALERT: Memory usage $Memory% > $ThresholdMemory%" | Out-File $LogFile -Append Send-MailMessage -To $AlertEmail -Subject "Memory Alert" -Body "Memory usage is $Memory%" -SmtpServer "localhost" } # Disk check $Disk = (Get-Counter "\LogicalDisk(C:)\% Free Space").CounterSamples.CookedValue $DiskUsage = 100 - $Disk if ($DiskUsage -gt $ThresholdDisk) { "$Timestamp - ALERT: Disk usage $DiskUsage% > $ThresholdDisk%" | Out-File $LogFile -Append Send-MailMessage -To $AlertEmail -Subject "Disk Alert" -Body "Disk usage is $DiskUsage%" -SmtpServer "localhost" } Start-Sleep -Seconds 60 } ``` **Belangrijke opmerkingen:** - Zorg dat e-mail services correct zijn geconfigureerd - Test de drempelwaarden in uw specifieke omgeving - Overweeg het gebruik van monitoring tools zoals Nagios of Zabbix voor productie-omgevingen - Pas de slaaptijd aan naar behoefte (huidig: 60 seconden)