Zum Inhalt

Plotter Cheatsheet

- :material-content-copy: **[Kopieren auf Clipboard](https://__LINK_0_____** - :material-file-pdf-box:*[PDF herunterladen](__LINK_0____**

Überblick

PingPlotter ist ein leistungsstarkes Netzwerk-Fehlersuche und Monitoring-Tool, das die Funktionalität von Ping und Traceroute mit fortschrittlichen Visualisierungsfunktionen kombiniert. Es bietet Echtzeit-Netzwerk-Performance-Überwachung, hilft, Netzwerkprobleme, Engpässe und intermittierende Probleme zu identifizieren, die traditionelle Werkzeuge vermissen könnten.

Schlüsselmerkmale

  • *Visual Traceroute: Grafische Darstellung von Netzwerkpfaden und Performance
  • ** Ständige Überwachung** Langzeit-Netzwerk-Performance-Tracking
  • *Packet Loss Detection: Intermittierende Verbindungsprobleme identifizieren
  • *Latency Analysis: Detaillierte Zeitmessungen
  • *Historische Daten: Speichern und Analysieren der Netzwerkleistung im Laufe der Zeit
  • *Alerting System: Meldungen für Netzprobleme und -schwellen
  • *Multi-Target Monitoring: Mehrere Ziele gleichzeitig überwachen
  • Reporting: Detaillierte Netzwerkleistungsberichte erstellen

Installation

Windows Installation

```powershell

Download PingPlotter from official website

https://www.pingplotter.com/download

Silent installation (Pro/Professional versions)

PingPlotterSetup.exe /S /v"/qn"

Standard installation

1. Download installer

2. Run as administrator

3. Follow installation wizard

4. Enter license key (for paid versions)

Verify installation

Get-Process | Where-Object {$_.ProcessName -eq "PingPlotter"}

Check installation directory

Get-ChildItem "C:\Program Files\PingPlotter Pro" ```_

Installation der Kommandozeile

```bash

Using Chocolatey (Windows)

choco install pingplotter

Using Winget (Windows)

winget install PingPlotter.PingPlotter

Verify installation

pingplotter --version ```_

Lizenzkonfiguration

```powershell

Configure license (Pro/Professional)

Help → Enter License Key

Or via command line:

pingplotter.exe -license "YOUR-LICENSE-KEY"

Check license status

pingplotter.exe -license-info

Offline activation (air-gapped systems)

1. Generate activation request

pingplotter.exe -activation-request > activation_request.txt

2. Submit request to PingPlotter support

3. Apply activation response

pingplotter.exe -activation-response activation_response.txt ```_

Basisnutzung

Netzwerküberwachung starten

```bash

Launch PingPlotter GUI

pingplotter.exe

Command line monitoring

pingplotter.exe -target google.com -samples 100

Monitor specific IP address

pingplotter.exe -target 8.8.8.8 -interval 2.5

Monitor with custom packet size

pingplotter.exe -target example.com -packetsize 1024

Save results to file

pingplotter.exe -target google.com -samples 50 -output results.pp2 ```_

GUI Basic Operations

```powershell

Basic monitoring setup

1. Enter target address in "Address to trace" field

2. Click "Start" button

3. Monitor real-time results in timeline graph

Configure monitoring parameters

Edit → Preferences → Trace Options

- Trace Interval: 2.5 seconds (default)

- Packet Size: 32 bytes (default)

- Timeout: 3000ms (default)

- Max Hops: 30 (default)

Multiple target monitoring

File → New Target

Enter additional target addresses

Each target gets separate timeline

Save monitoring session

File → Save As → session.pp2

Load previous session

File → Open → session.pp2

```_

Zielkonfiguration

```bash

DNS name resolution

pingplotter.exe -target www.example.com

IPv4 address

pingplotter.exe -target 192.168.1.1

IPv6 address

pingplotter.exe -target 2001:4860:4860::8888

Custom port (for TCP traces)

pingplotter.exe -target example.com:80 -protocol tcp

Multiple targets in batch file

echo "google.com" > targets.txt echo "cloudflare.com" >> targets.txt echo "8.8.8.8" >> targets.txt pingplotter.exe -targetfile targets.txt ```_

Erweiterte Konfiguration

Trace Optionen

```powershell

Advanced trace configuration

Edit → Preferences → Trace Options

Packet settings

$traceConfig = @{ PacketSize = 64 # Bytes (32-1472) TraceInterval = 1.0 # Seconds (0.5-3600) Timeout = 5000 # Milliseconds MaxHops = 25 # Maximum trace hops Protocol = "ICMP" # ICMP, UDP, TCP }

DNS settings

$dnsConfig = @{ ReverseDNS = $true # Resolve IP to hostname DNSTimeout = 2000 # DNS resolution timeout PreferIPv4 = $true # IPv4 preference UseSystemDNS = $true # Use system DNS servers }

Performance settings

$perfConfig = @{ HighResolution = $true # High-resolution timing CPUPriority = "Normal" # Process priority NetworkBuffer = 8192 # Network buffer size MaxSamples = 10000 # Maximum samples to store } ```_

Konfiguration aktivieren

```powershell

Configure alerts

Tools → Alerts

Latency alert

$latencyAlert = @{ Name = "High Latency Alert" Condition = "Average latency > 200ms" Duration = "5 minutes" Action = "Email notification" Recipients = "admin@company.com" }

Packet loss alert

$packetLossAlert = @{ Name = "Packet Loss Alert" Condition = "Packet loss > 5%" Duration = "2 minutes" Action = "SNMP trap" Community = "public" Target = "192.168.1.100" }

Outage alert

$outageAlert = @{ Name = "Network Outage" Condition = "100% packet loss" Duration = "30 seconds" Action = "Run script" Script = "C:\Scripts\network_outage.bat" }

Email configuration

$emailConfig = @{ SMTPServer = "smtp.company.com" Port = 587 Username = "alerts@company.com" Password = "encrypted_password" SSL = $true From = "pingplotter@company.com" } ```_

Multi-Target Monitoring

```bash

Configure multiple targets

File → Multi-Target List

Create target list file

cat > monitoring_targets.txt << EOF

Critical Infrastructure

google.com,Primary DNS 8.8.8.8,Google DNS cloudflare.com,CDN Provider 192.168.1.1,Gateway Router 10.0.0.1,Internal Server EOF

Load target list

pingplotter.exe -targetfile monitoring_targets.txt

Automated target management

pingplotter.exe -target-add "new-server.com" pingplotter.exe -target-remove "old-server.com" pingplotter.exe -target-list

Group targets by category

Infrastructure group

pingplotter.exe -group "Infrastructure" -target-add "router.company.com" pingplotter.exe -group "Infrastructure" -target-add "switch.company.com"

External services group

pingplotter.exe -group "External" -target-add "api.service.com" pingplotter.exe -group "External" -target-add "cdn.provider.com" ```_

Datenanalyse und Visualisierung

Zeitanalyse

```powershell

Timeline graph interpretation

Green bars: Good performance (low latency)

Yellow bars: Moderate latency

Red bars: High latency or packet loss

Black bars: Complete packet loss

Timeline navigation

Zoom in: Ctrl + Mouse wheel up

Zoom out: Ctrl + Mouse wheel down

Pan: Click and drag timeline

Reset view: Ctrl + 0

Time range selection

$timeRanges = @{ "Last Hour" = "1h" "Last 4 Hours" = "4h" "Last Day" = "24h" "Last Week" = "7d" "Custom Range" = "Select start/end times" }

Statistical analysis

View → Statistics Window

Shows min/max/average latency per hop

Packet loss percentage

Standard deviation

Jitter measurements

```_

Routenanalyse

```bash

Analyze network path

Focus on specific hops showing issues

Right-click hop → Properties

Hop analysis metrics

echo "Hop Analysis Checklist:" echo "1. Latency consistency" echo "2. Packet loss patterns" echo "3. DNS resolution time" echo "4. Route stability" echo "5. Geographic location"

Identify problem areas

High latency at specific hop = bottleneck

Packet loss at multiple hops = upstream issue

Intermittent issues = congestion or hardware problems

Route changes = routing instability

```_

Performance Metrics

```powershell

Key performance indicators

$performanceMetrics = @{ # Latency metrics MinLatency = "Minimum round-trip time" MaxLatency = "Maximum round-trip time" AvgLatency = "Average round-trip time" Jitter = "Latency variation (standard deviation)"

# Reliability metrics
PacketLoss = "Percentage of lost packets"
Availability = "Percentage of successful pings"
MTBF = "Mean time between failures"
MTTR = "Mean time to recovery"

# Quality metrics
MOS = "Mean Opinion Score (VoIP quality)"
RTT = "Round-trip time consistency"
Throughput = "Effective bandwidth utilization"
Stability = "Route consistency over time"

}

Generate performance report

Tools → Summary Report

Select time range and metrics

Export to PDF, HTML, or CSV

```_

Automatisierung und Schrift

Befehlszeilenautomatisierung

```bash

!/bin/bash

pingplotter_automation.sh

Configuration

TARGET_LIST="targets.txt" OUTPUT_DIR="/var/log/pingplotter" REPORT_EMAIL="admin@company.com" ALERT_THRESHOLD=200 # ms

Create output directory

mkdir -p "$OUTPUT_DIR"

Function to monitor single target

monitor_target() { local target=$1 local duration=$2 local output_file="$OUTPUT_DIR/${target}$(date +%Y%m%d%H%M%S).pp2"

echo "Starting monitoring for $target..."

# Start PingPlotter monitoring
pingplotter.exe \
    -target "$target" \
    -samples "$duration" \
    -interval 2.5 \
    -output "$output_file" \
    -autostart \
    -minimize

# Wait for completion
while pgrep -f "pingplotter.*$target" > /dev/null; do
    sleep 10
done

echo "Monitoring completed for $target"

# Analyze results
analyze_results "$output_file" "$target"

}

Function to analyze results

analyze_results() { local file=$1 local target=$2

# Extract statistics (requires PingPlotter Pro)
pingplotter.exe -analyze "$file" -export-csv "$OUTPUT_DIR/${target}_stats.csv"

# Check for alerts
local avg_latency=$(awk -F',' 'NR>1 {sum+=$3; count++} END {print sum/count}' "$OUTPUT_DIR/${target}_stats.csv")

if (( $(echo "$avg_latency > $ALERT_THRESHOLD" | bc -l) )); then
    send_alert "$target" "$avg_latency"
fi

}

Function to send alerts

send_alert() { local target=$1 local latency=$2

local subject="Network Alert: High latency to $target"
local body="Average latency to $target: ${latency}ms (threshold: ${ALERT_THRESHOLD}ms)"

echo "$body" | mail -s "$subject" "$REPORT_EMAIL"

# Log alert
echo "$(date): ALERT - $target latency: ${latency}ms" >> "$OUTPUT_DIR/alerts.log"

}

Main monitoring loop

main() { echo "Starting automated PingPlotter monitoring..."

# Read targets from file
while IFS= read -r target; do
    # Skip comments and empty lines
    [[ "$target" =~ ^#.*$ ]] && continue
    [[ -z "$target" ]] && continue

    # Start monitoring in background
    monitor_target "$target" 1440 &  # 24 hours of monitoring

    # Prevent overwhelming the system
    sleep 5
done < "$TARGET_LIST"

# Wait for all monitoring to complete
wait

echo "All monitoring tasks completed"

# Generate summary report
generate_summary_report

}

Function to generate summary report

generate_summary_report() { local report_file="$OUTPUT_DIR/summary_$(date +%Y%m%d).html"

cat > "$report_file" << EOF
PingPlotter Summary Report

Network Performance Summary

Generated: $(date)

Target Performance

EOF # Process each target's results for csv_file in "$OUTPUT_DIR"/*_stats.csv; do if [[ -f "$csv_file" ]]; then local target=$(basename "$csv_file" _stats.csv) local avg_latency=$(awk -F',' 'NR>1 {sum+=$3; count++} END {print sum/count}' "$csv_file") local packet_loss=$(awk -F',' 'NR>1 {sum+=$4; count++} END {print sum/count}' "$csv_file") local status_class="good" local status="Good" if (( $(echo "$avg_latency > $ALERT_THRESHOLD" | bc -l) )); then status_class="alert" status="High Latency" elif (( $(echo "$packet_loss > 1" | bc -l) )); then status_class="warning" status="Packet Loss" fi cat >> "$report_file" << EOF EOF fi done cat >> "$report_file" << EOF
Target Avg Latency (ms) Packet Loss (%) Status
$target $(printf "%.2f" "$avg_latency") $(printf "%.2f" "$packet_loss") $status

Recent Alerts

|
$(tail -20 "$OUTPUT_DIR/alerts.log" 2>/dev/null |  | echo "No recent alerts")
|

EOF

echo "Summary report generated: $report_file"

# Email the report
if command -v mutt >/dev/null; then
    mutt -s "PingPlotter Summary Report" -a "$report_file" -- "$REPORT_EMAIL" < /dev/null
fi

}

Run main function

main "$@" ```_

Integration von PowerShell

```powershell

PingPlotter PowerShell automation

PingPlotter-Automation.ps1

param( [string[]]$Targets = @("google.com", "cloudflare.com"), [int]$Duration = 60, # minutes [string]$OutputPath = "C:\PingPlotter\Reports", [string]$AlertEmail = "admin@company.com" )

Ensure output directory exists

if (!(Test-Path $OutputPath)) { New-Item -ItemType Directory -Path $OutputPath -Force }

Function to start PingPlotter monitoring

function Start-PingPlotterMonitoring { param( [string]$Target, [int]$DurationMinutes, [string]$OutputFile )

$arguments = @(
    "-target", $Target,
    "-samples", ($DurationMinutes * 24),  # 2.5s interval = 24 samples/minute
    "-interval", "2.5",
    "-output", $OutputFile,
    "-autostart",
    "-minimize"
)

Write-Host "Starting monitoring for $Target..."
$process = Start-Process -FilePath "pingplotter.exe" -ArgumentList $arguments -PassThru

return $process

}

Function to analyze PingPlotter results

function Analyze-PingPlotterResults { param( [string]$ResultFile, [string]$Target )

# Export statistics to CSV
$csvFile = $ResultFile -replace "\.pp2$", "_stats.csv"
$arguments = @("-analyze", $ResultFile, "-export-csv", $csvFile)

Start-Process -FilePath "pingplotter.exe" -ArgumentList $arguments -Wait

if (Test-Path $csvFile) {
    # Import and analyze CSV data
    $data = Import-Csv $csvFile

    $stats = @{
        Target = $Target
        AvgLatency = ($data | Measure-Object -Property Latency -Average).Average
        MaxLatency = ($data | Measure-Object -Property Latency -Maximum).Maximum
        MinLatency = ($data | Measure-Object -Property Latency -Minimum).Minimum
        PacketLoss = ($data | Measure-Object -Property PacketLoss -Average).Average
        SampleCount = $data.Count
    }

    return $stats
}

return $null

}

Function to send email alerts

function Send-Alert { param( [string]$Target, [hashtable]$Stats, [string]$ToEmail )

$subject = "PingPlotter Alert: Issues detected for $Target"
$body = @"

Network performance alert for target: $Target

Statistics: - Average Latency: $($Stats.AvgLatency) ms - Maximum Latency: $($Stats.MaxLatency) ms - Minimum Latency: $($Stats.MinLatency) ms - Packet Loss: $($Stats.PacketLoss)% - Sample Count: $($Stats.SampleCount)

Please investigate network connectivity to this target.

Generated by PingPlotter automation script. "@

try {
    Send-MailMessage -To $ToEmail -Subject $subject -Body $body -SmtpServer "smtp.company.com"
    Write-Host "Alert sent for $Target"
}
catch {
    Write-Error "Failed to send alert: $_"
}

}

Function to generate HTML report

function Generate-HTMLReport { param( [hashtable[]]$AllStats, [string]$OutputPath )

$reportFile = Join-Path $OutputPath "PingPlotter_Report_$(Get-Date -Format 'yyyyMMdd_HHmmss').html"

$html = @"
PingPlotter Performance Report

PingPlotter Performance Report

Report Summary

Generated: $(Get-Date)

Monitoring Duration: $Duration minutes

Targets Monitored: $($AllStats.Count)

Performance Results

"@ foreach ($stat in $AllStats) { $statusClass = "good" $status = "Good" if ($stat.PacketLoss -gt 1) { $statusClass = "alert" $status = "Packet Loss" } elseif ($stat.AvgLatency -gt 200) { $statusClass = "warning" $status = "High Latency" } $html += @" "@ } $html += @"
Target Avg Latency (ms) Max Latency (ms) Min Latency (ms) Packet Loss (%) Samples Status
$($stat.Target) $([math]::Round($stat.AvgLatency, 2)) $([math]::Round($stat.MaxLatency, 2)) $([math]::Round($stat.MinLatency, 2)) $([math]::Round($stat.PacketLoss, 2)) $($stat.SampleCount) $status

Performance Recommendations

  • Latency < 50ms: Excellent performance
  • Latency 50-150ms: Good performance
  • Latency 150-300ms: Acceptable performance
  • Latency > 300ms: Poor performance - investigate
  • Packet Loss > 1%: Network issues - investigate

"@

$html | Out-File -FilePath $reportFile -Encoding UTF8
Write-Host "HTML report generated: $reportFile"

return $reportFile

}

Main execution

Write-Host "Starting PingPlotter automation for $($Targets.Count) targets..."

$processes = @() $resultFiles = @()

Start monitoring for each target

foreach ($target in $Targets) { $timestamp = Get-Date -Format "yyyyMMdd_HHmmss" $outputFile = Join-Path $OutputPath "${target}_${timestamp}.pp2"

$process = Start-PingPlotterMonitoring -Target $target -DurationMinutes $Duration -OutputFile $outputFile

$processes += @{
    Process = $process
    Target = $target
    OutputFile = $outputFile
}

$resultFiles += $outputFile

# Small delay to prevent overwhelming the system
Start-Sleep -Seconds 2

}

Wait for all monitoring to complete

Write-Host "Waiting for monitoring to complete..." foreach ($item in $processes) { $item.Process.WaitForExit() Write-Host "Monitoring completed for $($item.Target)" }

Analyze results

Write-Host "Analyzing results..." $allStats = @()

foreach ($item in $processes) { if (Test-Path $item.OutputFile) { $stats = Analyze-PingPlotterResults -ResultFile $item.OutputFile -Target $item.Target

    if ($stats) {
        $allStats += $stats

        # Check for alerts
        if ($stats.AvgLatency -gt 200 -or $stats.PacketLoss -gt 1) {
            Send-Alert -Target $item.Target -Stats $stats -ToEmail $AlertEmail
        }
    }
}

}

Generate report

if ($allStats.Count -gt 0) { $reportFile = Generate-HTMLReport -AllStats $allStats -OutputPath $OutputPath

# Display summary
Write-Host "`nMonitoring Summary:"
Write-Host "==================="
foreach ($stat in $allStats) {
    $status = if ($stat.PacketLoss -gt 1) { "ALERT" } elseif ($stat.AvgLatency -gt 200) { "WARNING" } else { "OK" }
    Write-Host "$($stat.Target): Avg $([math]::Round($stat.AvgLatency, 2))ms, Loss $([math]::Round($stat.PacketLoss, 2))% - $status"
}

Write-Host "`nReport saved to: $reportFile"

} else { Write-Warning "No results to analyze. Check PingPlotter installation and target accessibility." }

