JavaScript
AWS
バルス

AWSでバルスウォッチ。 -別題:twitter投稿監視の参考に-

More than 1 year has passed since last update.

バルスバルスバルス!!!

好きなおばさんはドーラおばさんです。
本投稿は例にしたがって、私の雇用者の意見、立場を必ずしも反映したものではありません。

来る2016/01/15に、金曜ロードショーにて天空の城ラピュタが放送されます!
シータ、パズーが手を取り合い呪文を唱えるタイミングにあわせて、Twitterでバルスとつぶやく国民的行事が再びやってくるのです!

本記事ではCloud Watch Logs + Kibanaを利用して、バルスの盛り上がり具合をグラフ化します。
この技術は、twitterでの投稿監視にも使えるでしょう。

サマリ

  1. CloudWatch Logsにログの入れる場所を作ります。
  2. EC2上にNode.jsを利用したTwitter Streaming APIsで「バルス」が含まれる投稿を収集しCloudWatch Logsに流します。
  3. CloudWatch Logsでは、「バルス」の流量にしきい値を設定し、ソレを超えたらメールが来るようにしておきます。また、「バルス」はKibanaでも見れるようにしておきます。

簡単。

それでは設定手順です。

1. CloudWatch Logsにログの場所を作成

こちらの記事を参考に、
コンソールからCloudWatchを選択してください。
ログ→アクション→ロググループの作成で、BALSを作成。
引き続き、ストリームでtwitterを作成します。

2. EC2にNode.jsを利用したアプリを作成

EC2を作るところは省略。
nodeを入れます。

wget https://nodejs.org/dist/v4.2.4/node-v4.2.4-linux-x64.tar.gz
tar -zxvf node-v4.2.4-linux-x64.tar.gz
sudo mv node-v4.2.4-linux-x64 /usr/local/
echo "export PATH=/usr/local/node-v4.2.4-linux-x64/bin:\$PATH" >> ~/.bash_profile
source ~/.bash_profile

twitterで、アプリないし鍵を生成しておきます。https://apps.twitter.com/app から可能です。

そして、アプリを作成します。

index.js
var fs = require("fs");
var Twitter = require("tweet-pipe");
var twitter = new Twitter({
  consumer_key: 'かぎ',
  consumer_secret: 'かぎ',
  token: 'かぎ',
  token_secret: 'かぎ'
});
var writeStream = fs.createWriteStream('/home/ec2-user/log/bals')
twitter.stream('statuses/filter', {track: 'バルス'}).pipe(twitter.stringify()).pipe(writeStream);

依存ライブラリはtweet-pipeです。npm install してください。
アプリ自体がやってることは簡単。主要な処理はたった一行です。

twitter.stream('statuses/filter', {track: 'バルス'}).pipe(twitter.stringify()).pipe(writeStream);

twitterからstream受け取って、文字列化して、ファイルに書きます。
あとはこちらの記事の設定手順に応じてCloudWatch Logsにファイルが取り込まれるようにします。
必要であれば、記事の手順でしきい値を設け、バルスが弾けたことを知るようにします。

3. Kibanaの設定。

こちらの記事を参考に、CloudWatch LogsのデータをElasticsearchServiceに送り込みます。
KibanaはV4がうまく動かなかったのでV3にしました。
スクリーンショット 2016-01-13 15.39.36.png
グラフの作り方はこちらの記事がとてもよいです。
もうすでに、一分間に1−2回つぶやかれていますね。本番が楽しみです。

さて、これでバルス監視の出来上がりです!
twitterストリーミングAPIはすべてのつぶやきが取れるわけではありませんが、バルスが弾けたことはわかるでしょう。どれくらいの時間からバルスが彈けていくか、見ものです!
この仕組を使えば、自社の製品が話題(炎上?)した時に、いち早く気づくことが出来ます。また、ログを獲っておけば、どのように炎上していったかをグラフにして検証することも可能です。

何はともあれ、今週末はバルスです!

バルスバルス!
結果のグラフはこの投稿を更新してお伝えします!
バルス!

更新(2016/01/18)!!!!!(バルス失敗?)

結果が出ました。が、、、、、
最大20bpm(バルスパーミニッツ)でした。。。。
richmikan@githubさんにご指摘いただいたとおり、うまくフィルタできなかったか、Streaming APIが相当間引かれてるか、デスネ。
スクリーンショット 2016-01-18 13.52.56.png
コレは良い学習です。「Twitter Streaming Apiで監視するときは、15ツイート毎分いったら、バルスレベルで炎上話題になっている。」ということです。ご留意ください。