Created decent description.
This commit is contained in:
175
README.md
175
README.md
@@ -1,3 +1,174 @@
|
||||
# TCP_ping_monitor
|
||||
# Port 80 Network Monitor
|
||||
|
||||
Use TCP to see whether devices are online, count instances of time-out during high traffic
|
||||
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
|
||||
.\Port80Monitor.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
|
||||
Reference in New Issue
Block a user