概要
前回 fluentd-plugin-slack を使って fleuntd に来たログを slack に通知する方法を紹介しました
今回は特定の文字列を含むログだけを slack に通知する方法を紹介します
grep ではなく rewrite_tag_filter プラグインを使います
環境
- Ubuntu 18.04
- docker 20.10.7
- fluentd 1.3.2
Dockerfile
- vim Dockerfile
FROM fluent/fluentd
RUN apk add --update --virtual .build-deps sudo build-base ruby-dev \
&& sudo gem install fluent-plugin-slack fluent-plugin-rewrite-tag-filter \
&& sudo gem sources --clear-all \
&& apk del .build-deps \
&& rm -rf /var/cache/apk/* /home/fluent/.gem/ruby/2.5.0/cache/*.gem
イメージ作成
- docker build -t my_fluentd .
fleunt.conf 作成
- vim fluent.conf
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
<match docker.**>
@type copy
<store>
@type stdout
</store>
<store>
@type rewrite_tag_filter
<rule>
key log
pattern /notify slack/
tag slack.${tag}
</rule>
</store>
</match>
<match slack.**>
@type slack
webhook_url https://hooks.slack.com/services/xxx/xxx/xxxxxx
channel private
username test
message_keys log
icon_emoji :ghost:
flush_interval 60s
</match>
今回は log キー内に「notify slack」という文字列を含むログだけを slack に通知します
fluentd コンテナ起動
-
docker run -d -p 24224:24224 -p 24224:24224/udp -v $(pwd):/fluentd/etc -e FLUENTD_CONF=fluent.conf --name my_fluentd my_fluentd
動作確認
-
docker run --rm --log-driver=fluentd --log-opt fluentd-address=192.168.100.1:24224 --log-opt tag="docker.{{.Name}}" alpine /bin/sh -c "echo notify slack"
最後に
filter プラグインの grep を使ってもできると思います
0 件のコメント:
コメントを投稿