何をしているか
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の調教はまた別途溜まったら書きます。