Skip to content

fangfufu/proxy-monitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Proxy Monitor

This script monitors the speed and availability of a proxy server by attempting to connect to a list of websites through it. It logs the results to an Excel file and can send email alerts if a connection fails.

Features

  • Proxy Monitoring: Checks proxy server health by connecting to specified websites.
  • Performance Logging: Logs connection status (UP/DOWN) and download times to an Excel file. Each monitored website has its own sheet in the Excel file.
  • Email Alerts: Sends email notifications if the proxy server appears to be down.
    • Supports sending emails via an external SMTP server.
    • Supports sending emails via a local Mail Transfer Agent (MTA) like sendmail or postfix.
  • Flexible Configuration: Configure the application with a YAML file or override settings with command-line arguments.

Requirements

  • Python 3.6+
  • The following Python libraries:
    • requests
    • PyYAML
    • pandas
    • openpyxl

You can install these with:

pip install requests PyYAML pandas openpyxl

Configuration

The application is configured using a YAML file. You can rename example_config.yaml to config.yaml and edit it to your needs.

proxy

This section contains the details of the proxy server to be monitored.

  • host: (Required) The hostname or IP address of your proxy server.
  • port: (Required) The port number of your proxy server.

Example:

proxy:
  host: 192.168.1.100
  port: 8080

monitoring

This section defines the monitoring parameters.

  • websites: (Required) A list of websites to use for checking the proxy.
  • log_file: (Required) The path to the Excel file where the monitoring logs will be stored.

Example:

monitoring:
  websites:
    - https://www.google.com
    - https://www.github.com
  log_file: /var/log/proxy_monitor.xlsx

email_alerts

This section is optional and configures email notifications for when the proxy is down.

  • recipient_email: (Required for email alerts) The email address to which alert emails will be sent.
  • use_local_mta: (Optional) Set to true to use a local MTA (e.g., sendmail). Defaults to false.
  • sendmail_path: (Optional) The path to the sendmail executable. If not provided, the script will try to use sendmail from the system's PATH.
  • smtp_server: (Required if use_local_mta is false) The hostname or IP address of your SMTP server.
  • smtp_port: (Required if use_local_mta is false) The port number for the SMTP server.
  • smtp_user: (Required if use_local_mta is false) The username for authenticating with the SMTP server.
  • smtp_password: (Required if use_local_mta is false) The password for authenticating with the SMTP server.

Example (using an external SMTP server):

email_alerts:
  recipient_email: your_email@example.com
  smtp_server: smtp.example.com
  smtp_port: 587
  smtp_user: your_email@example.com
  smtp_password: your_password

Example (using a local MTA):

email_alerts:
  use_local_mta: true
  recipient_email: your_email@example.com
  sendmail_path: /usr/sbin/sendmail

Usage

  1. Install the required libraries (see Requirements section).
  2. Rename example_config.yaml to config.yaml and edit it with your specific details.
  3. Run the script from your terminal:
    python3 main.py --config-file config.yaml

Command-line Arguments

You can override the settings from the configuration file using command-line arguments.

  • --config-file FILE: Path to the configuration file.
  • --proxy-host HOST: Proxy server host or IP address.
  • --proxy-port PORT: Proxy server port.
  • --websites URL1 URL2 ...: List of websites to check.
  • --log-file FILE: Path to the Excel log file.

Email Alert Options

  • --alert-email EMAIL: Email address to send alerts to.
  • --use-local-mta: Use the system's local MTA for alerts.
  • --sendmail-path PATH: Path to the sendmail executable.
  • --smtp-server SERVER: SMTP server for email alerts.
  • --smtp-port PORT: SMTP port for email alerts.
  • --smtp-user USER: SMTP username for email alerts.
  • --smtp-password PASSWORD: SMTP password for email alerts.

For more information, run:

python3 main.py --help

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages