secbeg’s log

作業メモです

fluentd-elasticsearch-kibanaでtwitter収集

0.はじめに

fluentd-elasticsearch-kibanaでtwitterデータ収集してみました。

  • CentOS release 7.4.1708
  • elasticsearch 5.6.4
  • kiban 5.6.4
  • fluentd td-agent 0.14.23

1.環境構築

  • elasticsearch 下記リンクを参考にしてください。

secbeg.hatenablog.com

  • kibana

elasticsearchをインストールした際に追加したリポジトリを使用してインストールする。

# yum install kibana

ローカル以外からアクセスするために、下記に修正する。

# vi /etc/kibana/kibana.yml


server.host: 0.0.0.0 

kibanaを起動する。

# systemctl start kibana
# systemctl enable kibana

ブラウザから http://[IPアドレス]:5601 にアクセスすると下記にような画面が表示される。

f:id:secbeg:20171118103547p:plain

  • fluentd

前提となるソフトをインストールする。

# yum -y install gcc gcc-c++ openssl-devel libcurl libcurl-devel

fluentdはrubyで動作するため、rubyをインストールする。

# yum install https://github.com/feedforce/ruby-rpm/releases/download/2.2.4/ruby-2.2.4-1.el7.centos.x86_64.rpm

fluentdをインストールする。

# curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

twitter,elasticsearchプラグインをインストールする。

# td-agent-gem install eventmachine
# td-agent-gem install fluent-plugin-twitter
# td-agent-gem install fluent-plugin-elasticsearch

twitter収集するための設定に変更する。 今回は、「ransomware」のキーワードがあるtweetを収集する。

# vi /etc/td-agent/td-agent.conf

<source>
  @type twitter
  consumer_key          xxx
  consumer_secret       xxx
  access_token          xxx
  access_token_secret   xxx
  tag                 input.twitter
  timeline            tracking                
  keyword             'ransomware'
  lang                ja,en                    
  output_format       nest                    
  flatten_separator   _                        
</source>

<match input.twitter>
    type elasticsearch
    include_tag_key true
    tag_key @log_name
    host 127.0.0.1
    port 9200
    logstash_format true
    logstash_prefix twitter
    flush_interval 10s
</match>

下記のtwitterAPIを使用するための値は、 https://apps.twitter.com/ から取得する。
注)使用するtwitterアカウントに電話番号を登録しておく必要があります。

consumer_key [xxx]
consumer_secret [xxx]
access_token [xxx]
access_token_secret [xxx]

起動

# systemctl start td-agent
# systemctl enable td-agent

2.収集確認

とりあえず、収集はできていそう。 f:id:secbeg:20171118105613p:plain

ハッシュタグのランキングを円グラフで表示してみる。 f:id:secbeg:20171118105638p:plain

3.その他

  • 注意
    サーバの時刻がずれているとうまく収集できないので、下記等であわせておく。
# ntpdate ntp.nict.jp
  • index確認
# curl -XGET http://192.168.0.10:9200/_aliases?pretty
  • index削除
# curl -XDELETE 'http://localhost:9200/[index_name]

4.参考

docs.fluentd.org

github.com

pocketstudio.jp