この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
最近改めて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はとても見やすくて便利ですね。