社内見える化委員会のmatsuiです。
前回は社内温度のグラフ化を行いましたが、今回もまたグラフ化ネタです。
弊社インフィニットループでは、ソーシャルゲームの開発を行っており、サーバやゲーム内のプログラムで異変が起こった場合には、いち早く気づく必要があります。
ソーシャルゲームの場合、大抵2chに専用のスレッドが立っており、そのスレの勢いを監視することで、祭りの発生を検知するための仕掛けを作成することになりました。
ゼロからスレッドの勢いを監視する仕掛けを作成するのは大変なので、何かよいサービスはないかなと探したところ、「2ch勢いランキング」さんというサイトがAPIサービスを提供してくれていたため、これを利用させていただきました。ありがとうございます。
→ 2ch勢いランキング API
http://2ch-ranking.net/ranking.json?board=[板名(半角英数)]&callback=callback
のように板名を引数にアクセスすることで、その板にあるスレの勢いランキングがJSON形式で取得できます。カンタンですね。
さて、あとは指定したキーワードでスレ名を引っかけるPHPプログラムを書きましょう。
100行程度の短いプログラムですが、ここに全文を貼るのも不毛なので、githubにアップしておきました。
→ github ketaiorg / Ranking2chWatcher
2chにはレス番1000まで到達するとスレッドを立て直すという通例がありますが、この2ch勢いランキングさんのAPIでは、勢いの高いものから順に並んでいるので、それを上から舐めて一番最初に見つかったものを返すというロジックとすることで、問題なく運用することができました。
設置方法は以下の通りです。
define('BOARD_NAME', 'gameswf'); // 板の名前 define('SEARCH_KEYWORD', '/^.*ブラウザ.*part.*$/'); // 検索キーワードを正規表現で定義(通常はタイトル名を定義)
まず定数BOARD_NAMEに板の名前をセットします。URLの「http://*.2ch.net/」に続く部分の文字列が板名です。
続いて定数SEARCH_KEYWORDに対象としたいスレを検索するための正規表現を定義します。
もし複数のスレが引っかかった場合は、一番勢いのあるスレを対象とします。
設定したらPHPに実行権をつけて実行してみましょう。
勢いを表す数字が出力されるはずです。
$ ./Ranking2chWatcher.php 50
動作確認ができたので、cactiに登録してグラフ化してみましょう。
グラフの登録方法はこちらのページを参考にさせていただきました。
グラフを登録し、しばらく待つとこんな感じになります。
あとはcactiの閾値監視機能でアラートを飛ばせば、祭りを監視でき、バグやサーバダウンの兆候を察知できます。
2chにスレがあるようなサービスであれば、何にでも応用可能なので、みなさんもぜひ試してみてください。