987 Words

fluentdを使いはじめたのですが、apacheログを別のサーバーへ転送させてみてる場合、apacheログがローテーションされてもちゃんとローテーションされるのか検証してみました。(とっても初心者なのでこんな検証からやりはじめてます。。。)

環境

  • Vagrantで稼働しているCentOS6のサーバー2台
  • 送信元が192.168.33.10、受信側が192.168.33.11

送信元のtd-agent.conf

type tail path /var/log/httpd/*access_log pos\_file /var/log/td-agent/access\_log.pos tag httpd.access format apache2 type forward host 192.168.33.11

受信側のtd-agent.conf

type forward type copy type file path /var/log/td-agent/web01/httpd_access.log

検証

送信元のapacheログを強制的にローテーション。

# logrotate -f /etc/logrotate.d/httpd

するとtd-agent.logには下記のようなinfoログが吐かれます。

2015-11-07 18:47:42 +0900 [info]: detected rotation of /var/log/httpd/stage.example.com-access_log; waiting 5 seconds
2015-11-07 18:47:42 +0900 [info]: ected rotation of /var/log/httpd/www.example.com-access_log; waiting 5 seconds
2015-11-07 18:47:43 +0900 [info]: following tail of /var/log/httpd/www.example.com-access_log
2015-11-07 18:47:43 +0900 [info]: following tail of /var/log/httpd/stage.example.com-access_log

apacheログが正しくローテーションされたのを確認して、この状態で再度Webへアクセスしてみても、正常にログが転送されているのが確認できます。

では、送信元のポジションログや、受信側の転送されたログはいつローテーションされるのか?

これは単純に/etc/logrotate.d/td-agentのローテーションに伴って実行されるようです。

ためしにlogrotateを強制的に実施してみます。

実施前

-rw-r–r– 1 td-agent td-agent 214 11月 7 19:05 2015 access_log.pos
drwxr-xr-x 2 td-agent td-agent 4096 11月 5 18:22 2015 buffer
-rw-r–r– 1 td-agent td-agent 68372 11月 7 18:47 2015 td-agent.log

実施後

# logrotate -f /etc/logrotate.d/td-agent

-rw-r–r– 1 td-agent td-agent 214 11月 7 19:05 2015 access_log.pos
drwxr-xr-x 2 td-agent td-agent 4096 11月 5 18:22 2015 buffer
-rw-r—– 1 td-agent td-agent 0 11月 7 19:08 2015 td-agent.log
-rw-r–r– 1 td-agent td-agent 68437 11月 7 19:08 2015 td-agent.log.1

この状態で再度ウェブサイトへアクセスしてみましたが、どうやらポジションログはローテーションされないようです。

特に容量が常に増えていくようなものでも無いようなので、それはまぁそうかって感じですね。

ただ、受信側でlogorotateを強制的に実施したとこと、転送されたアクセスログが下記のようにローテーションされておりました。

# ls -l web01/
合計 12
-rw-r–r– 1 td-agent td-agent 2506 11月 7 19:09 2015 httpd_access.log.20151107.b523f0819dd082f13
-rw-r–r– 1 td-agent td-agent 5089 11月 7 19:05 2015 httpd_access.log.20151107_0.log

以上から、転送されたアクセスログのローテーションは通常のlogrotateの設定を参照して、必要でであればそこで変更すると良さそうです。(容量が多すぎてしまう場合は、ログの容量を指定して実行させていくのもありでしょうか)

以上