slogan3

Ontwikkel een Bash of PowerShell Script voor Geautomatiseerde Server Incidentmelding en Alerting

description

Met deze prompt kan de gebruiker een script ontwikkelen dat proactief serverproblemen detecteert en direct meldingen verstuurt, waardoor reactietijden verbeteren en downtime wordt beperkt. Het script is volledig aanpasbaar aan specifieke incidenttypen en meldingskanalen, wat het effectiever maakt dan generieke oplossingen.

prompt

Help me een Bash of PowerShell script te maken dat serverincidenten automatisch detecteert en realtime meldingen verstuurt via <meldingsmethode> naar <ontvangers>. Incidenttypen ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een Bash-script dat serverincidenten automatisch detecteert en realtime meldingen verstuurt via e-mail. Het script houdt ook logboeken bij en bevat configuratie-opties voor meldingsdrempels en frequentie. ```bash #!/bin/bash # Configuratie CPU_THRESHOLD=90 # CPU-belasting in procenten DISK_THRESHOLD=10 # Beschikbare diskruimte in procenten CHECK_INTERVAL=300 # Controle-interval in seconden (bijv. 5 minuten) LAST_ALERT_FILE="/tmp/server_alerts_last_sent" LOG_FILE="/var/log/server_alerts.log" EMAIL="it-team@voorbeeld.com" # Functie om logs bij te werken log() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE" } # Functie om e-mail te versturen send_email() { local subject="$1" local body="$2" echo "$body" | mail -s "$subject" "$EMAIL" log "E-mail verzonden: $subject" } # Controle CPU-belasting check_cpu() { # Gemiddelde CPU-belasting over 1 minuut CPU_LOAD=$(top -bn1 | grep "load average:" | awk '{print $10}' | sed 's/,//') CPU_PERCENT=$(echo "$CPU_LOAD * 100 / $(nproc)" | bc -l | awk '{printf "%.0f", $1}') if [ "$CPU_PERCENT" -gt "$CPU_THRESHOLD" ]; then echo "$CPU_PERCENT" > /tmp/cpu_alert if [ ! -f "$LAST_ALERT_FILE" ] || [ "$(cat "$LAST_ALERT_FILE")" != "cpu" ] || [ $(( $(date +%s) - $(stat -c %Y "$LAST_ALERT_FILE") )) -ge "$CHECK_INTERVAL" ]; then send_email "CPU Alert" "CPU-belasting is hoog: ${CPU_PERCENT}%." echo "cpu" > "$LAST_ALERT_FILE" fi fi } # Controle schijfruimte check_disk() { # Controle op alle gemonteerde disks for mount_point in $(df --output=target | tail -n +2); do AVAILABLE=$(df "$mount_point" | awk 'NR==2 {print $4}') TOTAL=$(df -k "$mount_point" | awk 'NR==2 {print $2}') PERCENT_FREE=$(df "$mount_point" | awk 'NR==2 {print $5}' | sed 's/%//') PERCENT_USED=100-$PERCENT_FREE if [ "$PERCENT_FREE" -lt "$DISK_THRESHOLD" ]; then # Check of recent alert al is verstuurd ALERT_KEY="disk_${mount_point}" if [ ! -f "$LAST_ALERT_FILE" ] || [ "$(cat "$LAST_ALERT_FILE")" != "$ALERT_KEY" ] || [ $(( $(date +%s) - $(stat -c %Y "$LAST_ALERT_FILE") )) -ge "$CHECK_INTERVAL" ]; then send_email "Disk Space Alert" "Weinig beschikbare schijfruimte (${PERCENT_FREE}%) op mount point: $mount_point." echo "$ALERT_KEY" > "$LAST_ALERT_FILE" fi fi done } # Main loop while true; do check_cpu check_disk sleep "$CHECK_INTERVAL" done ``` **Gebruik:** - Pas de variabelen aan naar jouw wensen (drempels, interval, e-mail). - Zorg dat het script uitvoerbaar is: `chmod +x /path/naar/script.sh`. - Voer het script uit als root of met voldoende rechten. - Voor continue monitoring, kun je het script starten bij het opstarten of als een systemd-service. **Let op:** - Installeer `mail` of een andere mailcli (bijvoorbeeld `mailutils`) op je server. - Controleer of je server e-mail kan versturen. Wil je een PowerShell-versie of verdere aanpassingen?
provider: deepseek
model: deepseek-chat
Hier is een PowerShell script voor Windows servers dat aan uw vereisten voldoet: ```powershell # Server Incident Monitor Script # Configuratie-instellingen $Config = @{ EmailOntvanger = "it-team@voorbeeld.com" EmailAfzender = "server-monitor@voorbeeld.com" SMTPServer = "smtp.voorbeeld.com" LogBestand = "C:\Logs\server_alerts.log" # Monitor drempels CPU_Drempel = 90 SchijfRuimte_Drempel = 10 # Controle-interval in seconden ControleInterval = 300 } # E-mail functie function VerstuurAlert { param( [string]$Onderwerp, [string]$Bericht ) try { Send-MailMessage -From $Config.EmailAfzender ` -To $Config.EmailOntvanger ` -Subject $Onderwerp ` -Body $Bericht ` -SmtpServer $Config.SMTPServer LogBericht "ALERT_VERZONDEN: $Onderwerp" } catch { LogBericht "FOUT: Kon e-mail niet verzenden - $($_.Exception.Message)" } } # Logboek functie function LogBericht { param([string]$Bericht) $Tijdstempel = Get-Date -Format "yyyy-MM-dd HH:mm:ss" $LogEntry = "[$Tijdstempel] $Bericht" Write-Host $LogEntry Add-Content -Path $Config.LogBestand -Value $LogEntry } # CPU monitoring functie function ControleerCPU { $CPUUsage = (Get-Counter "\Processor(_Total)\% Processor Time" -SampleInterval 1 -MaxSamples 1).CounterSamples.CookedValue if ($CPUUsage -gt $Config.CPU_Drempel) { $Bericht = "HOGE CPU BELASTING: $([math]::Round($CPUUsage,2))% op server $env:COMPUTERNAME" VerstuurAlert -Onderwerp "CPU Alert - $env:COMPUTERNAME" -Bericht $Bericht LogBericht "INCIDENT: $Bericht" return $true } return $false } # Schijfruimte monitoring functie function ControleerSchijfruimte { $Schijven = Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" foreach ($Schijf in $Schijven) { $VrijPercentage = ($Schijf.FreeSpace / $Schijf.Size) * 100 if ($VrijPercentage -lt $Config.SchijfRuimte_Drempel) { $Bericht = "WEINIG SCHIJFRUIMTE: Schijf $($Schijf.DeviceID) heeft $([math]::Round($VrijPercentage,2))% vrij ruimte over" VerstuurAlert -Onderwerp "Schijfruimte Alert - $env:COMPUTERNAME" -Bericht $Bericht LogBericht "INCIDENT: $Bericht" return $true } } return $false } # Hoofd monitoring loop function Start-Monitoring { LogBericht "Monitoring gestart op server $env:COMPUTERNAME" while ($true) { try { $CPUIncident = ControleerCPU $SchijfIncident = ControleerSchijfruimte if (-not ($CPUIncident -or $SchijfIncident)) { LogBericht "STATUS: Alle systemen normaal" } } catch { LogBericht "FOUT: Monitoring fout - $($_.Exception.Message)" } Start-Sleep -Seconds $Config.ControleInterval } } # Script uitvoering try { # Controleer of log directory bestaat $LogDir = Split-Path -Path $Config.LogBestand -Parent if (-not (Test-Path $LogDir)) { New-Item -ItemType Directory -Path $LogDir -Force } Start-Monitoring } catch { Write-Host "Kritieke fout: $($_.Exception.Message)" exit 1 } ``` **Configuratie aanpassingen:** - Pas `$Config` variabelen aan naar uw omgeving - Zorg dat de SMTP-server correct is geconfigureerd - Wijzig het controle-interval indien nodig **Gebruik:** 1. Sla het script op als `ServerMonitor.ps1` 2. Voer uit als administrator: `powershell -File ServerMonitor.ps1` 3. Voor permanente monitoring: installeer als Windows Service **Logboek voorbeeld:** ``` [2024-01-15 14:30:45] Monitoring gestart op server SRV01 [2024-01-15 14:35:45] STATUS: Alle systemen normaal [2024-01-15 14:40:45] INCIDENT: HOGE CPU BELASTING: 95.5% op server SRV01 ``` Het script bevat alle gevraagde functionaliteit en is eenvoudig aan te passen voor extra monitoringscenario's.