1.9 KiB
1.9 KiB
Ping Service
A Go-based monitoring service that periodically pings IP addresses from a configurable input source (file, HTTP, or Unix socket), applies cooldown periods to avoid frequent pings, optionally performs traceroute on successes, and outputs JSON results to a destination (file, HTTP, or socket). Includes health checks and metrics.
Features
- Reads IPs from file, HTTP endpoint, or Unix socket.
- Configurable ping interval and per-IP cooldown.
- Optional traceroute (ICMP/TCP) with max hops.
- JSON output with ping stats and traceroute details.
- HTTP health endpoints:
/health,/ready,/metrics. - Graceful shutdown and verbose logging support.
Configuration
Edit config.yaml:
input_file: "http://localhost:8080" # Or file path or socket
output_file: "http://localhost:8081" # Or file path or socket
interval_seconds: 30 # Poll interval
cooldown_minutes: 10 # Min time between same-IP pings
enable_traceroute: true # Enable traceroute
traceroute_max_hops: 30 # Max TTL
health_check_port: 8090 # Health server port
Building
go build -o ping_service
Installation as Service (Linux)
chmod +x install.sh
sudo ./install.sh
sudo systemctl start ping-service
- Check status:
sudo systemctl status ping-service - View logs:
sudo journalctl -u ping-service -f - Stop:
sudo systemctl stop ping-service
Usage
Run directly:
./ping_service -config config.yaml -verbose
For testing HTTP I/O:
- Run
python3 input_http_server.py(serves IPs on port 8080). - Run
python3 output_http_server.py(receives results on port 8081).
Health Checks
curl http://localhost:8090/health(status, uptime, stats)curl http://localhost:8090/ready(readiness)curl http://localhost:8090/metrics(Prometheus metrics)
Version: 0.0.3
Dependencies: go-ping/ping, gopkg.in/yaml.v