Write-Host "PingPlotter automation completed." ```_

Integration mit anderen Tools

SNMP Integration

```powershell

SNMP monitoring integration

Requires SNMP tools and PingPlotter Pro

Configure SNMP alerts

$snmpConfig = @{ Community = "public" Version = "2c" Target = "192.168.1.100" Port = 162 }

SNMP trap for network alerts

function Send-SNMPTrap { param( [string]$Target, [string]$Message, [hashtable]$Config )

$oid = "1.3.6.1.4.1.12345.1.1"  # Custom OID for PingPlotter alerts

snmptrap -v $Config.Version -c $Config.Community $Config.Target:$Config.Port $oid s "$Message"

}

Integration script

$alertMessage = "High latency detected: $Target - $($stats.AvgLatency)ms" Send-SNMPTrap -Target $target -Message $alertMessage -Config $snmpConfig ```_

Syslog Integration

```bash

!/bin/bash

Syslog integration for PingPlotter alerts

SYSLOG_SERVER="192.168.1.50" SYSLOG_PORT=514 FACILITY="local0" SEVERITY="warning"

Function to send syslog message

send_syslog() { local target=$1 local latency=$2 local packet_loss=$3

local message="PingPlotter Alert: Target=$target, Latency=${latency}ms, PacketLoss=${packet_loss}%"

# Send to remote syslog server
logger -n "$SYSLOG_SERVER" -P "$SYSLOG_PORT" -p "${FACILITY}.${SEVERITY}" "$message"

# Also log locally
logger -t "pingplotter" "$message"

}

