slogan3

Ontwikkel een Bash of PowerShell Script voor Geautomatiseerde Serverprestatie Benchmarking

description

Met deze prompt kun je eenvoudig een script ontwikkelen dat de prestaties van je server automatisch meet en rapporteert. Dit helpt je om trends te monitoren, bottlenecks vroegtijdig te detecteren en de serverprestaties effectief te beheren zonder handmatige inspanning. Het is een praktische oplossing die tijd bespaart en de betrouwbaarheid van je serverbeheer verhoogt.

prompt

Help me een Bash of PowerShell script te maken dat automatische prestatiebenchmarks uitvoert op mijn server. Benchmark parameters: <voer de te meten prestatieparameters in zoals CPU, geheugen, schijfsnelheid> Testduur: <voer de duur van de ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een Bash-script dat automatische prestatiebenchmarks uitvoert op je server, inclusief CPU- en geheugenbelasting, en dat automatisch wordt gepland om dagelijks om 02:00 uur. **Stap 1: Bash-script maken (bijvoorbeeld: `/home/user/benchmark.sh`)** ```bash #!/bin/bash # Directory voor rapporten REPORT_DIR="/var/log/benchmark" mkdir -p "$REPORT_DIR" # Tijdstempel TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S") # Bestandsnaam REPORT_FILE="$REPORT_DIR/benchmark_$TIMESTAMP.txt" # Start van de test echo "Benchmark rapport - $TIMESTAMP" > "$REPORT_FILE" echo "====================================" >> "$REPORT_FILE" echo "" >> "$REPORT_FILE" # CPU belasting test (bijv. 1 uur met stress-ng) echo "CPU belasting test (1 uur)..." >> "$REPORT_FILE" stress-ng --cpu 4 --timeout 1h --metrics >> "$REPORT_FILE" 2>&1 # Geheugen belasting test (bijv. 1 uur met stress-ng) echo "" >> "$REPORT_FILE" echo "Geheugen belasting test (1 uur)..." >> "$REPORT_FILE" stress-ng --vm 2 --vm-bytes 2G --timeout 1h --metrics >> "$REPORT_FILE" 2>&1 # Eventueel extra tests kunnen worden toegevoegd echo "" >> "$REPORT_FILE" echo "Test voltooid." >> "$REPORT_FILE" ``` **Stap 2: Script uitvoerbaar maken** ```bash chmod +x /home/user/benchmark.sh ``` **Stap 3: Cron-job instellen voor dagelijkse uitvoering** Voeg de volgende regel toe aan je crontab (bijvoorbeeld via `crontab -e`): ```cron 0 2 * * * /home/user/benchmark.sh ``` Dit zorgt dat het script elke dag om 02:00 uur wordt uitgevoerd. **Opmerking:** - Zorg dat `stress-ng` geïnstalleerd is: `sudo apt-get install stress-ng` (Debian/Ubuntu). - Pas het aantal CPU-kernen (`--cpu 4`) en het geheugengebruik (`--vm-bytes 2G`) aan op basis van je servercapaciteit. - Controleer of de gebruiker die de cron-job instelt voldoende rechten heeft. Wil je dat ik ook een PowerShell-versie maak voor Windows?
provider: deepseek
model: deepseek-chat
Hier is een PowerShell script voor Windows Server dat automatische prestatiebenchmarks uitvoert: ```powershell # benchmark-server.ps1 # Dagelijkse prestatiebenchmarks - uitgevoerd om 02:00 uur param( [int]$TestDuur = 3600, # 1 uur in seconden [string]$RapportPad = "C:\BenchmarkRapporten\" ) # Maak rapport directory aan New-Item -ItemType Directory -Force -Path $RapportPad | Out-Null $StartTijd = Get-Date $RapportBestand = "$RapportPad\benchmark_$(Get-Date -Format 'yyyyMMdd_HHmmss').txt" # Schrijf benchmark header "=== SERVER PRESTATIE BENCHMARK RAPPORT ===" | Out-File -FilePath $RapportBestand -Encoding UTF8 "Starttijd: $StartTijd" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 "Testduur: $TestDuur seconden (1 uur)" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 "`n" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 # CPU Benchmark functie function Test-CPUPrestatie { param([int]$DuurSeconden) "CPU Benchmark gestart..." | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 $CPUResultaten = @() $EindTijd = (Get-Date).AddSeconds($DuurSeconden) while ((Get-Date) -lt $EindTijd) { $CPUUsage = (Get-Counter "\Processor(_Total)\% Processor Time" -SampleInterval 1 -MaxSamples 1).CounterSamples.CookedValue $CPUResultaten += [PSCustomObject]@{ Tijd = Get-Date -Format "HH:mm:ss" CPUUsage = [math]::Round($CPUUsage, 2) } Start-Sleep -Seconds 5 # Meet elke 5 seconden } return $CPUResultaten } # Geheugen Benchmark functie function Test-GeheugenPrestatie { param([int]$DuurSeconden) "Geheugen Benchmark gestart..." | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 $GeheugenResultaten = @() $EindTijd = (Get-Date).AddSeconds($DuurSeconden) while ((Get-Date) -lt $EindTijd) { $GeheugenUsage = (Get-Counter "\Memory\% Committed Bytes In Use" -SampleInterval 1 -MaxSamples 1).CounterSamples.CookedValue $BeschikbaarGeheugen = (Get-Counter "\Memory\Available MBytes" -SampleInterval 1 -MaxSamples 1).CounterSamples.CookedValue $GeheugenResultaten += [PSCustomObject]@{ Tijd = Get-Date -Format "HH:mm:ss" GeheugenUsage = [math]::Round($GeheugenUsage, 2) BeschikbaarMB = $BeschikbaarGeheugen } Start-Sleep -Seconds 10 # Meet elke 10 seconden } return $GeheugenResultaten } # Uitvoeren benchmarks "=== CPU PRESTATIES ===" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 $CPUData = Test-CPUPrestatie -DuurSeconden $TestDuur # Bereken CPU statistieken $GemCPU = ($CPUData.CPUUsage | Measure-Object -Average).Average $MaxCPU = ($CPUData.CPUUsage | Measure-Object -Maximum).Maximum $MinCPU = ($CPUData.CPUUsage | Measure-Object -Minimum).Minimum "Gemiddeld CPU gebruik: $([math]::Round($GemCPU, 2))%" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 "Maximum CPU gebruik: $([math]::Round($MaxCPU, 2))%" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 "Minimum CPU gebruik: $([math]::Round($MinCPU, 2))%" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 "`n" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 "=== GEHEUGEN PRESTATIES ===" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 $GeheugenData = Test-GeheugenPrestatie -DuurSeconden $TestDuur # Bereken geheugen statistieken $GemGeheugen = ($GeheugenData.GeheugenUsage | Measure-Object -Average).Average $MaxGeheugen = ($GeheugenData.GeheugenUsage | Measure-Object -Maximum).Maximum $GemBeschikbaar = ($GeheugenData.BeschikbaarMB | Measure-Object -Average).Average "Gemiddeld geheugen gebruik: $([math]::Round($GemGeheugen, 2))%" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 "Maximum geheugen gebruik: $([math]::Round($MaxGeheugen, 2))%" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 "Gemiddeld beschikbaar geheugen: $([math]::Round($GemBeschikbaar, 2)) MB" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 "`n" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 # Systeeminformatie "Systeeminformatie:" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 "Computer naam: $env:COMPUTERNAME" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 "OS Versie: $(Get-WmiObject Win32_OperatingSystem).Version" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 "Processor: $(Get-WmiObject Win32_Processor).Name" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 "Totaal geheugen: $([math]::Round((Get-WmiObject Win32_ComputerSystem).TotalPhysicalMemory/1GB, 2)) GB" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 $EindTijd = Get-Date "Eindtijd: $EindTijd" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 "Totale benchmark duur: $((New-TimeSpan -Start $StartTijd -End $EindTijd).TotalMinutes) minuten" | Out-File -FilePath $RapportBestand -Append -Encoding UTF8 Write-Host "Benchmark voltooid! Rapport opgeslagen in: $RapportBestand" ``` **Planning instellen via Taakplanner:** 1. Open **Taakplanner** (Task Scheduler) 2. Klik op **Taak maken...** (Create Basic Task) 3. Naam: `Dagelijkse Server Benchmark` 4. Trigger: **Dagelijks** om **02:00** 5. Actie: **Programma starten** 6. Programma: `powershell.exe` 7. Argumenten: `-ExecutionPolicy Bypass -File "C:\pad\naar\benchmark-server.ps1"` **Voor Linux/Bash gebruikers:** ```bash #!/bin/bash # benchmark-server.sh TEST_DUUR=3600 # 1 uur RAPPORT_DIR="/var/benchmark/rapporten/" LOG_BESTAND="$RAPPORT_DIR/benchmark_$(date +%Y%m%d_%H%M%S).log" mkdir -p "$RAPPORT_DIR" # CPU benchmark met mpstat (sysstat package nodig) cpu_benchmark() { echo "=== CPU PRESTATIES ===" >> "$LOG_BESTAND" mpstat 5 $((TEST_DUUR/5)) >> "$LOG_BESTAND" 2>&1 & CPU_PID=$! wait $CPU_PID } # Geheugen benchmark geheugen_benchmark() { echo "=== GEHEUGEN PRESTATIES ===" >> "$LOG_BESTAND" vmstat 10 $((TEST_DUUR/10)) >> "$LOG_BESTAND" 2>&1 } # Uitvoeren { echo "=== SERVER PRESTATIE BENCHMARK RAPPORT ===" echo "Starttijd: $(date)" echo "Testduur: $TEST_DUUR seconden" echo "" } > "$LOG_BESTAND" cpu_benchmark & geheugen_benchmark & wait echo "Benchmark voltooid: $LOG_BESTAND" ``` **Cron job voor planning:** ```bash # Voeg toe aan crontab: crontab -e 0 2 * * * /pad/naar/benchmark-server.sh ``` Het script monitort CPU en geheugengebruik gedurende 1 uur en genereert een gedetailleerd rapport.