Sitespeed.io + Docker と Hosted Graphite で Web のパフォーマンス計測実験

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 で全部入り

所感

この構成は非常に手っ取り早いです。ただし前述の通り、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 だけ公開されても使えない風

総じて、イニシャライズのパフォーマンスについては統合的な計測方法がオープンソースで整いつつあるようで何よりです。