コンテンツにスキップ

サイトのトラブルシューティングのための情報収集

概要

問題を診断するためにできるだけ多くの情報を収集し、Cloudflareサポートに適切な詳細を提供することが重要です。この記事では、Cloudflareサポートから一般的に要求されるトラブルシューティング情報の収集方法を説明します。


HARファイルの生成

HTTPアーカイブ(HAR)は、リクエストおよびレスポンスヘッダー、ボディコンテンツ、ページの読み込み時間を含むすべてのウェブブラウザリクエストを記録します。

一部のブラウザでは、ブラウザ拡張機能が必要であるか、HARを生成できない場合があります。ブラウザ拡張機能をインストールする際は、拡張機能プロバイダーの指示に従ってください。

Chromeでの手順

  1. ブラウザページで右クリックし、要素を検査を選択します。

  2. 開発者ツールがブラウザの下部または左側に表示されます。ネットワークタブをクリックします。

Chrome開発者ツールのHARネットワークタブのスクリーンショット

  1. ログを保持にチェックを入れます。

  2. 録画をクリックします。

Chrome開発者ツールのHAR録画ボタン

  1. 問題を引き起こすURLにアクセスします。問題が発生したら、ネットワークタブ内の任意の項目を右クリックし、コンテンツ付きでHARとしてすべて保存を選択します。

Chrome開発者ツールのHAR保存メニュー

  1. HARファイルをサポートチケットに添付します。

Firefoxでの手順

  1. アプリケーションメニューから、ツール > ウェブ開発者 > ネットワークを選択するか、Ctrl+Shift+I(Windows/Linux)またはCmd+Option+I(OS X)を押します。

  2. 問題を引き起こすURLにアクセスします。

  3. 問題を再現した後、右クリックしてすべてをHARとして保存を選択します。

Microsoft Edgeでの手順

  1. 開発者ツールに移動し(F12をショートカットとして使用)、ネットワークタブを選択します。

  2. 問題を引き起こすURLにアクセスします。

  3. 問題を再現した後、HARとしてエクスポートをクリックし、次に**名前を付けて保存…**を選択します。

Safariでの手順

  1. Safariで、ブラウザウィンドウの上部に開発メニューが表示されていることを確認します。表示されていない場合は、Safari > 環境設定 > 詳細に移動し、メニューバーに開発メニューを表示を選択します。

  2. 開発 > ウェブインスペクタを表示に移動します。

  3. 問題を引き起こすURLにアクセスします。

  4. ウェブインスペクタ内のリソースをCtrl + クリックし、HARをエクスポートをクリックします。

モバイルでの手順

Androidの場合:

  1. モバイルデバイスでUSBデバッグモードを有効にします。

  2. chrome://inspect/#devicesに移動します。

  3. デバッグモードが有効になっている場合、以下のように「リモートターゲット」の下にデバイスが表示されます:

Androidのデバッグモードでデバイスを検査する場所

  1. URLを入力し、開く検査を選択してChromeのDevToolsを開きます。

  2. DevToolsウィンドウでネットワークタブを選択します。

  3. ログを保持にチェックを入れます。

  4. 録画をクリックします。

Chromeの開発者ツールで録画ボタンを見つける場所

  1. 問題を引き起こすURLにアクセスします。問題が発生したら、ネットワークタブ内の任意の項目を右クリックし、コンテンツ付きでHARとしてすべて保存を選択します。

HARコンテンツを保存する方法

  1. HARファイルをサポートチケットに添付し、影響を受けたSamsungデバイスからの画面録画も添付します。Samsungデバイスからの録画方法については、Samsungのドキュメントを参照してください。

iPhoneの場合:

OktaまたはAppleのサポート記事を参照して、iOSデバイスからHARファイルを生成する方法を確認してください。HARファイルをサポートチケットに添付し、影響を受けたiOSデバイスからの画面録画も添付します。Appleデバイスには現在組み込みの画面録画機能があります。


コンソールログのエクスポート

リクエストがブラウザによって発行されないかキャンセルされた場合(例えば、CORSのため)、HARファイルに加えてJSコンソールログ出力を取得する必要があります。これにより、根本原因を特定できます。

