またもや身内向けなので淡白に書いていきます。
通常はdocker-composeでコンテナ間でサービス連携するのがCoolだと思います。
ただ、諸事情により他サービスがコンテナで動いてない且つfluentdの環境はコンテナにしてホストOSの環境を汚したくないというニッチな人向けチュートリアル
fluentd環境構築
docker-hubからイメージをpull、何も明示しないとlatestになるので
ほしいイメージはこちらから探してみてください。
$docker pull fluend
fluentd.confの設定
dockerは絶対パスでマウントするため今回はホスト上の/_fluentd/etc/fluentd.conf
に設定を記述します。
今回はコンテナ上のfluentdと疎通確認したいだけなので公式ドキュメントにある
httpプロトコル監視サンプルを利用します。
<source>
@type http
port 8888
bind 0.0.0.0
</source>
<match test.cycle>
@type stdout
</match>
fluentdコンテナの立ち上げ
$docker run -ti -p 8888:8888 --rm -v /_fluentd/etc:/fluentd/etc \
fluentd -c /fluentd/etc/fluentd.conf -v
順に解説していきます。
マウント
-v /_fluentd/etc:/fluentd/etc
ホストの/_fluentd/etc
をマウントすることでホストで書いた設定を
コンテナに反映できるようにしてます。
confファイルの設定
td-agentを利用している場合はconfファイルが別の名前だったりします。
そういう方向けに、以下オプションでファイル名を明示的に設定できます。
-c /fluentd/etc/<conf-file>
portのマッピング
設定ファイルで記述したポート8888をリッスンできるようにします。
-p 8888:8888
疎通テスト
curl -i -X POST -d 'json={"action":"login","user":2}' \
http://localhost:8888/test.cycle
ここでurlにtest.cycle
という文言を含めるのがキモです。
当たり前ですがfluentdでは<match>
で定義したタグのみ監視します。
うまく行けば以下のようなログが出力されます。
2020-06-28 08:20:20.195562574 +0000 test.cycle:
{"action":"login","user":2}