elastalertを利用するにあたりはまったところと、工夫したところをまとめました。
#elastalertとは
ElasticSearchに送ったログなどを監視してアラートを投げてくれるやつ
メールとかslackなどなど
#はまったところ
気がつけば簡単なのに気がつくまでが一苦労・・・(ノД`)とほほ・・
elastalert-create-indexが実行できない
Traceback (most recent call last):
・・・
pkg_resources.DistributionNotFound: botocore
create_index.pyを直接実行すれば良い
python elastalert/elastalert/create_index.py
elastalert-test-ruleが実行できない
elastalert/elastalert/test_rule.pyを実行すれば良いと思ったら、それも怒られた。
Traceback (most recent call last):
File "elastalert/elastalert/test_rule.py", line 20, in <module>
import elastalert.config
ImportError: No module named config
ファイルをコピーさせてから実行する
cp elastalert/elastalert/test_rule.py elastalert/
python elastalert/test_rule.py elastalert/rules/xxx.yaml
##supervisordで実行されない
原因はconfig.yamlに書いたrules_folderのパスがsupervisordが実行する場所からは見れない
####対策1
config.yamlに書いたrules_folderを絶対パスにするか
rules_folder: /elastalertがインストールされているディレクトリ/rules
####対策2
supervisordに登録するプロセスにdirectoryを追加する
directory=/elastalertがインストールされているディレクトリ/
#工夫したところ
##kibanaへのリンクを付けた
ログを全てSlackに流すわけには行かなかったため、ダッショボードとログへのkibanaのリンクが欲しかった
alert_subjectを利用する
use_kibana4_dashboard: http://kibana/app/kibana#/dashboard/applog
alert_text_type: exclude_fields
alert_subject: エラーが発生しました。(<http://indexとtypeとidをつかってログへのリンクを組み立てる/{0}/{1}/?id={2}|LogDetail> | <{3}|DashBoard>)
alert_subject_args:
- _index
- _type
- _id
- kibana_link
なおalert_text
はエスケープ処理されるためリンクは作れなかった