Example usage

send_syslog "google.com" "250" "2.5" ```_

Datenbankintegration

```python

!/usr/bin/env python3

Database integration for PingPlotter data

import sqlite3 import csv import datetime import os

class PingPlotterDB: def init(self, db_path="pingplotter.db"): self.db_path = db_path self.init_database()

def init_database(self):
    """Initialize database schema"""
    conn = sqlite3.connect(self.db_path)
    cursor = conn.cursor()

    cursor.execute('''
        CREATE TABLE IF NOT EXISTS network_performance (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            target TEXT NOT NULL,
            timestamp DATETIME NOT NULL,
            hop_number INTEGER,
            hop_ip TEXT,
            hop_hostname TEXT,
            latency REAL,
            packet_loss REAL,
            jitter REAL
        )
    ''')

    cursor.execute('''
        CREATE TABLE IF NOT EXISTS alerts (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            target TEXT NOT NULL,
            alert_type TEXT NOT NULL,
            message TEXT,
            timestamp DATETIME NOT NULL,
            resolved BOOLEAN DEFAULT FALSE
        )
    ''')

    cursor.execute('''
        CREATE INDEX IF NOT EXISTS idx_target_timestamp 
        ON network_performance(target, timestamp)
    ''')

    conn.commit()
    conn.close()

