2022年4月11日月曜日

rewrite_tag_filter を使って特定のログを Slack に通知する方法

rewrite_tag_filter を使って特定のログを Slack に通知する方法

概要

前回 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 件のコメント:

コメントを投稿