Sitespeed.io + Docker と Hosted Graphite で Web のパフォーマンス計測実験
Posted: Updated:
Sitespeed.io とか Graphite とか
以前紹介した Sitespeed.io が気がついたら WebPagetest や PageSpeed Insights との連携やら、Graphite へのデータ送信とかをサポートしていたので、社内 WebPagetest の代替として試し直しています。
当時の自分が graphite とかの単語に気がついていない(興味が無かった)だけの可能性もある
Docker 知見
タイムリーなことに、jxck さんが graphite, grafana, sitespeed.io, diamond で継続 Web パフォーマンスモニタリング - Qiita という記事を公開されたので、これを参考に自分も Docker + Hosted Graphite で手抜き構成してみました。
昨今のパフォーマンス計測事情やら、フル Docker 構成についての詳細は jxck さんの記事が詳細なので、以下は自分のコマンドログということで。
構築ログ
環境は CentOS 7.1 です。
Docker を入れる
yum install docker
sudo service docker start
sudo systemctl enable docker
sitespeed.io を入れる
Installation - Documentation - sitespeed.io の通りです。
sudo docker pull sitespeedio/sitespeed.io
Hosted Graphite に登録して API Key を取得する
Hosted Graphite - Graphite as a service, with StatsD and Grafana Dashboards です。
Hosted Graphite Pricing を見ると、500 metrics で $49/mo、5000 metrics で $99/mo なので中々良いお値段です。今回は 14days free trial に乗っかってます。サインアップすると API Key が取得できるので控えておきます。
WebPagetest の API Key を取得する
WebPagetest - Get API Key です。Private Instance でない限り、これを取得しても「The API key is provisioned for up to 200 "page loads" per day. 」なのでご注意を。
sitespeed.io の起動スクリプト
root で cron 実行したいので、起動スクリプトを作成します。
sudo su -
touch /etc/cron.hourly/sitespeed
sudo chmod +x /etc/cron.hourly/sitespeed
docker を叩くだけですが、相当量のオプションが付いてきます。
vi /etc/cron.hourly/sitespeed
-----
#! /bin/sh
docker run \
--privileged \
--rm \
-v /path/to/storedir:/sitespeed.io \
sitespeedio/sitespeed.io \
sitespeed.io \
-u http://havelog.ayumusato.com \
-n 5 \
-d 0 \
-r /tmp \ # 今の所、htmlレポートは不要なので /tmp 送り
--wptHost www.webpagetest.org \
--wptKey WEB_PAGETEST_API_KEY \ # WebPagetest の API Key
--connection cable \
--graphiteHost carbon.hostedgraphite.com \
--graphiteNamespace HOSTED_GRAPHITE_API_KEY \ # 前述の API Key
--graphiteData summary,rules,pagemetrics,timings # all で全部入り
--graphiteData
に timings を含めると、metrics が 1000 を超えるが、これがないと欲しいデータ(wpt のspeed indexなど)が取れなかった- sitespeed.io/graphiteCollector.js at 6e59323d253535255f44d01bce203eaf75aaf62e · sitespeedio/sitespeed.io を見れば何となく分かる
所感
この構成は非常に手っ取り早いです。ただし前述の通り、Hosted Graphite 自体は課金しないとマトモに使えなさそうなので、大人しく Graphite + Grafana も Docker にしたほうがよさそう...。
追記: 続・パフォーマンス計測実験で Graphite も Docker に置き換えた で Graphite + Grafana も Docker 構成化しました(´ω`)
面倒なので Graphite と Grafana をまとめて面倒みてくれる Docker コンテナの既製品を探しましたが、ポート 2003
の carbon-cache line receiver を公開してる Docker コンテナが少なくて、2815
付近に statsd を据えてるものが多めでした。流行りでしょうか。
sitespeed.io はgraphite のフォーマットで直送したがるので、statsd だけ公開されても使えない風
総じて、イニシャライズのパフォーマンスについては統合的な計測方法がオープンソースで整いつつあるようで何よりです。