本記事ではTiger Bridge、または、Surveillance Bridge(以下、この2つのアプリケーションをTigerアプリケーションと呼びます)を使用しているユーザーが障害に遭遇した場合において、Tigerアプリケーションとクラウドストレージ間の通信をWiresharkで観察することによりトラブルシューティングを実施する方法について説明します。
Wiresharkについて
ネットワーク、および、それに接続された機器、アプリケーションで障害が起きた際に、ネットワークプロトコルアナライザーでネットワーク上の通信の様子を確認し、障害の原因を突き止める場合があります。
多くのソフトウェアやハードウェアがネットワークプロトコルアナライザとして、世の中にありますが、Wiresharkと呼ばれるアプリケーションを使われている方が多いと思います。
WiresharkはWireshark Foundationが無料で提供するオープンソースツールです。無料ではありますが、ライセンス条件を守って使用してください。以下はWiresharkアプリケーションの「Help」>「Wiresharkについて」の一部抜粋です。
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
対象システムの条件
今回説明する対象システムの条件は以下の通りです。
- クラウドストレージはオブジェクトストレージでありREST APIで外部と通信する
- トラブルシューティングを目的とするため暗号化しない通信を許容できる環境
- Wiresharkアプリケーションをインストールすることができるサーバー、または、PC(以下サーバーとします)
- トラブルシューティング作業の前後でTigerアプリケーションとクラウドストレージの通信を接続、接続解除できること(Tigerアプリケーションとクラウドストレージの接続、接続解除に慣れた方が実施することをお勧めします)
- WiresharkのバージョンはStable Release 4.2.0
- Tiger Bridgeのバージョンは5.0.3.48、Surveillance Bridgeのバージョンは2.0.0.138
トラブルシューティングのステップ
Wiresharkにてトラブルシューティングを行う場合にはWiresharkのインストールも含め以下のステップになります。
- Wiresharkのインストール
- Tigerアプリケーションの設定変更(SSL/TLSの解除)
- IPアドレスの特定
- 通信の観察
Wiresharkのインストール
WiresharkインストーラーをWiresharkのホームページよりダウンロードし、Tigerアプリケーションが動作しているサーバーにインストールします。
TigerアプリケーションはWindows OSで動作するので「Windows x64 installer」を使用します。
インストール方法の詳細はホームページを参照してください。また、多くのユーザーに使われている人気があるアプリケーションなので「Wireshark インストール」等のキーワードで検索すると丁寧に教えてくれているサイトもあるようです。
Tigerアプリケーションの設定変更
現在、クラウドストレージに接続し、Tigerアプリケーションが動作している場合は一度クラウドストレージとの接続を解除する必要があります。Tiger Bridgeの場合はDelete sourceボタン、Storage Bridgeの場合はDisableボタンで接続を解除します。
Tigerアプリケーションがクラウドストレージと接続していない状態で新しい接続を作成します。
Tiger Bridgeの場合は「Add source」ボタンで、Surveillance Bridgeの場合は「Enable」ボタンでクラウドストレージに対して新しい接続を作成します。
接続を行う際に「Use secure transfer(SSL/TLS)」のチェックボックスがあります。デフォルトではここにはチェックが入っているのでチェックをクリアします。下図上段がTiger Bridgeのチェックボックス、下段がSurveillance Bridgeのチェックボックスの例です。
当該サーバー上で現在の接続を保持したままトラブルシューティングを行いたい場合は、Tiger Bridgeの場合は新しいソースストレージと新しいバケットを用意し「Add source」ボタンより上記の方法を実施してもよいと思います。また、Surveillance Bridgeの場合は新しいStorageと新しいバケットを用意し「Enable」ボタンより上記の方法を実施てしもよいと思います。
IPアドレスの特定
Tigerアプリケーションが動作しているサーバーはクラウドストレージ以外の機器とも多くの通信を行っています。効率的なトラブルシューティングのためには、Tigerアプリケーションとクラウドストレージ間の通信のみを観察する必要があります。
そのためにこのステップにおいてはTigerアプリケーションとWiresharkを起動した状態にして、Tigerアプリケーションとクラウドストレージとの間の通信に使われるIPアドレスを特定します。
IPアドレス特定の作業に入る前に以下の準備をします。
- Tigerアプリケーションを起動してクラウドストレージにrunningの状態にします。
- Windowsのタスクマネージャーを起動して「パフォーマンス」>「イーサネット」を選択します。
- タスクマネージャーのアップデートの頻度を「高」にします。
- Wiresharkを起動して表示フィルターにhttpを設定します。
Tiger BridgeをRunnningの状態にすると以下のような表示になります。
Surveillance BridgeをRunningの状態にすると以下のような表示になります。
Wiresharkの表示フィルターにhttpを設定すると以下のような表示になります。
上記の準備ができたら、ソースストレージからターゲットストレージにファイルの移動が行われるのを待ちます。ソースストレージとターゲットストレージ間でファイルの移動が行われるとタスクマネージャーで送信、または、受信の速度が大きくなります。例として、以下にファイルが移動した際の動画を表示します、15秒ほどの短い動画です。
この動画ではクラウドストレージとの間の通信を発生させるためにそれまでPausedにしていたSurveillance BridgeのDisaster Recoveryの機能をRunnningにしました。
Runinngに切り替えた直後に左上のグラフの送信速度が200Mbps以上になっていることがわかります。この時に左側のWiresharkの表示ではそれまで多く表示されていた192.168で始まるIPアドレス以外のIPアドレス(動画の中では103.151から始まるIPアドレスです)が表示されているのがわかります。このIPアドレスをメモします。(以下このIPアドレスを「プロバイダー特定アドレス」と呼びます)
Tigerアプリケーションとクラウドストレージとの間でファイルの移動が起きるようにする方法として以下のような方法があると思います。
- WindowsのExplorerでファイルのコピー、作成を行う
- Surveillance Bridgeの場合は新しい録画ファイルができるタイミングまで待つ
- しばらくの間Pausedにして、ファイルがソースストレージ上で移動、生成されたのちにRunningに変更(動画の方法)
IPアドレスからドメイン名、国名等を検索できるサイトで「プロバイダー特定アドレス」がクラウドストレージを提供しているプロバイダーのものか確認します。(インターネットで「IPアドレス 検索」で検索するとwhoisi等の名称のサイトが見つかると思います)
動画内に出ている「103.151」で始まる「プロバイダー特定アドレス」を検索するとこのアドレスが「Wasabi Technology Inc.」と関連していることが確認できました。
通信の観察
ここまで行った環境において以下に説明する設定を行い、トラブルシューティングをしたいシチュエーションを再現し、通信の内容を確認します。
クラウドストレージとの通信に限ってデータを観察できるように、Wiresharkを起動し、表示フィルターに「プロバイダー特定アドレス && http」を設定します。
ただし、クラウドストレージを提供するプロバイダーが使用するIPアドレスは1つだけではなく、複数のIPアドレスの中からランダムに使用される場合が多いです。そのため表示フィルターに入力するIPアドレスには幅を持たせて設定をする方が効率的に通信の状況を観察することができます。その場合は表示フィルターにはネットワーク単位でアドレスを設定します。
たとえば、上記のIPアドレス特定作業で分かった「プロバイダー特定アドレス」は103.151.10.3であったとします。表示フィルターに設定するIPアドレスは103.151.0.0/16とします。このようにすれば103.151.0.1~103.151.255.254までの間の通信をすべて見ることができます。プロバイダーがランダムにIPアドレスを変更したとしてもこの範囲の通信を観察することが可能になります。
下図は表示フィルターの設定例です、表示フィルターに「ip.addr == 103.151.0.0/16 && http」と設定しています。この設定によりIPアドレスが103.151.0.1~103.151.255.254の範囲内であり、かつ、httpプロトコルを使用した通信をすべて表示することができます。
更に広い範囲でWiresharkの表示を見てみましょう。Infoの欄を見るとHEAD, PUT等のREST APIのHTTPメソッドを観察することができます。
例えば、表示の中にHTTPステータスが400番台のメッセージ(Client Error)や500番台(Server Error)が含まれている場合は、それらが原因で障害が起きていることを推測することができます。
Wiresharkの機能を使用すれば、この結果を保存したり、更に長い時間データを取り続けたりすることも可能です
なお、この記事ではWiresharkの使用方法についての説明は割愛します。Wiresharkの使用方法についてはインターネット上で説明しているサイト(Wiresharkのホームページを含む)を参照することをお勧めします。以下のようなキーワードでインターネット上で検索すると多くの知識を得ることができる思います。
- Wireshark 保存
- Wireshark キャプチャ ー開始 停止
- Wireshark 表示フィルター
- Wireshark キャプチャーフィルター
トラブルシューティング作業時の注意事項
上記の方法でトラブルシューティング作業を行う際において以下のことを注意するようにしてください。
- ストレージ接続の解除、開始を行います。運用中の環境において本作業行う場合は運用中のシステムに対して影響を与えないようにしてください。テスト環境にて操作方法の習熟、影響範囲の把握を十分行ったうえでトラブルシューティングを実施してください。
- トラブルシューティングのために暗号化をしない通信を行います。情報の漏洩に注意してください。また、作業終了後は必ず「Use secure transfer(SSL/TLS)」のチェックボックスをチェックした状態で接続を再開してください。
- Wiresharkもアプリケーションの一つなので、サーバーのリソースを消費します。特に長時間動作させるとメモリを多く消費します。Tigerアプリケーション、その他のサーバーの機能に支障が生じないように注意してください。リソースをなるべく消費しない方法に関する情報がインターネット上(Wiresharkのホームページを含む)に多くあります、それらの方法をテスト環境等で試してから作業を実施することをお勧めします。