続・パフォーマンス計測実験で 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
こんな感じですかね。