Skip to main content

Local-first network & OS trouble isolation (netdiag) plus a ping-monitoring dashboard (network-checker).

Project description

Network Check Tool

This package ships two command-line tools:

  • netdiag โ€” local-first network & OS trouble isolation. Runs a layered set of probes and a dependency-graph engine that reports which layer is broken, why, and what to check next โ€” offline, without root. (docs)
  • network-checker โ€” ping monitoring with a web dashboard. Periodic ping tests across multiple hosts, stored in SQLite and visualized with Plotly.

In short: network-checker tells you that something is down; netdiag tells you why.

Python Version License PyPI

๐Ÿš€ Quick Start

Installation from PyPI (Recommended)

Install the package directly from PyPI:

pip install network-check-tool

Installation from Source

If you want to contribute or modify the code:

# Clone the repository
git clone https://github.com/mikawa-bushi/network-check-tool.git
cd network-check-tool

# Install with Poetry (recommended for development)
poetry install

# Or install with pip
pip install -e .

First Steps

  1. Initialize the database:
network-checker init
  1. Test a single host:
network-checker ping google.com
  1. Start the web dashboard:
network-checker run-server

Then open http://localhost:9991 in your browser.

๐Ÿฉบ netdiag โ€” local-first trouble isolation (new)

The package now also ships netdiag, a diagnosis companion to the monitoring tool. Where network-checker answers "is the host reachable?", netdiag answers "which layer is broken, why, and what do I check next?" โ€” fully offline, without root, on the standard library alone.

netdiag check                      # full layered sweep โ†’ root cause + next steps
netdiag watch                      # always-on: alert (file/JSONL) only when the verdict changes
netdiag explain dns                # learn what a check does + the manual commands
netdiag snapshot save ok           # later: netdiag snapshot diff ok โ†’ "what changed?"

It runs a dependency-ordered set of probes (L1 Wi-Fi โ†’ L2 ARP โ†’ L3 routing/ reachability โ†’ L4 ports/firewall โ†’ L7 DNS/HTTP/TLS, plus host/OS), then a dependency-graph engine reports the lowest failing layer as the root cause and folds everything above it into "consequences". Exit codes (0 healthy / 1 cause found / 2 warnings) make it script- and CI-friendly.

See docs/netdiag.md for the full design and command reference.

๐Ÿ“– What is Network Check Tool?

Network Check Tool is a Python application designed for continuous network monitoring. It helps you:

  • Monitor network connectivity to multiple hosts simultaneously
  • Track response times and packet loss over time
  • Visualize network performance through an interactive web dashboard
  • Set up automated monitoring with customizable intervals
  • Access historical data through CLI commands or REST API

Perfect for system administrators, DevOps engineers, and anyone who needs to monitor network reliability.

โœจ Features

๐ŸŽฏ Core Functionality

  • Periodic Ping Monitoring: Automated ping tests at configurable intervals
  • SQLite Database: Persistent storage of ping results with timestamps
  • Web Dashboard: Interactive visualization using Plotly charts
  • CLI Interface: Comprehensive command-line tools for management
  • RESTful API: JSON endpoints for data access and integration

๐Ÿ“Š Dashboard Features

  • Real-time response time charts
  • Packet loss visualization
  • Success rate statistics
  • Multiple host monitoring
  • Time range filtering (1 hour to 1 week)
  • Auto-refresh every 30 seconds

โšก Advanced Features

  • Background scheduling with APScheduler
  • Configurable ping timeouts and intervals
  • Database indexing for performance
  • Error handling and logging
  • Development and production configurations

๐Ÿ› ๏ธ Usage Examples

Basic Monitoring

# Monitor a single host
network-checker ping google.com --count 5

# Start continuous monitoring of multiple hosts
network-checker start-monitoring google.com cloudflare.com 8.8.8.8 --interval 30

# Check recent results
network-checker status --host google.com --limit 10

Web Dashboard

# Start the web server (default: http://localhost:9991)
network-checker run-server

# Run on different host/port
network-checker run-server --host 0.0.0.0 --port 8080

Data Management

# View all monitored hosts
network-checker status

# Clear all data (with confirmation)
network-checker clear

๐Ÿ“‹ CLI Commands Reference

Command Description Example
network-checker ping <host> Send ping tests to a specific host network-checker ping example.com --count 4
network-checker start-monitoring <hosts> Start continuous monitoring network-checker start-monitoring google.com --interval 60
network-checker run-server Start the web dashboard server network-checker run-server --port 9991
network-checker status Display recent ping results network-checker status --host google.com
network-checker init Initialize the database network-checker init
network-checker clear Clear all ping data network-checker clear

๐ŸŒ Web Dashboard

After starting the server with network-checker run-server, access the dashboard at http://localhost:9991.

Dashboard Features

  • Host Selection: Choose from monitored hosts
  • Time Range: View data from 1 hour to 1 week
  • Statistics Cards: Total pings, success rate, average response time, packet loss rate
  • Interactive Charts: Response time trends with packet loss indicators
  • Auto-refresh: Updates every 30 seconds

๐Ÿ”Œ API Endpoints

The tool provides a REST API for integration with other tools:

GET /api/hosts

Get list of monitored hosts

curl http://localhost:9991/api/hosts
# Returns: ["google.com", "cloudflare.com"]

GET /api/stats?host=<host>&hours=<hours>

Get statistics for a specific host

curl "http://localhost:9991/api/stats?host=google.com&hours=24"