def import_csv_data(self, csv_file, target):
    """Import PingPlotter CSV export data"""
    conn = sqlite3.connect(self.db_path)
    cursor = conn.cursor()

    with open(csv_file, 'r') as f:
        reader = csv.DictReader(f)

        for row in reader:
            cursor.execute('''
                INSERT INTO network_performance 
                (target, timestamp, hop_number, hop_ip, hop_hostname, latency, packet_loss, jitter)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?)
            ''', (
                target,
                datetime.datetime.now(),
                row.get('Hop', 0),
                row.get('IP', ''),
                row.get('Hostname', ''),
                float(row.get('Latency', 0)),
                float(row.get('PacketLoss', 0)),
                float(row.get('Jitter', 0))
            ))

    conn.commit()
    conn.close()
    print(f"Imported data from {csv_file} for target {target}")

def log_alert(self, target, alert_type, message):
    """Log network alert"""
    conn = sqlite3.connect(self.db_path)
    cursor = conn.cursor()

    cursor.execute('''
        INSERT INTO alerts (target, alert_type, message, timestamp)
        VALUES (?, ?, ?, ?)
    ''', (target, alert_type, message, datetime.datetime.now()))

    conn.commit()
    conn.close()

def get_performance_summary(self, target, hours=24):
    """Get performance summary for target"""
    conn = sqlite3.connect(self.db_path)
    cursor = conn.cursor()

    since = datetime.datetime.now() - datetime.timedelta(hours=hours)

    cursor.execute('''
        SELECT 
            AVG(latency) as avg_latency,
            MIN(latency) as min_latency,
            MAX(latency) as max_latency,
            AVG(packet_loss) as avg_packet_loss,
            COUNT(*) as sample_count
        FROM network_performance 
        WHERE target = ? AND timestamp > ?
    ''', (target, since))

    result = cursor.fetchone()
    conn.close()

    if result:
        return {
            'target': target,
            'avg_latency': result[0],
            'min_latency': result[1],
            'max_latency': result[2],
            'avg_packet_loss': result[3],
            'sample_count': result[4],
            'period_hours': hours
        }

    return None

