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.1.tar.gz (61.4 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.1-py3-none-any.whl (79.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: network_check_tool-0.1.1.tar.gz
  • Upload date:
  • Size: 61.4 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.1.tar.gz
Algorithm Hash digest
SHA256 77c2803e624ecdef513eddefa03621a39e7efa73229ae706333825b810763010
MD5 c8df430a040860fb69b912fa26c00d92
BLAKE2b-256 c051972b12ebb8eb96c410207884e3c3f481c0e6454ec77d4baa2b21615b2b6d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for network_check_tool-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 33e256399ab45452722c68823e4941b9d442d19cd9001a93c7f6a57585c52b4e
MD5 901169162165caac50e9b26e8c68cb1c
BLAKE2b-256 576aeecfbb2a8a3d9f1543a3f71c49b369664bad96132aee4d3fbccd6d8b2edc

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