fluentd-uiでdockerコンテナのpacheのログを収集コンテナに転送する方法
いろいろ苦戦して時間がかかったので、備忘録として残しておきます。
イメージの作成
-
以下のURLにあるDockerFileを使います。
https://github.com/mailei/fluent_apache_dockerfile/blob/master/Dockerfile -
このイメージは、ubuntu18.04にapache2、fluentd-uiをインストールしたイメージを作成するためのdockerfileです。
-
docker buildでイメージを作成
$ docker huild -t fluentd_apache_server .
- 転送元と収集サーバー共に同じイメージを使います。
転送元(apache+fluentd-ui)コンテナ起動
- docker コンテナの起動
$ docker run -p 19292:9292 -p 14224:24224 -p 18080:80 -it -d --rm --name apache fluentd_apache_server
-
転送元は、fluentdのポートとapacheのポートを開いておきます。
-
コンテナに乗り込んで、/var/log/apache2と/var/log/fluentd にchod 777 で権限の変更をしておきます。
fluentdのconfigファイル記載
- http://localhost:19292 でfluentdのGUIにアクセスし、configの設定画面でcinfigファイルを編集します。
<match apache.**>
@type stdout
</match>
<match apache.**>
@type forward
<server>
host ※IP
port 24224
</server>
</match>
<source>
@type tail
path /var/log/apache2/access.log
pos_file /var/log/fluentd/httpd-access.log.pos
tag apache.access
format apache2
</source>
<match apache.**>
type file
path /var/log/fluentd/out
</match>
- ※IPの部分は、
docker inspect 収集サーバー
で出力されるコンテナのIPアドレスです。
収集側(fluentd-ui)コンテナ起動
$ docker run -p 39292:9292 -p 34224:24224 -it -d --rm --name fluentd fluentd_apache_server
- 収集側は、fluentdのポートのみ開いておきます。
fluentdのconfigファイル記載
- http://localhost:39292 でfluentdのGUIにアクセスし、configの設定画面でcinfigファイルを編集します。
<source>
@type forward
</source>
<match apache.**>
@type stdout
</match>
<match apache.**>
type file
path /tmp/acce
</match>
<match apache.**>
@type stdout
</match>
- dockerコンテナに乗り込んでログを出力するフォルダー(/tmp/acce)にchmod 777で権限の変更をしておきます。
出力したファイルを確認してログが転送されていることを確認する
- http://localhost:18080 にアクセスしてアクセスログを出力させます。
- 転送先のコンテナに乗り込んでログを確認する。
- apacheのアクセスログが出力されているはずです
まとめ
今回は、なかなかうまくログの読み込み、書き込み、転送ができずにはまってしまいました。
今回は、コンテナ間のログ転送をとりあえず確認したかったので、
configで指定したフォルダすべてにchmodで777権限を与えることで転送まで確認できました。
権限についてはいろいろ試してみる必要がありそうです。