def generate_report(self, output_file="performance_report.html"):
    """Generate HTML performance report"""
    conn = sqlite3.connect(self.db_path)
    cursor = conn.cursor()

    # Get all targets
    cursor.execute('SELECT DISTINCT target FROM network_performance')
    targets = [row[0] for row in cursor.fetchall()]

    html = """
    <!DOCTYPE html>
    <html>
    <head>
        <title>Network Performance Report</title>
        <style>
            body { font-family: Arial, sans-serif; margin: 20px; }
            table { border-collapse: collapse; width: 100%; }
            th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
            th { background-color: #f2f2f2; }
            .good { background-color: #d4edda; }
            .warning { background-color: #fff3cd; }
            .alert { background-color: #f8d7da; }
        </style>
    </head>
    <body>
        <h1>Network Performance Report</h1>
        <p>Generated: {}</p>
        <table>
            <tr>
                <th>Target</th>
                <th>Avg Latency (ms)</th>
                <th>Min Latency (ms)</th>
                <th>Max Latency (ms)</th>
                <th>Packet Loss (%)</th>
                <th>Samples</th>
                <th>Status</th>
            </tr>
    """.format(datetime.datetime.now())

    for target in targets:
        summary = self.get_performance_summary(target)
        if summary:
            status_class = "good"
            status = "Good"

            if summary['avg_packet_loss'] > 1:
                status_class = "alert"
                status = "Packet Loss"
            elif summary['avg_latency'] > 200:
                status_class = "warning"
                status = "High Latency"

            html += f"""
            <tr class="{status_class}">
                <td>{target}</td>
                <td>{summary['avg_latency']:.2f}</td>
                <td>{summary['min_latency']:.2f}</td>
                <td>{summary['max_latency']:.2f}</td>
                <td>{summary['avg_packet_loss']:.2f}</td>
                <td>{summary['sample_count']}</td>
                <td>{status}</td>
            </tr>
            """

    html += """
        </table>
    </body>
    </html>
    """

    with open(output_file, 'w') as f:
        f.write(html)

    conn.close()
    print(f"Report generated: {output_file}")

