A Go-based microservice for Uptime Regional Monitoring Agent including ICMP ping, DNS resolution, and TCP connectivity testing.
- ICMP Ping: Full ping functionality with packet statistics
- DNS Resolution: A, AAAA, MX, and TXT record lookups
- TCP Connectivity: Port connectivity testing
- SSL Certificate: SSL Certificate Check
- REST API endpoints
- Health check endpoint
- Configurable via environment variables
- Comprehensive operation statistics
Perform various network operations (ping, dns, tcp).
Ping Request:
{
"type": "ping",
"host": "google.com",
"count": 4,
"timeout": 3
}DNS Request:
{
"type": "dns",
"host": "google.com",
"query": "A",
"timeout": 3
}TCP Request:
{
"type": "tcp",
"host": "google.com",
"port": 443,
"timeout": 3
}Response:
{
"type": "ping",
"host": "google.com",
"success": true,
"response_time": "20ms",
"packets_sent": 4,
"packets_recv": 4,
"packet_loss": 0,
"min_rtt": "15ms",
"max_rtt": "25ms",
"avg_rtt": "20ms",
"rtts": ["15ms", "20ms", "25ms", "18ms"],
"start_time": "2023-12-01T10:00:00Z",
"end_time": "2023-12-01T10:00:03Z"
}Quick operation test with query parameters.
Examples:
/operation/quick?type=ping&host=google.com&count=1/operation/quick?type=dns&host=google.com&query=A/operation/quick?type=tcp&host=google.com&port=443
Health check endpoint.
POST /ping- Legacy ping endpoint (backward compatibility)GET /ping/quick- Legacy quick ping endpoint
- Type:
ping - Parameters:
host,count,timeout - Features: Packet loss calculation, RTT statistics, multiple packets
- Type:
dns - Parameters:
host,query(A, AAAA, MX, TXT),timeout - Features: Multiple record types, resolution time tracking
- Type:
tcp - Parameters:
host,port,timeout - Features: Connection testing, response time measurement
Environment variables:
PORT- Service port (default: 8080)DEFAULT_COUNT- Default ping count (default: 4)DEFAULT_TIMEOUT- Default timeout (default: 3s)MAX_COUNT- Maximum ping count (default: 20)MAX_TIMEOUT- Maximum timeout (default: 30s)ENABLE_LOGGING- Enable logging (default: true)
go run main.godocker build -t service-operation .
docker run -p 8091:8091 service-operation- Go 1.21+
- Root privileges for ICMP (on Linux)
This service requires elevated privileges to send ICMP packets. Run with sudo on Linux systems or use capabilities:
sudo setcap cap_net_raw=+ep ./service-operation