東京生まれHOUSE MUSIC育ち

悪そうな奴はだいたい友達なの?

コンテナのログをfluentdにまとめる


スポンサードリンク

手始めにfluentdを動かしてみた - 東京生まれHOUSE MUSIC育ち」の続きです。

目標となる構成

今回の目標となる構成は以下です。

f:id:padobure:20190430102433p:plain

Dockerでhttpdを起動し、別サーバのfluentdにまとめるというのものです。

参考にした記事

以下の記事を参考にさせていただきました。

Docker環境で、コンテナのログをFluentdに出力する - CLOVER?

設定

送信元

dockerでhttpdを起動します。

CentOS7,6にDockerを入れます。

# docker --version
Docker version 1.13.1, build b2f74b2/1.13.1

動くことを確認したいので、Dockerfileなどは書かず、Dockerhubのイメージを使用します。

log-driver、fluentd-address、tagのオプションを入れてdocker container runします。

--rmのオプションは、コンテナ終了時にコンテナ自動的に削除です。

docker container run --rm \
  --name httpd \
  --log-driver=fluentd \
  --log-opt fluentd-address=tcp://192.168.150.136:24224 \
  --log-opt tag=docker.{{.ImageName}}.{{.Name}}.{{.ID}} \
  httpd:2.4.37

送信先

fluentd側の設定です。以下のようにtagがマッチしたら標準出力するというものです。

<source>
  @type forward
</source>

<match *.**>
  @type stdout
</match>

動作確認

docker container runでhttpdを起動すると、以下のようなメッセージが表示されます。

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message

表示されているIPアドレスcurlすると、ドキュメントルートのhtmlが読み込まれて、ログが出力されます。

# curl 172.17.0.3
<html><body><h1>It works!</h1></body></html>