www.zyun.jp

Globalpingとは?

RIPE Atlasを調べていたら、Globalpingというサービスを見つけたので、利用してみました。

Globalpingとは

  • Globalpingはネットワークテストを世界中のプローブから実施できるサービス
  • ping、traceroute、DNSルックアップ、MTR、HTTPリクエストが可能
  • プローブは企業や個人によってホスティングされている
  • Web UI、CLI、REST APIを通じて利用可能
  • 立ち上げは2023年5月、jsDelivrがオープンソースプロジェクトとして立ち上げ
  • jsDelivrは、JavaScriptなどのOSSを配信するCDNネットワークです

つまり、世界中からpingやHTTPリクエスを実行できるサービスですね。今の所、RIPE AltasのようにWebから履歴を閲覧したりする機能はないようです。この辺りはPrometheusやZabbixなどに組み込むことにより、計測し、時系列で分析することは可能ですね。

実行方法

一番簡単に試すとしたら、Web UIからの実行でしょう。試してみて下さい。

https://globalping.io/

CLIの場合は、以下の引数となります。

 globalping ping 8.8.8.8
> Falkenstein, DE, EU, Hetzner Online GmbH (AS24940)
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=5.17 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=4.96 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=116 time=4.91 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 4.910/5.011/5.166/0.111 ms

ロケーションを指定したり、回数を指定したりできます。ソースコードを確認してみましたが、pingはpingコマンドをそのまま利用している様でした。

 globalping ping 8.8.8.8 from Japan --limit 3
> Chiba, JP, AS, Oracle Corporation (AS31898)
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=120 time=1.03 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=120 time=1.10 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=120 time=1.04 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 1.028/1.052/1.095/0.030 ms

> Tokyo, JP, AS, xTom Japan Corporation (AS3258), u-gbzret4d
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=60 time=1.26 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=60 time=1.24 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=60 time=1.32 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 1.239/1.271/1.320/0.035 ms

> Osaka, JP, AS, Oracle Corporation (AS31898)
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=120 time=0.826 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=120 time=0.814 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=120 time=0.827 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1008ms
rtt min/avg/max/mdev = 0.814/0.822/0.827/0.005 ms

CLIのドキュメントが充実しており、一通りの操作はこちらで確認できるでしょう。

レートリミット

利用にあたっては、レートリミットが課されています。

  • 無登録
    • 1時間あたり250テスト
  • 登録済み
    • 1時間あたり500テスト

先ほど実行した、globalping ping 8.8.8.8 from Japan --limit 3だと3テストを消費します。

また、クレジットという概念があり、クレジットがあるとテスト回数の上限を超えた場合でも、クレジット残高 に応じてテスト回数を超えてテストが実行可能になります。

クレジットを増やすには、

  • スポンサーになる
    • 1ドルごとに2000クレジット
    • Githubスポンサーで寄付するたびにクレジットが付与されます
  • プローブをホストする
    • 1プローブが1日稼働ごとに150クレジット/日

となっています。私の場合は今、2プローブほどホストしているので毎日300クレジットもらえてます。よって、 1日で最大実行可能なテストは500*24+300=12,300テストとなります。また、クレジットに有効期限はなく、利用しなければ 残高として蓄積されていく様です。

レートリミットの状態は、CLIで確認可能です。

# 登録済みユーザーの状態
 globalping limits
Authentication: token (xxx)

Creating measurements:
 - 500 tests per hour
 - 0 consumed, 500 remaining

Credits:
 - 0 credits remaining (may be used to create measurements above the hourly limits)

# 6クレジット消費さている状態
 globalping limits
Authentication: token (xxx)

Creating measurements:
 - 500 tests per hour
 - 4 consumed, 496 remaining
 - resets in 28 minutes

Credits:
 - 294 credits remaining (may be used to create measurements above the hourly limits)

2つ登録してみたところ、1日後に300クレジット付与されていました。

img

Probeのホスティング

ProbeはDockerで実行します。

docker run -d --log-driver local --network host --restart=always --name globalping-probe globalping/globalping-probe

上記は未登録状態のため、クレジットがもらえません。クレジットが欲しい場合は、サインアップの上、ダッシュボードから登録コマンドを 確認すると、TOKENを含めたコマンドが確認できるのでそちらを利用します。

また、月10ドル以上の寄付でハードウェアプローブも入手可能です。

最後に

現時点で日本にはeyeball Network(エンドユーザを抱えるISP)は6個の様です。

img Globalping, Networkリストより

RIPE Atlas以外にも世界中のネットワークからpingなどの測定が可能なOSSプロジェクトが増えました。今後もProbeが増えていくといいですね。

← Back to Blog