落ちているのか、それともあなただけか?
多観測点チェックは、同じテスト——ping、HTTP リクエスト、DNS ルックアップ——を、あなたが自分のネットワークから実行するのと同時刻に、他の人のネットワーク上、他の国にあるプローブから実行します。この 1 つの変更により、答えようのない問い(「私のところでは動く——他に誰か見ている人はいる?」)が比較に変わります。すべての観測点が失敗すれば対象は落ちており、あなただけが失敗するなら、問題はあなたとその対象の間の経路に住んでいます。本ガイドでは、第 2 の観測点が実際に何を証明するのか、誰もが一度は落ちる anycast の罠、そしてこのサイトの グローバル ping でチェックを実行する方法を説明します。
「私のところでは動く」問題
どのインシデントチャンネルも、同じ 1 時間のうちに両方の文を聞いたことがあります。「サイトが落ちている」と「私のところでは動く」です。どちらも正直な報告であり得ます。単一の観測点——あなたのノート PC、あなたのオフィス、1 台の監視マシン——から実行されたテストは、正確に 1 つのことを測定します。その 1 つのネットワークの、その 1 つの経路における、その 1 つの瞬間の経験です。全員に対して落ちているサービスと、あなたに対してだけ壊れた経路を見分けることはできません。病んだトランジットプロバイダ、地域的なフィルタリング規則、汚染された、あるいは古くなった答えを返す DNS リゾルバ、あなたが聞いたこともない 3 ネットワーク先のピアリング紛争——単一の観測点の中から見れば、これらはすべて同一に見えます。宛先不明の失敗なのです。
サポートチケットとステータスページも同じ幾何学に苦しみます。ステータスページが「正常」と言うのは、プロバイダ自身のプローブ——プロバイダ自身の近所に座っています——がサービスに問題なく届く一方で、地域全体が届かないからです。ユーザーが「落ちている」と報告するのは、その ISP がトラフィックをブラックホールに飲み込んでいる一方で、サービスが順調に動いているからです。どちらの側も嘘をついていません。どちらも 1 つの椅子から一般化しているのです。直し方は、同じ椅子からのより高い精度ではありません。椅子を増やすことです。
第 2 の観測点が証明すること
他のネットワーク——他の自律システム、他の国、他の種類の接続——にプローブを追加し、まったく同じテストをそれらすべてから同時に実行します。するとパターンが自ら議論します。3 大陸 5 ネットワークのプローブがすべて同じ時刻に同じように失敗すれば、共通因子は対象です。サービス、そのホスト、あるいはそのネットワーク自体が落ちており、どれだけローカルでいじってもそれは変わりません。4 つが成功し、あなたの状況に最も近いプローブだけが失敗する——あるいはあなただけが失敗する——なら、共通因子は反転します。対象は生きており、断裂は失敗した観測点が共有する経路のどこかにあります。独立した観測点同士の一致こそ、「落ちているか?」という問いが持ち得る、証明に最も近いものです。
このサイトが使うプローブは、jsDelivr が運営する Globalping ネットワークに属します。世界中のボランティアがホストする何千もの小さなソフトウェアプローブで、データセンターのサーバーから家庭の接続まであらゆる場所にあり、標準化された測定——ping、traceroute、MTR、DNS、HTTP——を受け付けて、見たものを報告します。価値はどの 1 つのプローブにもありません。1 つの都市のボランティアマシンは逸話です。価値は、その逸話たちが独立していることにあります。異なるネットワーク、異なるアップストリーム、異なる障害モードが、すべて同じ時刻に同じ問いに答えているのです。
anycast と CDN の注意点
ここに罠があり、誰もが一度は落ちます。異なる場所からの異なる答えは、すべて正しいことがあります。現代のサービスは 1 つの場所の 1 台のマシンではありません。Anycast は同じアドレスを多くの場所からアナウンスするため、フランクフルトのプローブとサンパウロのプローブが「同じ」 IP にパケットを送るとき、話しているのは異なる物理エッジであり、おそらく異なるインフラ大陸上にあります——片方は健全で、片方は再起動中です。CDN は各クライアントを近くのエッジへ誘導し、エッジは 1 つの地域で落ちていても、サービスは他の場所では完璧であり得ます。プローブ間の相違は自動的に矛盾ではありません。anycast の対象にとって、相違は設計が意図どおりに働いている証拠であり、問いは「落ちているか?」ではなく「どこで落ちているか?」になります。
DNS は反対側から同じ点を述べます。権威サーバーとリゾルバは設計上異なる答えを渡します——GeoDNS は「最も近い」エッジのアドレスを返し、EDNS Client Subnet によりリゾルバはあなたの近所の代わりに尋ねることができるため、東京のプローブのリゾルバとテキサスのものは、同じ名前に対して正当に異なるアドレスを受け取ります(世界がどのレコードを持っているかが問いなら、DNS 伝播チェッカー で並べて比較してください)。異なるプローブからの異なるアドレスは、不一致の証拠ではありません。それは、その名前がローカライゼーションを行っている証拠であり——そして各地域のユーザーが実際にどのエッジに出会うかを教えてくれます。
問いに答える測定を選ぶ
グローバル ping は 5 種類の測定を提供し、うまく選ぶことはたくさん実行することより重要です。それぞれが異なる問いに答え、間違ったものを実行すると、あなたが尋ねていないことに対して自信に満ちた答えが得られます。誰かの結果を見る前に、種類を症状に対応させてください。
Ping は最も狭い問いに答えます。対象はここから到達可能か、途中でどれだけ失われるか? それは「このネットワークはあのホストをそもそも見られるか」の正しいテストであり、アプリケーションに関するあらゆることの間違ったテストです——ホストは、その Web サービスが死んでいても ping に答えることがあります。HTTP はユーザーの問いに答えます。実際のリクエストはそこから成功するか、ステータスコードは何か、全体でどれだけ時間がかかったか? 議論が「サイトは動く/サイトは動かない」なら、複数のプローブからの HTTP が双方が受け入れるべき証拠です。DNS は名前の問いに答えます。各地域はこの名前に対して実際にどのアドレスを受け取るか? それが「サービスが落ちている」と「私の地域は死んだエッジへ送られている」を分ける方法です。
Traceroute は「どこ」の問いに答えます。ホップごとに、このプローブから対象への経路はどこで止まり、詰まり、予期しない場所へ逸れるか? それは失敗している観測点から実行してください。動いている観測点からではありません。MTR は時間をかけた traceroute です——同じ経路を繰り返し探るため、喪失と遅延が 1 つの凍結したサンプルではなく、ホップごとの率として表示されます。「断続的に壊れる」ための道具であり、その場合、単一の traceroute は経路のご機嫌な日を捕らえます。5 つすべてに通じる規律:どの障害をテストするのかを決め、それを見られる唯一の測定を選び、他のものは待たせてください。
自分を欺かずに結果を読む
人々が習慣的に融合させる 2 つの数字を分けることから始めます。喪失——決して戻ってこなかったリクエスト——は損害であり、遅延——ゆっくり戻ってきたリクエスト——は不快感であり、両者は原因も直し方も異なります。100% の喪失を示すプローブは壁を見つけました。喪失ゼロで高い遅延を示すプローブは、長い道、あるいは混雑した道を見つけたのであり、後者を「落ちている」と報告することは、健全なサービスが夜中に起こされる方法です。次に同種同士で比較します。最良でも最悪でもなく、中央値のプローブを物語としてください。1 つのプローブが突飛な外れ値——膨大な遅延、他の誰も見なかったタイムアウト——を返すのは、そのプローブのその瞬間、そのホスト、あるいはそのアップストリームについての陳述です。それが対象についての証拠になるのは、独立したプローブがそれに同意するときだけです。
帳簿付けにも注意してください。隣人たちが成功しているのに対象を「オフライン」と報告する 1 つのプローブは、最も可能性として、自分自身を報告しています——クラッシュしたプローブ、落ちた家庭の接続、ローカルフィルター——そしてボランティアのプローブにはそれらすべてがあります。それが、誰も中央で運営していないネットワークの代償です。タイムスタンプを記録し、古くなった結果やキャッシュされた結果はニュースではなく歴史として扱ってください。そしてすべてのプローブが対象は生きていると一致しているのに、あなたのユーザーがなお届かないときは、両方を信じてください。あなたは、その障害が実在し、かつ狭いことを学んだのです——それはあなたのプローブのどれもたまたま共有しなかった経路に住んでおり、それは発見であって矛盾ではありません。
正直な限界
プローブはボランティアであり、ネットワークの振る舞いもそれにふさわしいものです。プローブは来ては去ります——今朝利用できた場所が今夜はオフラインかもしれませんし、カバー範囲は一部の国では密で、他の国では薄く、存在しないほどです。そしてユーザーがいるからという理由で、特定の ISP の内側のプローブを要求することはできません。プローブの居場所も、ほとんどがデータセンターと愛好家の接続であり、実際のユーザーが閲覧する住宅用やモバイルのネットワークではありません。データセンターのプローブは、サービスが接続の良い場所から到達可能であることを証明し、それは問いの大部分ですが、全部ではありません。地図は、寛大に描かれた世界のネットワークのサンプルとして扱ってください——世界そのものとしてではありません。
このサイトによるこのネットワークの利用は、意図的に控えめです。Globalping の匿名の共有無料ティア上で動作するため、チェックには訪問者ごとの制限があり、結果はボランティアのリソースを叩き続けるのではなく短時間キャッシュされます——チェックが待つよう求めるなら、それは共有ティアが共有されているということです。これらの制限の中で、作業パターンは次のとおりです。まずここで多観測点チェックを実行して「落ちているのか、私だけか」を決着させ、次に勝者の側を深掘りします——サイトへの 1 回の詳細な観察が教えてくれるすべてのことについては ウェブサイトヘルスチェック を、そして何かを変更した後は グローバル ping から新しいラウンドを。全員に対して落ちている場合と、あなたに対してだけ落ちている場合では、必要な午後が異なります。他人の観測点の 10 分こそ、あなたがどちらの午後を過ごしているのかを知る方法なのです。
よくある質問
何か所からテストすべきですか?
このツールは 1 回のチェックで最大 4 か所まで実行し、うまく選んだ 4 つは無作為に選んだ 40 に勝ります。議論に合う広がりを選んでください。自分のユーザーの近くのプローブ 1 つ、別の大陸のもの 1 つ、対象のホスティングの近くのもの 1 つ、そして対照として遠くのどこかのもの 1 つです。近いプローブと遠いプローブが一致すれば、答えが得られます。近いものだけが失敗するなら、問題の場所も特定できています。場所を増やすことが主に役立つのは、最初の 4 つがまだ読めないパターンで食い違うときです。
プローブがオフラインと言っています——サイトは落ちていますか?
その証拠だけでは言えません。1 つのプローブはそれ自体がオフラインであることがあります——クラッシュした、切断された、あるいは自分のフィルターの背後にいる——そしてボランティアのプローブにはそれを保証する運営者はいません。「落ちている」は一致から引き出す結論です。異なるネットワーク上の複数の独立したプローブが、同じ時刻に同じように失敗することです。隣人たちが成功しているのに 1 つのプローブが失敗するのは、そのプローブの経路について語っているのであり、正直な報告は「落ちている」ではなく「その 1 つの観測点からは到達不能」です。
なぜ同じドメインがプローブによって異なるアドレスに解決されるのですか?
そう働くように作られているからです。GeoDNS と EDNS Client Subnet により、DNS の答えはクエリがどこから来たように見えるかに依存するため、各地域には最も近い健全なエッジのアドレスが渡されます。anycast と CDN もルーティング層で同じ仕掛けに依存します。異なるプローブからの異なるアドレスは、ローカライゼーションが仕事をしている証拠です。それが発見になるのは、1 つの地域のアドレスが死んでいて他が動いているときだけです——そのとき、その名前はその地域のユーザーを壊れたエッジへ忠実に送っているのです。