2022年4月8日金曜日

docker で簡単に fluentd-plugin-slack を試す

docker で簡単に fluentd-plugin-slack を試す

概要

fluentd-plugin-slack は fluentd に来たログを slack に投げることができます
今回は docker で試してみました

環境

  • Ubuntu 18.04
  • docker 20.10.7

Dockerfile

  • vim Dockerfile
FROM fluent/fluentd

RUN apk add --update --virtual .build-deps sudo build-base ruby-dev \
 && sudo gem install fluent-plugin-slack \
 && 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 slack
    webhook_url https://hooks.slack.com/services/xxx/xxx/xxxxxx
    channel private
    username test
    message_keys log
    icon_emoji :ghost:
    flush_interval 60s
  </store>
</match>

message_keys で fluentd に流れてきた JSON ログのキーを指定することでその値を 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 "date"

今回は flush_interval 60s なので 1 分ごとにまとめて通知されます

特定のログだけ通知するには

grep プラグインと組み合わせます
こちらは次回紹介します

参考サイト

0 件のコメント:

コメントを投稿