どどんとふをdebian+nginxで動かすやり方(運用ツール編その3)@公式鯖3rdシリーズ

第1回: OS編

第2回: nginxセットアップ編

第3回: fcgi編

第4回: どどんとふ本体編

第5回: 運用ツール編(最低限)

第6回: 運用ツール編(その他)

今回:運用ツール編(負荷グラフ)

今回は、こかげ工房さんからのリクエストで、公式鯖入り口にある負荷グラフの表示方法を紹介します。

負荷グラフって、これです。

dodontof_3rd.daily

このグラフにピンと来た人もいると思いますが、rrdtoolというオープンソースのツールを用いてグラフ描画を行っています。

使い方は、大きく分けて以下の3つに分かれます。公式鯖は4台ありますし長期トレンドなども表示させていますので、実際に動いている物とは若干違います。とりあえず分かり易くするためかなり端折ったものです。

グラフを格納するDBを作成

最初に一度実行するだけです。ログイン人数を5分置きに格納するためのDBをdodontof.rrdという名称で作成します。

rrdtool create dodontof.rrd \
  --step 300 \
  DS:count:GAUGE:300:0:1000 \
  RRA:MIN:0.5:1:52560 \
  RRA:LAST:0.5:1:52560 \
  RRA:MAX:0.5:1:52560 \
  RRA:AVERAGE:0.5:1:52560

グラフを格納するDBにデータを挿入

DBが作成されたら、この度はそのDBにデータをどんどん蓄積していきます。どどんとふ公式鯖では、ログイン人数をwebifを用いて取得し、それをDBに格納するためのShellScriptをcronで5分おきに実行しています。
まずは、ログイン人数を取得するためのrubyプログラム。(getDodontoFUsage.rb)

#!/usr/bin/ruby
require 'net/http'
require 'json'
usageResult = Net::HTTP.get(ARGV[0], ARGV[1])
usage = JSON.parse(usageResult)
puts usage["loginCount"]

次にcronに登録する呼び出し元ShellScript。

  rrdtool update dodontof.rrd \
    `date +"%s"`:`/usr/local/getDodontoFUsage.rb [サーバーのIPアドレス] "/DodontoF_srv1/DodontoFServer.rb?webif=getBusyInfo"`

グラフを描画

次に格納されたデータを用いてグラフを描画するScriptを定期的に実行するようにcronに登録します。

rrdtool graph \
  /var/www/img/dodontof.daily.png --imgformat PNG --title 'どどんとふログイン混雑状況推移' \
  --start -48hour \
  --vertical-label 'ログイン数' \
  --width 480 \
  --height 200 \
  DEF:NewOfficial1_logins=${RRDDIR}/dodontof.rrd:count:LAST  \
  AREA:NewOfficial1_logins#00ff00:"公式鯖\t" \
  GPRINT:NewOfficial1_logins:LAST:"現在\:%3.0lf / " \
  GPRINT:NewOfficial1_logins:MAX:"Max\:%3.0lf\n"

rrdtoolは、とにかく多機能な上、なかなか習得する敷居が高いツールだと思うのですが、慣れるとグラフ化を徹底的に自動化できるのでめっちゃ楽しいです。

参考サイト