# 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 1. Download the `Port80Monitor.ps1` script 2. No additional installation required ### Usage Run the script in PowerShell with administrator privileges: ```powershell .\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: ```powershell $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: ```powershell $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: ```powershell 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: ```powershell $isHighTrafficNow = ($uploadMbps -gt 80) -or ($downloadMbps -gt 80) ``` And: ```powershell 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-Sleep` parameter) - 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: 1. **WMI Access Errors**: Ensure you're running PowerShell as Administrator 2. **Network Interface Not Found**: Verify the interface name in the `Get-NetworkTraffic` function 3. **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 `$stats` hashtable - Implementing additional WMI queries in the `Get-NetworkTraffic` function - 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 `$TestPort80ScriptBlock` scriptblock: ```powershell $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