GET /api/ping_data?host=<host>&hours=<hours>

Get raw ping data for visualization

curl "http://localhost:9991/api/ping_data?host=google.com&hours=1"

โš™๏ธ Configuration

Environment Variables

Customize behavior with environment variables:

# Database configuration
DATABASE_URL=sqlite:///network_check_tool.db

# Ping settings
PING_TIMEOUT=4.0
DEFAULT_PING_INTERVAL=60

# Default hosts to monitor
DEFAULT_HOSTS=google.com,cloudflare.com

# Flask configuration
SECRET_KEY=your-secret-key

Configuration Profiles

The application supports different configuration profiles:

  • Development: Debug mode enabled, SQL logging
  • Production: Optimized for production deployment

๐Ÿ—๏ธ Project Structure

network_check_tool/
โ”œโ”€โ”€ __init__.py              # Package initialization
โ”œโ”€โ”€ app.py                   # Flask application factory
โ”œโ”€โ”€ cli.py                   # Command-line interface
โ”œโ”€โ”€ models/
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ””โ”€โ”€ ping_result.py       # SQLAlchemy model
โ”œโ”€โ”€ services/
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ ping_service.py      # Ping execution service
โ”‚   โ””โ”€โ”€ scheduler_service.py # Background scheduling
โ”œโ”€โ”€ views/
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ””โ”€โ”€ dashboard.py         # Web API endpoints
โ”œโ”€โ”€ templates/
โ”‚   โ””โ”€โ”€ dashboard.html       # Web dashboard UI
โ””โ”€โ”€ config/
    โ”œโ”€โ”€ __init__.py
    โ””โ”€โ”€ config.py            # Application configuration

๐Ÿ“Š Database Schema

ping_results table

  • id: Primary key (INTEGER)
  • target_host: Target hostname (VARCHAR(255), indexed)
  • timestamp: Ping timestamp (DATETIME, indexed)
  • response_time: Response time in milliseconds (FLOAT, nullable)
  • packet_loss: Boolean indicating packet loss (BOOLEAN)
  • error_message: Error details if ping failed (TEXT, nullable)

๐Ÿ”ง Development

Development Setup

# Clone the repository
git clone https://github.com/mikawa-bushi/network-check-tool.git
cd network-check-tool

# Install with Poetry (recommended)
poetry install

# Or create a virtual environment and install with pip
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -e .

Running Tests

poetry run pytest
# or
python -m pytest

Code Formatting

poetry run black network_check_tool/
# or
black network_check_tool/

Development Server

# Run with auto-reload for development
poetry run network-checker run-server --debug

๐Ÿš€ Production Deployment

With Docker (Recommended)

# Dockerfile example
FROM python:3.10-slim
WORKDIR /app
COPY . .
RUN pip install network-check-tool
EXPOSE 9991
CMD ["network-checker", "run-server", "--host", "0.0.0.0", "--port", "9991"]
docker build -t network-check-tool .
docker run -p 9991:9991 network-check-tool

Manual Deployment

# Install the package
pip install network-check-tool

# Initialize database
network-checker init

# Run with a production WSGI server
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:9991 "network_check_tool.app:create_app('production')"

๐Ÿ“ฆ Dependencies

Runtime Dependencies:

  • flask - Web framework
  • flask-sqlalchemy - Database ORM
  • ping3 - Ping functionality
  • apscheduler - Background scheduling
  • plotly - Data visualization
  • pandas - Data manipulation
  • flask-cors - CORS support
  • click - CLI framework
  • toml - Configuration parsing

Development Dependencies:

  • pytest - Testing framework
  • black - Code formatting

๐Ÿค Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests (pytest)
  5. Format code (black .)
  6. Commit your changes (git commit -m 'Add amazing feature')
  7. Push to the branch (git push origin feature/amazing-feature)
  8. Open a Pull Request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ†˜ Support

๐ŸŒŸ Why Network Check Tool?

  • Easy to Use: Simple CLI commands and intuitive web interface
  • Lightweight: Minimal resource usage with SQLite database
  • Flexible: Configurable monitoring intervals and multiple output formats
  • Reliable: Robust error handling and comprehensive logging
  • Open Source: MIT licensed and community-driven

Network Check Tool - Keep your network monitoring simple and effective! ๐Ÿš€

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

network_check_tool-0.1.0.tar.gz (60.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

network_check_tool-0.1.0-py3-none-any.whl (78.6 kB view details)

Uploaded Python 3

File details

Details for the file network_check_tool-0.1.0.tar.gz.

File metadata

  • Download URL: network_check_tool-0.1.0.tar.gz
  • Upload date:
  • Size: 60.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.10

File hashes

Hashes for network_check_tool-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7c03d9867603821c700f8e1c4d1ec6301512efe47bb3cc2fa92d61a296aa2f68
MD5 c48015d93e4774e3c0b8dda83dfad2ec
BLAKE2b-256 2be53e9b3406c82fd59f70fd8390c476d6d6a1fd09dea65a0171435f2eb99838

See more details on using hashes here.

File details

Details for the file network_check_tool-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for network_check_tool-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9d3eedf4c6bcaab4349f067ef86f9cf058eca26ed06fdb171427ef95dd3ad35c
MD5 7b66f384cd7533b66bafe120255998d2
BLAKE2b-256 ee53524206fe45687829078192d7cbaafea03c30c18f287f12e0100b62d5a8e4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page