Skip to content

πŸ«€ Beautiful DNS health checker with TUI, benchmarking, TLS checks, DNSSEC validation, and Prometheus metrics

Notifications You must be signed in to change notification settings

copyleftdev/dnspulse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ«€ DNSPulse

Check the pulse of your DNS infrastructure.

A beautiful, fast DNS health checker with rich TUI for SREs, DevOps, and DNS administrators. Features gradient colors, animated spinners, and stunning terminal visuals.

License Rust

Features

  • πŸ” Deep DNS Health Checks - Resolution, DNSSEC validation, zone freshness
  • 🎨 Rich TUI Dashboard - Live monitoring with sparklines and gauges
  • πŸ“Š JSON Output - CI/CD pipeline integration
  • ⚑ Performance Benchmarking - Latency percentiles (p50/p90/p95/p99)
  • πŸ” DNSSEC Aware - Signature validation and expiration warnings
  • πŸ”’ TLS Certificate Checks - Chain validation, expiry warnings
  • 🌍 Global Propagation - Check across 10+ worldwide resolvers
  • πŸ”Ž DNS Trace - Follow resolution from root to authoritative
  • πŸ“– DNS Education - Human-readable explanations for SPF, DMARC, DKIM
  • πŸ“ˆ Health Scoring - 0-100 score with letter grades (A-F)
  • πŸ“‘ Prometheus Metrics - Native metrics endpoint for monitoring

Installation

cargo install dnspulse

Or build from source:

git clone https://github.com/copyleftdev/dnspulse
cd dnspulse
cargo build --release

Commands

Command Description
check Check DNS health for a single domain
multi Check multiple domains at once
watch Live TUI dashboard with real-time monitoring
compare Compare DNS responses across multiple servers
propagation Check DNS propagation across global resolvers
trace Trace DNS resolution from root to authoritative
bench Run DNS performance benchmark with percentiles
tls Check TLS certificate chain and expiry
score Calculate DNS health score (0-100 with grades)
explain Human-readable DNS record explanations
serve Start Prometheus metrics server

Usage

Quick Health Check

# Check a single domain
dnspulse check example.com

# Check with specific DNS server
dnspulse check example.com --server 8.8.8.8

# JSON output for scripts
dnspulse check example.com --output json

# Compact single-line output
dnspulse check example.com --output compact

Live TUI Dashboard

# Watch a domain with live updates
dnspulse watch example.com

# Custom check interval (seconds)
dnspulse watch example.com --interval 10

Multiple Domains

# Check multiple domains at once
dnspulse multi example.com google.com cloudflare.com

# JSON output for CI/CD
dnspulse multi example.com google.com --output json

DNS Server Comparison

# Compare responses across global resolvers (Google, Cloudflare, Quad9, etc.)
dnspulse compare example.com

# Compare specific servers
dnspulse compare example.com --servers 8.8.8.8,1.1.1.1,9.9.9.9

Global Propagation Check

# Check if DNS has propagated to all major resolvers
dnspulse propagation example.com

DNS Resolution Trace

# Trace from root servers to authoritative
dnspulse trace example.com

Performance Benchmarking

# Run 100 queries, 10 concurrent
dnspulse bench example.com

# Custom count and concurrency
dnspulse bench example.com --count 500 --concurrent 20

# Benchmark specific server
dnspulse bench example.com --server 8.8.8.8

TLS Certificate Check

# Check certificate chain and expiry
dnspulse tls example.com

# Check non-standard port
dnspulse tls example.com --port 8443

DNS Health Score

# Get health score (0-100) with grade
dnspulse score example.com

# Include TLS in scoring
dnspulse score example.com --with-tls

DNS Record Explanations

# Explain SPF record in human-readable format
dnspulse explain SPF google.com

# Explain DMARC policy
dnspulse explain DMARC google.com

# Other record types: A, AAAA, MX, TXT, CNAME, NS, SOA, CAA, DKIM, PTR
dnspulse explain MX google.com

Prometheus Metrics Server

# Start metrics server on default port
dnspulse serve --domains example.com,google.com

# Custom port and interval
dnspulse serve --listen 0.0.0.0:9101 --domains example.com --interval 30

Output Formats

Pretty (default)

    ____  _   _______ ____        __         
   / __ \/ | / / ___// __ \__  __/ /_______  
  / / / /  |/ /\__ \/ /_/ / / / / / ___/ _ \ 
 / /_/ / /|  /___/ / ____/ /_/ / (__  )  __/ 
/_____/_/ |_//____/_/    \__,_/_/____/\___/  

DNS Health Report
════════════════════════════════════════════════════════════

  Domain: example.com
  Time:   2024-12-16 17:30:00 UTC

  Status: βœ… HEALTHY
  Check Duration: 23ms

────────────────────────────────────────────────────────────
 πŸ” DNS Resolution
────────────────────────────────────────────────────────────
  βœ… Response Time: 12ms
  πŸ“‹ Records:
      β€’ 93.184.216.34

────────────────────────────────────────────────────────────
 πŸ” DNSSEC
────────────────────────────────────────────────────────────
  βœ… DNSSEC: Enabled
  βœ… Signatures: Valid
  πŸ“… Expires in: 30 days
  πŸ”‘ Algorithm: RSASHA256

────────────────────────────────────────────────────────────
 πŸ“‚ Zone Info
────────────────────────────────────────────────────────────
  βœ… Serial: 2024121601
  πŸ–₯️  Primary NS: ns1.example.com.
  πŸ”„ Refresh: 3600s

════════════════════════════════════════════════════════════

JSON

{
  "domain": "example.com",
  "timestamp": "2024-12-16T17:30:00Z",
  "overall_status": "Healthy",
  "resolution": {
    "status": "Healthy",
    "response_time_ms": 12,
    "records": ["93.184.216.34"]
  },
  "dnssec": {
    "status": "Healthy",
    "enabled": true,
    "valid": true,
    "expires_in_days": 30
  },
  "zone": {
    "status": "Healthy",
    "serial": 2024121601,
    "primary_ns": "ns1.example.com."
  }
}

Compact

example.com | OK | 12ms | DNSSEC:βœ“ | serial:2024121601

CI/CD Integration

# GitHub Actions example
- name: Check DNS Health
  run: |
    dnspulse check myapp.com --output json > dns-health.json
    if [ $? -ne 0 ]; then
      echo "DNS health check failed!"
      exit 1
    fi

Exit Codes

Code Meaning
0 All checks healthy
1 One or more checks unhealthy/degraded

Roadmap

  • Prometheus metrics endpoint
  • DNS health scoring with grades
  • TLS certificate validation
  • Global propagation checking
  • DNS resolution tracing
  • Performance benchmarking
  • Human-readable DNS explanations
  • Slack/PagerDuty webhook notifications
  • Historical data storage
  • Web UI dashboard
  • DNS over HTTPS (DoH) support
  • Configuration file support (~/.dnspulse.toml)

Related Projects

  • Janus - Full anycast BGP health automation (enterprise)

License

MIT License - See LICENSE for details.


Built with ❀️ for the DNS community

About

πŸ«€ Beautiful DNS health checker with TUI, benchmarking, TLS checks, DNSSEC validation, and Prometheus metrics

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages