58 lines
1.9 KiB
Markdown
58 lines
1.9 KiB
Markdown
# 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`:
|
|
```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
|
|
```bash
|
|
go build -o ping_service
|
|
```
|
|
|
|
## Installation as Service (Linux)
|
|
```bash
|
|
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:
|
|
```bash
|
|
./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`
|