前提
作業未完です!!
かなり個人的な作業手順メモです。
fluentdとかelasticsearchを初めて触りながらやってみた。
amazon linuxで作業。
ちなみにlinux全く分からないマンです。
fluentd
fluentd本体
preinstallガイドにしたがって作業
以下忘れずに。
ulimit -n
root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536
このへんも適当にやっとく。
インストール
curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
fluent-plugin-twitter
インストール手順は以下。
# for td-agent2
sudo td-agent-gem install eventmachine
sudo td-agent-gem install fluent-plugin-twitter
twitterのtokenとかは適当に発行。
fluent-plugin-elasticsearch
sudo td-agent-gem install fluent-plugin-elasticsearch
ElasticSearch
ElasticSearch本体
まずJava8をいれる。
jvmのヒープサイズ変更
awsのec2をmicroにしてると、設定を変更しないと、elasticsearchが起動しないため。
sudo vi /etc/elasticsearch/jvm.options
-Xms768m
-Xmx768m
上記のサイズがベストなのかはわからん。
参考:
http://fujitora.hatenablog.jp/entry/2016/10/31/180411
日本語検索
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
ElastAlert
下記参照しながらインストール
やらかしたっぽくてパスが通らなかったので適当に追加。
which pip
export PATH=/usr/local/bin:$PATH
ruleとalert文面の書き方
クエリの書き方が全く分からずすごい試行錯誤した。たぶんイケてない。
(kuromoji_analyzerも必要かどうかよくわかってない)
下記参照
例:
...ルール名とか省略...
filter:
- query:
query_string:
query: "じゅみ OR (/.*jumit.*/)"
fields: ["text"]
default_operator: "and"
analyzer:
kuromoji_analyzer:
type: "custom"
tokenizer: "kuromoji_tokenizer"
...slack_webhook_urlとかは省略...
alert_subject: "{0} <https://twitter.com/{1}/status/{2}|Tweet>"
alert_subject_args: ["text","user.screen_name", "id"]
alert_text: "{0} <https://twitter.com/{1}/status/{2}|Tweet>"
alert_text_type: exclude_fields
alert_text_args: ["text","user.screen_name", "id"]
なんか英単語系の部分一致がうまくいかなかったので、むりやり正規表現にした。(indexの設定とかめんどかったため)
とりあえず動かしてみるが。。
ルールのテストではうまく行ったけども、userstreamのデータが増えてくるとクエリの結果取得がすごい時間かかってるっぽい。
ぐぬぬ。。。
fluent-plugin-slackを使わずにelasticsearch通して通知しようとしてるのは、エゴサ以外に、1日周期ぐらいで集約して情報を通知するのも考えてて、設定が二重になるのがイヤだったから。
でも、遅いのであればそっちにしようかな。。
(Elasticsearchに即時性求めちゃいけない気もしてるし)