Logstash + Elasticsearch + Kibana4でTwitterを可視化する
はじめに
最近改めてElasticsearchをいろいろ触っているのですが、その中でElasticsearchにデータを流し込むRiverを覚えた...のですが、RiverはDeprecatingなのでLogstash使おうということらしいです。
ということで、elasticsearch-river-twitterでは無くLogstashを使って、Twitter Streaming APIから取得したデータをElasticsearchに投入し、かつKibana4で可視化してみました。
やってみた
全てEC2上のAmazon Linuxで作業を行っています。
Logstashのインストール
Logstashはjavaで動くので、javaが入ってることを確認します。
$ java -version java version "1.7.0_85" OpenJDK Runtime Environment (amzn-2.6.1.3.61.amzn1-x86_64 u85-b01) OpenJDK 64-Bit Server VM (build 24.85-b03, mixed mode)
次にLogstashの公式Webサイトからrpmをゲットしてインストールします。
$ wget https://download.elastic.co/logstash/logstash/packages/centos/logstash-1.5.3-1.noarch.rpm $ sudo rpm -ivh logstash-1.5.3-1.noarch.rpm
インストールされたことを確認します。
$ /opt/logstash/bin/logstash --version logstash 1.5.3
この状態だとLogstashのバイナリがあるディレクトリにPATHが通っていませんので、PATHを通しておきます。
$ export PATH=$PATH:/opt/logstash/bin
Elasticsearchのインストール
最新のElasticsearchのrpmファイルをゲットし、インストールします。
$ wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.2.noarch.rpm $ sudo yum install elasticsearch-1.7.2.noarch.rpm
そして起動。
$ sudo service elasticsearch start Starting elasticsearch: [ OK ]
Twitter Appの作成
Twitter AppsからTwitter Streaming APIを取得するためのアプリケーションを作成します。
こんな感じで、適当に名前を付けます。
利用許諾にagreeして[Create your Twitter application]ボタンをクリック。
これでアプリケーションが出来上がりますので、コンシューマーキー、コンシューマーシークレットキー、OAuthトークン、OAuthシークレットトークンを取得します。
Logstashの実行
以下のように、inputとしてTwitterを指定します。また、全てのtweetを対象に、"aws"というキーワードで取得するようにしました。
$ logstash -e 'input { twitter { consumer_key => "<YOUR_CONSUMER_KEY>" consumer_secret => "<YOUR_CONSUMER_SECRET_KEY>" oauth_token => "<YOUR_OAUTH_TOKEN>" oauth_token_secret => "<YOUR_OAUTH_SECRET_TOKEN>" keywords => ["aws"] full_tweet => true }} output { elasticsearch { host => localhost port => "9200" protocol => "http" index => "twitter" document_type => "stream" } stdout { } }'
Kibana4で可視化
Kibanaの公式Webサイトから最新のtar.gzファイルを取得し、 展開します。
$ wget https://download.elastic.co/kibana/kibana/kibana-4.1.2-linux-x64.tar.gz $ tar xvzf ./kibana-4.1.2-linux-x64.tar.gz $ cd ./kibana-4.1.2-linux-x64
そしてKibana4を実行します。
$ sudo ./bin/kibana
http://EC2のIPアドレス:5601/にアクセスします。初期設定で、以下の通り対象とするindexを設定し、[Create]ボタンをクリックします。
[Discover]画面を見ると、こんな風にデータが取得できていることがわかります。
Twitterのuser.langでパイチャートにしてみました。圧倒的にenが多いですね。
さいごに
超簡単!そしてやっぱりkibana4はとても見やすくて便利ですね。