なるべく楽して slack にエラーログを送りたい
要件
- host 名を出したい。
- CRITICAL が含まれる行を出したい
- slack の incoming web hook つくって url 取得する
- td-agent2 intall. (もし td-agent が 1 だったら一度消す)
- plugin を install する
# yum --setopt=tsflags=noscripts remove td-agent
# yum --setopt=tsflags=noscripts remove td-agent2
# curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
# /usr/sbin/td-agent-gem install fluent-plugin-slack
# /usr/sbin/td-agent-gem install fluent-plugin-rewrite-tag-filter
td-agent.conf (この例は daemontools で起動している plack の log です)
# tail で拾う
<source>
@type tail
path /service/my-web/log/main/current
pos_file /var/log/td-agent/error.log.pos
tag plack.raw
format /^(?<message>.*)$/
</source>
# 条件で tag つけなおす rewrite
<match plack.raw>
@type rewrite_tag_filter
rewriterule1 message ^.*CRITICAL.*$ plack.error
rewriterule2 message ^.*HTTP/1.0" 404 .*$ plack.error
</match>
# host 名付与する
<filter plack.*>
@type record_transformer
<record>
host ${hostname}
</record>
</filter>
# slack になげる
<match plack.error>
@type slack
webhook_url https://hooks.slack.com/services/xxxx/xxxx/xxxx
channel hoge
username error
icon_emoji :gear:
flush_interval 10s
message_keys host,message
message "[%s] %s"
</match>