続・パフォーマンス計測実験で Graphite も Docker に置き換えた
Posted: Updated:
Graphite も Docker に置き換えた
前回、Sitespeed.io + Docker と Hosted Graphite で Web のパフォーマンス計測実験 の続きで Graphite 周辺を Docker に置き換えたログです。
Graphite + Grafana + (StatsD)
上記がすべて入っている Docker イメージを利用します。
sitespeed.io がサポートしているのは graphite のフォーマットなので statsd は使いませんが上記のイメージではポート 2003
も EXPOSE されているので、そっちを利用します。
- 80: the Grafana web interface.
- 2003: the StatsD port.
- 8125: the StatsD port.
- 8126: the StatsD administrative port.
ドキュメントに StatsD port って書いてあるけど大丈夫です (´ω`) マチガイ?
起動スクリプトなど
例によって。
Graphite 側
冒頭のイメージを使います。2003
ポートはホスト側に公開しないで、Sitespeed.io のほうに --link
でつなぎます。
#!/bin/sh
docker run \
-d \
-p 12345:80 \ # ホスト側のポートは適当です
-v /path/to/graphite-whisper/:/var/lib/graphite/storage/whisper \
--name graphite \
--restart=always \
choopooly/grafana-graphite
もちろん、ホストのサーバーメトリクスを流すときは 2003
なり 8125
をホストに公開してください。
Sitespeed.io 側
--link <name>:<alias>
で他のコンテナにアクセスできるようになるので、それを利用します。ほとんど前回と同じですが、--graphiteHost
にリンク先コンテナのホスト名を指定します。
#!/bin/sh
docker run \
--privileged \
--rm \
--link graphite:graphite \ # これで graphite にアクセスできるように
-v /path/to/storedir:/sitespeed.io \
sitespeedio/sitespeed.io \
sitespeed.io \
-u http://havelog.ayumusato.com \
-b firefox \
-n 5 \
-d 0 \
-r /tmp \
--wptHost www.webpagetest.org \
--wptKey WEB_PAGETEST_API_KEY\
--connection mobile3gfast \
--graphiteHost graphite \ # ここに --link で指定した alias を指定する
--graphiteNamespace sitespeed \
--graphiteData summary,rules,pagemetrics,timings \
補足 --link
--link
は /etc/hosts
をアレしてくれます。
sudo docker run --rm --link graphite:graphite -t -i sitespeedio/sitespeed.io /bin/bash
root@:/sitespeed.io# cat /etc/hosts
172.17.0.50 894e5a29e7d2
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.49 graphite 32beb637af5b
こんな感じ。
おしまい
Graphite のスクリプトを叩いてデーモンを起動したら、Sitespeed.io のスクリプトは cron なり何なり任意の周期で実行すればOK。
蛇足ですが Sitespeed.io の出すメトリクス、SpeedIndex がやや怪しい? WPO-Foundation/RUM-SpeedIndex を使ってそうだけど、WebPagetest 使うなら wpt
以下の数値を取った方が見慣れた数量感で良さげです。
# RUM SpeedIndex らしいけど...? HTMLレポートだと単位が ms で謎
sitespeed.summary.example.com.timing.speedIndex
# こっちのが見慣れた数値で良いと思う
sitespeed.summary.example.com.timing.wpt.firstView.SpeedIndex
sitespeed.summary.example.com.timing.wpt.repeatView.SpeedIndex
こんな感じですかね。