5.5 KiB
TCP Ping Network Monitor
A PowerShell-based monitoring tool that checks port 80 connectivity for specified IP addresses while simultaneously monitoring network traffic. This tool provides real-time visibility into both web service availability and network bandwidth usage.
Features
- Port 80 Connectivity Monitoring: Tests TCP connections to port 80 on specified IP addresses
- Parallel Processing: Uses PowerShell runspaces for efficient concurrent monitoring
- Network Traffic Analysis: Monitors upload/download speeds on a specified network interface
- High Traffic Detection: Alerts when network traffic exceeds defined thresholds
- Performance Metrics: Tracks min/max/mean response times and success rates
- Traffic Correlation: Links connection failures with high traffic events
Getting Started
Prerequisites
- Windows with PowerShell 3.0 or later
- Administrative privileges (recommended for WMI access to network interface data)
- Network interface named "Intel[R] I210 Gigabit Network Connection _2" (or modify the script to match your interface)
Installation
- Download the
Port80Monitor.ps1script - No additional installation required
Usage
Run the script in PowerShell with administrator privileges:
.\TCP_Ping_Monitor.ps1
The script will continuously monitor the specified IP addresses and network traffic until manually stopped by pressing Ctrl+C.
Configuration
IP Addresses
Modify the $addresses array at the top of the script to monitor your desired IP addresses:
$addresses = @(
"1.1.1.1",
"1.0.0.1"
# Add more IP addresses as needed
)
Network Interface
The script is configured to monitor a specific network interface. Modify the Get-NetworkTraffic function to match your system's network interface name:
$stats = Get-WmiObject Win32_PerfFormattedData_Tcpip_NetworkInterface |
Where-Object {$_.Name -eq "Intel[R] I210 Gigabit Network Connection _2"}
To find your network interface names, run:
Get-WmiObject Win32_PerfFormattedData_Tcpip_NetworkInterface | Select-Object Name
Traffic Thresholds
The high traffic threshold is set to 80 Mbps for both upload and download. Modify these values as needed:
$isHighTrafficNow = ($uploadMbps -gt 80) -or ($downloadMbps -gt 80)
And:
if ($uploadMbps -gt 80) {
$trafficStats.HighUploadInstances++
$uploadAlert = "HIGH UPLOAD ALERT: $([math]::Round($uploadMbps, 2)) Mbps"
}
Console Display
The console display shows:
Network Traffic Section
- Current download and upload speeds in Mbps
- Count of high traffic instances detected
- Alerts when traffic exceeds thresholds (displayed in red)
Port 80 Connectivity Section
- IP Address: The address being monitored
- Status: UP (green) or DOWN (red)
- Min: Minimum response time in milliseconds
- Max: Maximum response time in milliseconds
- Mean: Average response time in milliseconds
- Success%: Percentage of successful connections
- Fails: Total count of failed connections
- HTFails: Count of failures during high traffic periods
Log Files
The script creates a log file named network_traffic.log in the current directory with CSV-formatted data containing:
- Timestamp
- Bytes received per second
- Bytes sent per second
- High download alert flag (true/false)
- High upload alert flag (true/false)
This log can be used for later analysis and correlation between network traffic and service availability.
Performance Considerations
- The script uses a runspace pool with a maximum of 20 concurrent runspaces, which balances efficiency with system resource usage
- Monitoring frequency is set to approximately 500ms (adjustable via the
Start-Sleepparameter) - The script maintains a rolling 60-sample window for calculating statistics
Advanced Usage
Monitoring Web Services
This tool is particularly useful for monitoring web services that:
- Run on port 80 (HTTP)
- May be affected by network congestion
- Require continuous availability monitoring
Network Troubleshooting
Use this tool to:
- Identify correlation between network congestion and service failures
- Detect patterns in high traffic occurrences
- Monitor the impact of network changes on service availability
Integration with Other Tools
The CSV log file can be:
- Imported into Excel or PowerBI for visualization
- Processed by other monitoring tools
- Used to generate reports on service levels and network performance
Troubleshooting
Common issues:
- WMI Access Errors: Ensure you're running PowerShell as Administrator
- Network Interface Not Found: Verify the interface name in the
Get-NetworkTrafficfunction - Inaccurate Traffic Data: Some virtualized environments may not report network statistics accurately
Customization
Adding Additional Metrics
You can extend the script to monitor additional metrics by:
- Adding new fields to the
$statshashtable - Implementing additional WMI queries in the
Get-NetworkTrafficfunction - Expanding the display to show the new metrics
Monitoring Different Ports
To monitor a different port (e.g., port 443 for HTTPS):
- Modify the port number in the
$TestPort80ScriptBlockscriptblock:
$result = $tcpClient.BeginConnect($ComputerName, 443, $null, $null)
License
This script is provided as-is with no warranty. Use at your own risk.
Acknowledgments
- PowerShell runspace pattern for efficient parallel execution
- Windows WMI for providing network performance data