Example usage

if name == "main": db = PingPlotterDB()

# Import sample data
# db.import_csv_data("google_com_stats.csv", "google.com")

# Log sample alert
db.log_alert("google.com", "high_latency", "Average latency exceeded 200ms")

# Generate report
db.generate_report()

```_

Fehlerbehebung

Gemeinsame Themen

```powershell

PingPlotter not starting

1. Check if already running

Get-Process | Where-Object {$_.ProcessName -eq "PingPlotter"}

2. Run as administrator

Start-Process "pingplotter.exe" -Verb RunAs

3. Check Windows Firewall

netsh advfirewall firewall show rule name="PingPlotter"

4. Verify license (Pro versions)

pingplotter.exe -license-info

ICMP blocked by firewall

1. Allow ICMP in Windows Firewall

netsh advfirewall firewall add rule name="ICMP Allow incoming V4 echo request" protocol=icmpv4:8,any dir=in action=allow

2. Check router/firewall settings

Ensure ICMP echo requests are allowed

3. Test with different protocols

Try UDP or TCP traces if ICMP is blocked

High CPU usage

1. Reduce trace frequency

Edit → Preferences → Trace Options → Trace Interval: 5 seconds

2. Limit number of targets

Monitor fewer targets simultaneously

3. Reduce sample history

