Apache + fluentd + S3でアクセスログ収集をやってみた
というわけでタイトルまんまなんですが、
参考文献が大量にあるのでその紹介と、
ハマった部分を事細かに説明します。
- apache fluentd S3対応のための参考文献
- ハマった部分
- まとめ
apache fluentd S3対応のための参考文献
こちらはwebサーバーがnginxの場合
S3とFluentdを用いた効率的なログ管理 | SmartNews開発者ブログ
こちらはwebサーバーがapache(httpd)の場合
Apache アクセスログを fluentd で S3 に保存する(修正版) - ようへいの日々精進
上記の記事で大方できるでしょう。
というわけで収集方はこちらに任せるとして、ハマった部分を書いていきます。
ハマった部分
service td-agent start
とりあえずインストールまではいき、そこから起動しようとした時、
> service td-agent start
もしくは
> /etc/init.d/td-agent start
で起動します。
すると
Starting td-agent: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.39/lib/fluent/supervisor.rb:34:in `chown': Operation not permitted - /var/log/td-agent/td-agent.log (Errno::EPERM)
というエラーが!
パーミッションを755にすると
Starting td-agent: /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/fluentd-0.10.39/lib/fluent/supervisor.rb:30:in `initialize': Permission denied - /var/log/td-agent/td-agent.log (Errno::EACCES)
というエラーに。
これの解決方法は
> chown td-agent:td-agent /var/log/td-agent
とすることで解決できます。
単純に権限の問題でした。
service td-agent status
では実際に動いているかをチェックします。
> service td-agent status
もしくは
> /etc/init.d/td-agent status
するとなんと
td-agent dead but pid file exists
というのが表示されました。
これは不親切で起動は成功しているけど、引き続き動いていないということ。
というわけで何が原因かを調査するのですが、動いていないのでログも取れず。
なのでデバッグは直接td-agentを動かします。
> td-agent
するとログも動きますのであとはエラーに合わせ対応していくだけ。
Amazon S3とうまく接続されていない
おそらくrefuse connection ... 等のエラーが現れた場合、
それはS3のendpointの設定がうまく行ってないと思われます。
自分は最初 bucket名も含めたendpointを設定していました。
s3_endpoint [bucket名].s3-ap-northeast-1.amazonaws.com
これではうまくいかず、単純にリージョンのendpointのみで大丈夫で
東京リージョンならば
s3_endpoint s3-ap-northeast-1.amazonaws.com
でokです。
こちらを参考に
Regions and Endpoints - Amazon Web Services
他にもapacheログへのアクセス権限がないなど、細かいのがありましたが、
上記3つはかなり脅威的でした。
(基本のLinuxの知識がまだまだ足りない)
というわけで以上
Apache + fluentd + S3
でのログ収集設定の苦労話でした。
Linuxシステム[実践]入門 (Software Design plus)
- 作者: 沓名亮典
- 出版社/メーカー: 技術評論社
- 発売日: 2013/08/20
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
こういうのを参考にもっと力を身につけたいですね。