WebPageTestというWebサービスがあります。Webページの表示速度等を詳細に計測してくれる便利なサービスです。Akamaiの日本語ブログなどでも紹介されていました。
このサービスには計測インスタンスのロケーションが複数準備されており、世界中から自分のサイトの表示速度を計測し、結果でガッツポーズをとったり、阿鼻叫喚することができます。また、Webサービスのプログラム自体もGitHubで公開されており、プライベートなインスタンスを立てて、秘密のサイトを自分だけでひっそり計測することができます。
さて、世界中に設置されているWebPageTestの計測インスタンスのロケーションですが、中国国内の金盾内部には設置されていません。(香港にはあります。)調べてみると2015年ごろにはBeijing(China Unicom系回線?)にあったようですが、現在では消えているようなので、なんらかの事情で閉鎖したようです。
中国国内での表示速度は金盾や中国の回線事情などの影響で他国とは大きく違うことが予想されますので、なんとかして計測したいところなので、今回WebPageTestの計測用のプライベートインスタンスを中国国内に設置し、計測を試みることにしました。
WebPageTestは、Webアプリと計測用のエージェントから構成されており、今回は計測用のエージェントのみ中国に設置し、Webアプリは日本に置きました。同じサーバーにまとめてもよいと思いますが、中国のクラウドだと80/443などにはドメイン名をつけて公開できないので、プロキシーをなど立ててアクセスすることになります。
準備するもの
- Alibaba Cloudの中国国内のECSインスタンス (中国のクラウドで金盾体験 – Qiitaに準備方法は載ってました。今回はUbuntu 16.04を使用)
- Webアプリのインスタンス(立て方はドキュメントに載ってます。簡単なので割愛します。)
Dockerイメージの準備
計測用エージェントは推奨されているwptagentをDockerで使います。手順はドキュメントに書いています。
中国国外の回線であれば、基本的にはdocker build
するだけで動いてしまう(すごい)のですが、中国国内からはDockerfileに書かれているChromeのリポジトリーURL(http://dl.google.com/linux/chrome/deb/)にはアクセスできないため、中国国内のECSインスタンスではdocker build
だけでは動かないようです。
そこで、日本国内の環境でdocker build
して、docker save
して書き出したイメージを中国に送って動かしてみることにします(多分現地でChromium落としてwptagentの設定変えたほうがメンテしやすいけど、後のことはあまり考えていないので場当たり的に対処します。)
#ローカル環境など、日本国内の環境にて $ git clone https://github.com/WPO-Foundation/wptagent.git $ cd wptagent $ docker build --tag wptagent . $ docker save wptagent > wptagent.tar
このgit clone
したディレクトリーそのものを中国に送ります。(方法はなんでもよい)
必要なプログラムの準備
ECSインスタンスにsshログインし、aptで次のパッケージをインストールする
- docker (docker.io)
$ apt update $ apt install docker.io
先ほどのgit clone
したディレクトリーを持ってきて、以下のようにimageをloadします。
$ cd wptagent $ docker load < wptagent.tar
ガガガッっとイメージが読み込まれて完成します。
後は、ドキュメントにしたがって立ち上げます。
modprobe ifb numifbs=1 docker run -d \ -e SERVER_URL="http://my-wpt-server.org/work/" \ -e LOCATION="docker-location" \ -e NAME="Docker Test" \ --cap-add=NET_ADMIN \ wptagent
モチベーションが切れたので以上です。