Edit → Preferences → General → Max samples to keep: 1000

Inaccurate results

1. Check system time synchronization

w32tm /query /status

2. Verify network adapter settings

Disable power management on network adapter

3. Close bandwidth-intensive applications

Ensure clean network conditions during testing

```_

Leistungsoptimierung

```bash

Optimize PingPlotter performance

1. System optimization

echo "Optimizing system for network monitoring..."

Disable unnecessary services

sc config "Windows Search" start= disabled sc config "Superfetch" start= disabled

Set high performance power plan

powercfg -setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

Increase network buffer sizes

netsh int tcp set global autotuninglevel=normal netsh int tcp set global chimney=enabled netsh int tcp set global rss=enabled

2. PingPlotter optimization

Edit PingPlotter.exe.config

cat > PingPlotter.exe.config << EOF

EOF

3. Network adapter optimization

Disable power management

powershell "Get-NetAdapter | ForEach-Object { Disable-NetAdapterPowerManagement -Name $_.Name }"

Set interrupt moderation

netsh int tcp set global rsc=disabled ```_

Dieses umfassende PingPlotter-Catsheet bietet alles, was für professionelle Netzwerk-Fehlersuche, Leistungsüberwachung und automatisierte Netzwerkanalysen benötigt wird, von Basis-Ping-Operationen bis hin zu fortschrittlichen Automatisierungs- und Integrationsszenarien.