LoginSignup
4
5

More than 5 years have passed since last update.

Amazon Elasticsearch ServiceにTwitterの情報を集めてみよう EC2 + AWS ES

Posted at

何をしているか

Twitterの情報楽に集めて色々出来ないかと思い試してみました。
割りとメジャーなネタなのか結構資料あって楽でした。
logstash + Elasticserchの勉強が出来て良かったです。

前提

  • Elasticserch Serviceの構築が完了し、AWSesに対してデータの投入や削除が出来るようにポリシーの設定まで完了している
  • コンソール上のKibanaエンドポイントからKibanaのコンソールが見れるようになっている

今回省略しましたが、需要あるなら書こうかな・・・?

手順

1.EC2インスタンスの作成

Ec2を一台作成します。

  • SSHが出来るようにしておく

EC2の準備

yum をアップデートしておきます

コマンド
sudo su
yum update -y

Javaのインストール

AmazonLinuxには1.7が入っていた(2017/04 現在)のでjava1.8系を導入

まず確認

コマンド
java -version
結果
java version "1.7.0_131"
OpenJDK Runtime Environment (amzn-2.6.9.0.71.amzn1-x86_64 u131-b00)
OpenJDK 64-Bit Server VM (build 24.131-b00, mixed mode)

インストール

コマンド
yum -y install java-1.8.0-openjdk-devel
alternatives --config java

alternativesコマンドで1.8を指定する

コマンド
java -version
結果
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)
コマンド
javac -version
結果
javac 1.8.0_121

javacのほうが1.7だったら

alternatives --config javac で1.8を指定する

参考: Amazon LinuxでJava8/Tomcat8の環境を構築する| Developers.IO

logstashをインストールする

yumから最新版をインストール出来るようにします
参考: 公式リファレンス

鍵のインストールし、レポジトリを登録します

コマンド
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
戻り値
なし
コマンド
ls /etc/yum.repos.d/
結果
amzn-main.repo  amzn-nosrc.repo  amzn-preview.repo  amzn-updates.repo  epel.repo  epel-testing.repo

では登録

コマンド
cat << _FIN_ > /etc/yum.repos.d/logstash.repo
[logstash-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
_FIN_
確認
cat /etc/yum.repos.d/logstash.repo
結果
[logstash-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

インストール

コマンド
yum install logstash -y

インストール出来たか確認

コマンド
/usr/share/logstash/bin/logstash --version
結果
logstash 5.3.1

logstash-output-amazon_esプラグインのインストール

参考:logstash-output-amazon_esを使ってAmazon Elasticsearch Serviceにデータを投入する | Developers.IO
記事で書かれているものと、logstashのバージョンがだいぶ違うのでパスが異なります。注意してください

コマンド
/usr/share/logstash/bin/logstash-plugin install logstash-output-amazon_es

ちょっと時間かかります。待ちましょう

戻り値
Validating logstash-output-amazon_es
Installing logstash-output-amazon_es
Installation successful

上記以外でエラーが出たら恐らくJava関係だと思うので戻って確認しましょう。

vi  /etc/logstas/logstash.yml

confファイルの設定
Twitterの方は以前書いたこれを参考に
Twitter Developer登録

変数指定
TWI_KEY=記事を参考に
TWI_KYE_SEC=記事を参考に
TWI_TOKEN=記事を参考に
TWI_TOKEN_SEC=記事を参考に
ES_EDP=ESのエンドポイントを記載(******.es.amazonaws.com)
ES_REG=ESを立てたリージョンを記載

コマンド
cat << _FIN_ > /etc/logstash/conf.d/twitter.conf
input {
  twitter {
    consumer_key => "$TWI_KEY"
    consumer_secret => "$TWI_KYE_SEC"
    oauth_token => "$TWI_TOKEN"
    oauth_token_secret => "$TWI_TOKEN_SEC"
    keywords => ["引っ掛けたいキーワード"]
    full_tweet => true
  }
}
output { 
    amazon_es {
        hosts => ["$ES_EDP"]
        region => "$ES_REG"
        index => "twitter"
        document_type => "stream"
    }
    stdout { } 
}
_FIN_
コマンド
cat /etc/logstash/conf.d/twitter.conf

これで指定したとおりに結果が帰ってくれば大丈夫です。

実行

コマンド
/usr/share/logstash/bin/logstash --path.settings /etc/logstash -f /etc/logstash/conf.d/twitter.conf

しばらく待つとスタートします。

2017-04-26T09:50:06.000Z %{host} %{message}

こんな感じで標準出力が出てくればOKです。
引っかかりが弱いツイートだとゆっくり出てきますが、ものすごい早いやつかませるととんでもなく大量に出てきます。

https://www.elastic.co/guide/en/logstash/current/plugins-inputs-twitter.html
ここに書いてある通りですが、ストリーミング全部喰って、読み込み制限かかったら5分待機してもう一回読み込む様になってます。

Kibanaで確認すれば情報の確認ができると思います。

Kibanaの調教はまた別途溜まったら書きます。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5