セットアップと初期化
Speedtest対応のテストエージェント
Speedtest測定に使用するテストエージェントは、Speedtestを実行しているWebクライアントからアクセスできる必要があります。ほとんどの場合、これはインターネット経由でアクセスできる必要があることを意味します。
REST APIのALLOWED_ORIGINS設定
Speedtestを機能させるには、SpeedtestWebページがREST APIにアクセスできる必要があります。これは、SpeedtestWebページがホストされているホスト名を ALLOWED_ORIGINS
設定に追加する必要があることを意味します。これを行わないと、Web ブラウザーは REST API へのアクセスを拒否します。
コントロール・センター・インスタンスで、ファイル・ /etc/netrounds/restol.conf
を開き、次の設定を追加します:
ALLOWED_ORIGINS=https://<hostname>
ここで <hostname>
は、Speedtest Webページがホストされている完全修飾ドメイン名(FQDN)です。
ALLOWED_ORIGINS
設定のしくみについては、こちらの記事をご覧ください: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
クロスオリジンリソース共有(CORS)に関する全体像を理解するには、この記事が役に立ちます https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
HTTPS から HTTP への Web サーバーのリダイレクト
Paragon Active Assurance の Speedtest 機能は、パフォーマンスを最大化するために暗号化されていない HTTP プロトコルを使用するため、ページを読み込むすべての Web クライアントが URL で http://
を使用することが重要です。
ただし、このページにリンクする場合、またはアドレスバーでユーザーがプロトコル http://
を省略した場合、Webブラウザはデフォルトで https://
になり、Speedtestページで問題が発生します。
このため、Paragon Active Assurance に組み込まれている Speedtest 機能には、 https://
要求を Speedtest ページの http://
にリダイレクトする Apache 構成の書き換えルールがあります。
このような書き換えルールは、カスタムSpeedtestWebページにも追加することをお勧めします。次のサブセクションを参照してください。
コントロールセンターでカスタムSpeedtestWebページをホストする
コントロールセンターと同じWebサーバーでカスタムSpeedtestWebページをホストしている場合は、ファイルを /etc/apache2/sites-available/netrounds-ssl.conf
編集できます。
以下は、組み込みのSpeedtestページの書き換えルールです。
## Rewrite rules RewriteEngine On RewriteRule ^/[^/]+/speedtest(?:-flash|-websocket)?/?$ http://%{HTTP_HOST}%{REQUEST_URI} [R]
したがって、サンプルのWebページに同様のルールを追加するには、次のように記述します。
RewriteRule ^/static/speedtest_demo/example.html$ http://%{HTTP_HOST}%{REQUEST_URI} [R]
Control Center を新しいバージョンにアップグレードすると、このファイルは上書きされるため、アップグレード後にこのルールを再度追加する必要があります。
別の Web サーバーでのカスタム Speedtest Web ページのホスティング
コントロールセンターがホストされているサーバーとは異なるWebサーバーでカスタムSpeedtestWebページをホストしている場合は、同様の書き換えルールを追加する方法については、Webサーバーのドキュメントを参照してください。
Speedtestライブラリを含める
SpeedtestライブラリをHTMLファイルに含めて初期化する必要があります。 example.html
では、これは次のように行われます。
<script src='static/js/Speedtest.js'></script> <script src='static/js/SpeedtestLib.js'></script> <script src='static/js/script.js'></script> <script type='text/javascript'> var account = 'dev'; var apiUrl = 'https://<rest_hostname>/rest'; var workerScriptPath = 'static/js/SpeedtestWorker.js'; initSpeedtest(apiUrl, workerScriptPath, account); </script>
説明:
var account = 'dev'
− Paragon Active Assuranceのアカウントの短縮名。var apiUrl = 'https://<rest_hostname>/rest'
−これをParagon Active Assurance REST APIのURL に置き換えます 。var workerScriptPath = 'static/js/SpeedtestWorker.js'
− ワーカースクリプトにアクセスできるパス。
Speedtestの初期化
ファイル static/js/script.js
で、 initSpeedtest
は Speedtest 応答を処理するコールバック関数を設定します。
function initSpeedtest(apiUrl, workerScriptPath, account) { speedtest = new SpeedtestLib(apiUrl, workerScriptPath, account); speedtest.setSnapshotResponse(resultSpeed); speedtest.setResultResponse(resultDelay); speedtest.setFailureResponse(failureHandler); speedtest.setSuccessResponse(successHandler); speedtest.getServers(setServerDropdown); speedtest.getCategories(setCategoryDropdown);
各 speedtest.
関数の引数は、SpeedtestLib によって送信されたデータを処理するコールバック関数である必要があります。
speedtest.setSnapshotResponse(resultSpeed)
−テストのアップロード/ダウンロード部分の部分的な結果。テスト実行中に送信されるspeedtest.setResultResponse(resultDelay)
−テストのTCP / ICMPPING部分の部分的な結果。テスト実行中に送信されるspeedtest.setFailureResponse(failureHandler)
− コントロールセンターへのレポートの送信に失敗しましたspeedtest.setSuccessResponse(successHandler)
− コントロールセンターへのレポート送信に成功しましたspeedtest.getServers(setServerDropdown)
−利用可能なサーバーのリストが取得されましたspeedtest.getCategories(setCategoryDropdown)
−利用可能なSpeedtestカテゴリのリストが取得されました
たとえば、 setServerDropdown
コールバック関数は、使用可能なサーバーをユーザー インターフェイスに入力します。
function setServerDropdown(serverList) { serverList['items'].forEach(function(server) { var option = document.createElement('option'); option.text = server['name']; var serverString = server['test_agent_id'] + ':' + server['interface'] + ' ' + server['ip'] + ' ' + server['port'] + ' ' + server['test_length'] + ' ' + server['tcp_sessions']; option.value = serverString; document.getElementById('dropdown-server').add(option); }); }
ここでは、 serverList
は SpeedtestLib によって提供されます。
その他のコールバック関数については、 static/js/script.js
を参照してください。