4 ポイント 投稿者 GN⁺ 2023-07-02 | 1件のコメント | WhatsAppで共有
  • ping の結果をグラフで表示するツールで、複数ホストの ping 時間を可視化する
  • --cmd フラグを使うと、ホストへの ping の代わりにコマンドの実行時間をグラフで表示する
  • gping [host] の形式で実行し、--cmd 使用時は curl google.com のようなコマンドを対象に指定できる
  • aws:eu-west-1aws:ca-central-1 のようなクラウドリージョンの省略表記をサポートし、現在サポート対象は aws のみ
  • グラフの表示範囲と実行間隔、IP バージョン、ネットワークインターフェース、グラフィック方式、色、終了後のグラフ削除をオプションで調整できる
    • --watch-interval のデフォルト値は ping 0.2秒、cmd 0.5秒
    • --buffer のデフォルト値は30秒
    • --color#RRGGBB 形式と指定された色名をサポートする
  • Windows、Mac、Linux をサポートし、Homebrew、MacPorts、Scoop、Chocolatey、Fedora COPR、Cargo、Arch Linux、Alpine Linux、Ubuntu/Debian、Gentoo、FreeBSD、Docker、Flox、gah のインストール経路を提供する
  • Cargo でのインストールには rustc 1.67.0 以上が必要

1件のコメント

 
GN⁺ 2023-07-02
Hacker News のコメント
  • 複数のホストを同時に渡すと、同じグラフに描いてくれるのが本当に良い
    たとえば gping mydomain.com google.com は、「自分の Wi-Fi の問題なのか、ホスティング事業者の問題なのか」をすばやく確認するのにとても便利

    • mtr(Matt's traceroute) もこの用途には優れたツール
      グラフ表示はないが、自分の IP と宛先の間にあるホストについて、接続性、遅延、パケットロス、ばらつきを示してくれる
      https://www.bitwizard.nl/mtr/
      このスレッドで westurner が先に触れていたリンク: https://news.ycombinator.com/item?id=36549005
    • ホストの代わりにコマンドも渡せる。たとえば curl google.com を実行するような形
  • mtr は traceroute も実行する: https://en.wikipedia.org/wiki/MTR_(software)
    ネットワーク障害の切り分けによく使われ、通過するルーターの一覧と、各ルーターまでの平均ラウンドトリップ時間、パケットロスを表示するので、全体の遅延や損失の原因がどのルーター間リンクにあるのか把握できる
    Scapy には、vpython で 1 回の traceroute の経路を3D 可視化する機能がある。大学時代に複数の traceroute を流して、すべての経路を重ねて描くよう改造してみたことがあり、traceroute のパケットシーケンス全体を通して特定の経路が安定しているのか気になっていた: https://scapy.readthedocs.io/en/latest/usage.html#tcp-tracer...
    レイヤー 2 パケットを作るために root が必要なツールの実行を避ける方法として、setcap を使える: setcap CAP_NET_RAW /use/bin/python-scapy
    traceroute が点を不適切につないでしまうことはないのだろうか?

    • Prometheus exporter として mtr を動かしている。使っているのはたぶん https://github.com/mgumz/mtr-exporter
      1.1.1.1 と 8.8.8.8 に traceroute を実行するよう設定してあり、Prometheus でグラフを見ている
      自宅のインターネットが数日間かなり不安定だったあとで、この構成を作ることになった
      グラフについての動画も作った: https://video.nstr.no/w/hjTH3Vggn2fvpTrQitMmVP
    • その3D グラフは本当に驚きだ。ほとんど未来的なスタイルで動的に描かれていて、スクリーンセーバーにしたいくらい
    • MTR は 30 年前でもできたことなので、ここで何が追加されたのかはよく分からない。それでも 3D エクスポートは一度試してみたいし、共有に感謝
  • グラフと複数ホスト対応が気に入っている
    HTTPS は、データセンターのファイアウォールの後ろにある最後の数ホップでよく遮断される ICMP よりも多くの場所に到達できるので、gping + cmd + curl を使う bash 関数もかなり有用かもしれない
    ICMP の数値は誤解を招くことがある。たいていの OS はレート制限をかけるし、多くのルーターはバックプレーン CPU の負荷に応じて ICMP を低優先度で処理するが、これは実際のパケット転送能力とは無関係
    IPv4 と IPv6 の両方のアドレスを持つホストに -4 を使うと、表示上は IPv4 アドレスを見せつつ、実際にはIPv6 アドレスに ping を送っているように見える。他の人もそうだろうか? バージョンは 1.8.0

  • ゆるく関連するツールとして、これも「グラフ付き ping」だが性格は異なる: https://github.com/denilsonsa/prettyping

  • 機能要望:
    ケーブルをいじりながらフィードバックが必要になることがたまにある。その用途向けに即席ツールを作ったことはあるが、実質的には ping をラップした雑なツール
    pingu の力を見よ: https://pastebin.com/qTfdZ7C8

    • 標準の ping ユーティリティにも、すでに -a による音の鳴る pingがある。応答のたびにターミナルベルを鳴らす
    • この提案を GitHub issue として追加してもらえる? 気に入ったし、追加できるかどうかしっかり確認してみたい
  • 関連していて非常に重要: https://www.cloudflare.com/learning/network-layer/what-is-mt...
    MTR が実際に何を表示しているのかと、その理由を必ず理解しておくべき

  • gping は好きだが、もっと掘り下げた情報や manpage が欲しい
    付属のドキュメントは説明があまり多くない。たとえば t/o が何なのか、値がどう計算されているのか分かりづらく、GitHub ページもあまり助けにならない

    • その通り、この点はぜひ改善したい。プロジェクトが当初の予想よりはるかに多く使われるようになって、ドキュメント整備がやや不足している
      ちなみに t/o は timeouts のこと
  • 一緒に見るとよいもの: ministatgnuplothttps://www.brendangregg.com/dtkshdemos.html

  • 検索エンジンではなく「確率的帯域測定ツール」だった bing が懐かしい
    自分と対象の間の制限された帯域幅とは無関係に、任意の 2 つのネットワークリンク間の帯域幅を教えてくれた。自分自身は 33.6Kbps モデム回線で数ホップ離れてつながっていたのに、T-3 や OC-48 バックボーンリンクの速度を測定できた
    長くは続かず放棄されたようで、主要な Linux ディストリビューションもパッケージ提供をやめてしまった。同じ測定ができる別のツールは知らない

  • IPv6 以前の昔は、IPv4 の geoip がかなり機能していて、Windows には IP を地図上に表示できる traceroute 風ツール NeoTrace Pro があった
    記憶では、中間装置ごとに再度 ping を打つ ping マップのような機能も入っていた
    今ではすべての中間装置が応答するわけでもなく、キャリアのオーバーレイや SDN のフロー管理も多すぎて、IP を特定の物理位置に対応付けるのが難しい。小さな会社が Class C を買って ARIN データベースに会社の電話番号を載せていた固定電話のような時代とは違う

    • pingplotter に似たツールだったかな?