Chromeでの手順

  1. 開発者ツールバーからコンソールタブに移動します。
  2. コンソール設定に移動し、ログを保持を選択します。
  3. コンソールを開いたまま、問題を再現する手順を実行します。
  4. コンソールタブ内の任意の項目を右クリックし、ログファイルとして保存を選択します。
  5. ログファイルをサポートチケットに添付します。

Chromeの開発者ツールでコンソールタブを見つける方法

Firefoxでの手順

  1. ウェブ開発者ツールバーからコンソールタブに移動します。
  2. コンソール設定に移動し、ログを保持およびタイムスタンプを表示を選択します。
  3. コンソールを開いたまま、問題を再現する手順を実行します。
  4. 右クリックして、すべてのメッセージを選択し、表示されているメッセージをファイルにエクスポートを選択します。
  5. ログファイルをサポートチケットに添付します。

Microsoft Edgeでの手順

  1. 開発者ツールバーからコンソールタブに移動します。
  2. コンソール設定に移動し、ログを保持を選択します。
  3. コンソールを開いたまま、問題を再現する手順を実行します。
  4. コンソールタブ内の任意の項目を右クリックし、ログファイルとして保存を選択します。
  5. ログファイルをサポートチケットに添付します。

Safariでの手順

  1. ウェブインスペクタバーからコンソールタブに移動します。
  2. ログを保持のボックスにチェックを入れます。
  3. コンソールを開いたまま、問題を再現する手順を実行します。
  4. すべてのメッセージを選択し、右クリックして選択したものをログファイルに保存を選択します。
  5. ログファイルをサポートチケットに添付します。

NetLogダンプのキャプチャ

