Skip to content
/ mtr Public
forked from grafana/mtr

Golang native MTR implementation (Forked from Grafana's fork of Tonobo's project)

License

Notifications You must be signed in to change notification settings

dbourkey/mtr

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MTR

A MTR implementation written in golang, completely without shell-execs.

This is forked from https://github.com/grafana/mtr which was forked from https://github.com/tonobo/mtr

Original Docs (Outdated) - Relevant to https://github.com/tonobo/mtr

Just install with the following command:

go get -u github.com/tonobo/mtr
sudo setcap cap_net_raw+ep PATH-TO-GOMTR

or a precompiled version

curl -sL git.io/mtr.sh | sh -s -- -b /usr/local/bin && sudo setcap cap_net_raw+ep /usr/local/bin/mtr

Note: This tool maybe called with sudo or as root, because it requires raw sockets.

Output

Currently there is no support for non ipv4 targets

HOP:    Address                Loss%  Sent    Last     Avg    Best   Worst       Packets
  1:|-- 10.200.1.1              0.0%     6     1.4     1.8     1.2     3.2         .....
  2:|-- 192.168.2.1             0.0%     6     3.3     3.1     2.4     3.5         .....
  3:|-- 62.155.247.163          0.0%     6    10.9    11.6    10.9    12.6         .....
  4:|-- 217.5.95.170            0.0%     6    24.5    24.9    24.5    26.0         .....
  5:|-- 72.14.194.156           0.0%     6    23.9    25.1    23.2    30.4         .....
  6:|-- ???                   100.0%     6     0.0     0.0     0.0     0.0         ?????
  7:|-- 209.85.142.128          0.0%     6    24.5    24.9    23.6    25.8         .....
  8:|-- 108.170.227.227         0.0%     6    25.4    25.6    24.0    30.0         .....
  9:|-- 8.8.8.8                 0.0%     5    23.9    24.2    23.6    25.0          ....

JSON:

{
  "destination": "8.8.8.8",
  "statistic": {
    "1": {
      "avg_ms": 1.3946096666666667,
      "best_ms": 1.3157679999999998,
      "last_ms": 1.322044,
      "loss_percent": 0,
      "packet_buffer_size": 10,
      "packet_list_ms": [
        {
          "respond_ms": 1.322044,
          "success": true
        },
        {
          "respond_ms": 1.3157679999999998,
          "success": true
        },
        {
          "respond_ms": 1.546017,
          "success": true
        },
        null,
        null,
        null,
        null,
        null,
        null,
        null
      ],
      "sent": 3,
      "target": "10.200.1.1",
      "ttl": 1,
      "worst_ms": 1.546017
    },
    "2": {
      // ...
    }
  }
}

Usage

Usage:
  mtr TARGET [flags]

Flags:
      --buffer-size int     Cached packet buffer size (default 50)
  -c, --count int           Amount of pings per target (default 5)
  -h, --help                help for mtr
  -i, --interval duration   Wait time between icmp packets before sending new one (default 100ms)
      --json                Print json results
      --max-hops int        Maximal TTL count (default 64)
  -t, --timeout duration    ICMP reply timeout (default 800ms)

About

Golang native MTR implementation (Forked from Grafana's fork of Tonobo's project)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 68.2%
  • Shell 31.8%