プロトコルに関連する問題(ERR_QUIC_PROTOCOL_ERRORERR_HTTP2_PROTOCOL_ERRORなどのエラー)をさらにトラブルシューティングするために、サポートチームがNetLogダンプの提供を求める場合があります。

  1. 新しいタブを開き、使用しているブラウザに応じて以下を入力します:
  • chrome://net-export
  • edge://net-export
  • opera://net-export
  1. ディスクへのログの開始ボタンをクリックします。
  2. 別のタブでネットワークの問題を再現します。 (chrome://net-export/edge://net-export/またはopera://net-exportタブを開いたままにしておく必要があります。そうしないと、ログが自動的に停止します)
  3. ログの停止ボタンをクリックします。
  4. ログファイルをサポートチケットに添付します。

リクエストを処理しているCloudflareデータセンターを特定する

データセンターの地図は、Cloudflareステータスページにリストされており、大陸別に整理されています。 データセンター名の3文字コードは、最寄りの主要国際空港のIATAコードです。 ブラウザのリクエストを処理しているCloudflareデータセンターを特定するには、次のURLにアクセスします: http://``_www.example.com_``/cdn-cgi/trace.

www.example.comをあなたのドメインとホスト名に置き換えます。出力からcoloフィールドをメモしてください。


curlを使用してリクエストをトラブルシューティングする

curlは、HTTP/HTTPSリクエストを送信するためのコマンドラインツールで、トラブルシューティングに役立ちます:

  • HTTP/HTTPSパフォーマンス
  • HTTPエラーレスポンス
  • HTTPヘッダー
  • API
  • サーバー/プロキシレスポンスの比較
  • SSL証明書

次のコマンドを実行して、あなたのウェブサイトに標準のHTTP GETリクエストを送信します(www.example.comをあなたのホスト名に置き換えます):

curl -svo /dev/null http://www.example.com/

このcurlコマンドの例は、HTTPレスポンスとリクエストヘッダーの詳細を返しますが、ページボディの出力は破棄します。curlの出力は、HTTPレスポンスとCloudflareが現在サイトのトラフィックをプロキシしているかどうかを確認します。

以下のセクションでは、HTTPエラー、パフォーマンス、キャッシング、SSL/TLS証明書のトラブルシューティングに関するヒントを示します:

HTTPエラー

CloudflareからのレスポンスでHTTPエラーをトラブルシューティングする際は、オリジンがエラーを引き起こしたかどうかを確認するために、オリジンウェブサーバーに直接リクエストを送信してテストします。HTTPエラーをトラブルシューティングするには、CloudflareのプロキシをバイパスしてオリジンウェブサーバーのIPアドレスに直接curlを実行します:

curl -svo /dev/null http://example.com --connect-to ::203.0.113.34

パフォーマンス

curlは、-wまたは*—write-out* curlオプションを使用してHTTP/HTTPSリクエストのレイテンシまたはパフォーマンスの低下を測定します。以下のcurlの例は、TLSハンドシェイクの時間、DNSルックアップ、リダイレクト、転送など、リクエストトランザクションのいくつかのパフォーマンスベクトルを測定します:

curl -svo /dev/null https://example.com/ -w "\nContent Type: %{content_type} \
\nHTTP Code: %{http_code} \
\nHTTP Connect:%{http_connect} \
\nNumber Connects: %{num_connects} \
\nNumber Redirects: %{num_redirects} \
\nRedirect URL: %{redirect_url} \
\nSize Download: %{size_download} \
\nSize Upload: %{size_upload} \
\nSSL Verify: %{ssl_verify_result} \
\nTime Handshake: %{time_appconnect} \
\nTime Connect: %{time_connect} \
\nName Lookup Time: %{time_namelookup} \
\nTime Pretransfer: %{time_pretransfer} \
\nTime Redirect: %{time_redirect} \
\nTime Start Transfer: %{time_starttransfer} \
\nTime Total: %{time_total} \
\nEffective URL: %{url_effective}\n" 2>&1

このタイミング出力の説明はCloudflareブログにあります。

キャッシング

cURLは、キャッシングに影響を与えるHTTPレスポンスヘッダーを確認するのに役立ちます。特に、Cloudflareのキャッシングをトラブルシューティングする際は、いくつかのHTTPヘッダーを確認してください:

  • CF-Cache-Status
  • Cache-Control/Pragma
  • Expires
  • Last-Modified
  • s-maxage

SSL/TLS証明書

curlで証明書を確認する

次のcurlコマンドは、HTTPSリクエスト中にCloudflareによって提供されるSSL証明書を表示します(www.example.comをあなたのホスト名に置き換えます):

Terminal window
curl -svo /dev/null https://www.example.com/ 2>&1 | egrep -v "^{.*$|^}.*$|^* http.*$"

オリジン証明書を表示するには(インストールされていると仮定)、以下の203.0.113.34をオリジンウェブサーバーの実際のIPアドレスに置き換え、www.example.comをあなたのドメインとホスト名に置き換えます:

Terminal window
curl -svo /dev/null https://www.example.com --connect-to ::203.0.113.34 2>&1 | egrep -v "^{.*$|^}.*$|^* http.*$"

TLSバージョンのテスト

ブラウザのサポートをトラブルシューティングしたり、サポートされているTLSバージョンを確認したりする場合、curlを使用して特定のTLSバージョンをテストできます。次の—tlsv1.Xおよび—tls-maxオプションをcurlに追加します:

  • --tlsv1.0 --tls-max 1.0
  • --tlsv1.1 --tls-max 1.1
  • --tlsv1.2 --tls-max 1.2
  • --tlsv1.3 --tls-max 1.3

Cloudflareを一時停止する

詳細については、Cloudflareを一時停止するを参照してください。


トレースルートを実行する

トレースルートは、ネットワークを横断するパケットのルートレイテンシを測定するネットワーク診断ツールです。ほとんどのオペレーティングシステムはtracerouteコマンドをサポートしています。Cloudflareをプロキシしたウェブサイトで接続の問題が発生した場合、Cloudflareサポートに支援を求める際には、トレースルートの出力を提供してください。

以下の指示に従って、異なるオペレーティングシステムでトレースルートを実行します。以下の例では、www.example.comをあなたのドメインとホスト名に置き換えます:

Windowsでトレースルートを実行する

  1. スタートメニューを開きます。

  2. 実行をクリックします。

  3. コマンドラインインターフェースを開くには、cmdと入力し、OKをクリックします。

  4. コマンドラインプロンプトで、次のように入力します。IPv4の場合 -

Terminal window
tracert www.example.com

IPv6の場合 -

Terminal window
tracert -6 www.example.com
  1. Enterを押します。

  2. 結果をコピーしてファイルに保存するか、別のプログラムに貼り付けることができます。

Linuxでトレースルートを実行する

  1. ターミナルウィンドウを開きます。

  2. コマンドラインプロンプトで、次のように入力します:

IPv4の場合 -

Terminal window
traceroute www.example.com

IPv6の場合 -

Terminal window
traceroute -6 www.example.com
  1. 結果をコピーしてファイルに保存するか、別のプログラムに貼り付けることができます。

Mac OSでトレースルートを実行する

  1. ネットワークユーティリティアプリケーションを開きます。
  2. トレースルートタブをクリックします。
  3. 適切な入力フィールドにドメインまたはIPアドレスを入力し、トレースを押します。
  4. 結果をコピーしてファイルに保存するか、別のプログラムに貼り付けることができます。

または、Mac OSのターミナルプログラムを使用する際は、上記のLinuxトレースルートの指示に従ってください。


CF-RAYヘッダーをログに追加する

CF-RAYヘッダーは、Cloudflareのネットワークを通じてウェブリクエストを追跡します。問題をトラブルシューティングする際には、CloudflareサポートにウェブリクエストのCF-RAYを提供してください。また、以下のスニペットを使用して、オリジンウェブサーバーの設定を編集することで、ログにCF-RAYを追加できます。

Apacheウェブサーバーの場合、%{CF-Ray}iをLogFormatに追加

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" %{CF-Ray}i" cf_custom

Nginxウェブサーバーの場合、$http_cf_rayをlog_formatに追加

log_format cf_custom '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'$http_cf_ray';

MTRを実行する

トレースルート(MTR)は、トレースルートとpingを組み合わせたツールで、ネットワーク接続と速度をテストするための一般的な方法です。ネットワークパスに沿ったホップに加えて、MTRは宛先へのルートに沿ったレイテンシとパケットロスに関する情報を常に更新して表示します。これにより、ネットワークの問題をトラブルシューティングする際に、リアルタイムでパス上で何が起こっているかを確認できます。

MTRは、トレースルートと同様の方法でネットワークパスを発見し、その後、情報を収集し続けるために定期的にパケットを送信して、ネットワークの健康と速度に関する更新されたビューを提供します。

トレーサルートと同様に、MTRはICMPまたはUDPを使用して送信パケットを処理しますが、戻りパケット(タイプ11:タイムエクスシーデッド)にはICMPに依存します。

MTRを使用してネットワークパスレポートを生成するにはどうすればよいですか?

NIXベースのマシンでのMTRの使用

一般的に、次のようにMTRを使用します:

Terminal window
mtr -rw <dest_hostname> 例: mtr -rw one.one.one.one

または、宛先IPを使用して:

Terminal window
mtr -rw <dest_IP> 例: mtr -rw 1.1.1.1

MTRの分析について詳しく説明しているこのドキュメントを参照してください:MTRの読み方


パケットキャプチャを実行する

なぜ、いつパケットキャプチャが必要ですか?

レイヤー3/4で発生する問題は、リクエストがCloudflareのログシステムに到達する前に発生するため、HTTPログには表示されません。したがって、接続リセット、パケットロス、またはSSLハンドシェイクの失敗に関連する問題のトラブルシューティングは、パケットレベルでの深い調査なしでは難しい場合があります。

Cloudflareによって生成されるいくつかのHTTPエラー(520s524s、および525sなど)は、レイヤー3/4での根本的な問題を示しており、さらなる調査のためにパケットキャプチャが必要になる場合があります。

パケットキャプチャを実行する方法

Cloudflareは、パケットキャプチャを実行するためにWiresharkを推奨しています。_tcpdump_コマンドラインの使用方法については、こちらの記事を参照してください。

  1. バックグラウンドでデータを送信している可能性のあるすべてのプログラム/ブラウザタブを閉じて、後で多くの表示フィルターを使用する必要がないようにします。
  2. Wiresharkのキャプチャフィルターを作成します(詳細についてはこちらの記事を参照してください)。
  3. 適切なインターフェースを選択します(例:Wi-Fi: en0)。どのインターフェースを使用するか不明な場合、Wiresharkは各インターフェースのI/Oグラフを提供してヒントを与えます。
  4. 左上隅の青いサメのひれアイコンをクリックして、パケットキャプチャを開始します。
  5. キャプチャを実行しながら問題を再現します。
  6. 左上隅の赤い四角いアイコンをクリックして、パケットキャプチャを停止します。
  7. .pcapファイルとして保存し、サポートチケットに添付します。

関連リソース