hamayuzinの日記

エンジニアとかデータサイエンティストとかやってます。あの時 あれやってたな的な備忘録にできれば。

【nginx/fluentd/s3/athena】fluentdでs3にlogを出してathenaで分析できるようにする その1

auto scale関係で、サーバーのログがすぐ消えてしまう環境で、ログをどこかに置いておきたい場合がある。 今回は、nginxのaccess_logを、fluentdでS3にアップロードし aws athenaで分析できるようにする

環境は、aws ec2のamazon linux上。

【目次】

  1. ec2にfluentdをセットアップ <- いまここ
  2. ecからs3にファイルアップロード
  3. athenaで分析する

ec2にfluentdをセットアップ

サーバー設定

ファイルディクリプタ

$ ulimit -n
1024

の場合は、

cd /etc/security
sudo cp limits.conf limits.conf.origin
sudo vim limits.conf
root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536

カーネルパタメーター

net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535

両方変更して

/etc/sysctl.con

td-agent入れる

curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

td-agentの起動と、サーバー再起動時の起動設定

sudo service td-agent start
 Starting td-agent:                                         [  OK  ]
sudo chkconfig td-agent on

td-agentのプラグイン

#S3へupload
sudo /usr/sbin/td-agent-gem install fluent-plugin-s3
#プレースホルダー対応
sudo /usr/sbin/td-agent-gem install fluent-plugin-forest
#configいじる
sudo /usr/sbin/td-agent-gem install fluent-plugin-config-expander

td-agentのユーザー変更

/etc/init.d/td-agent
#TD_AGENT_USER=td-agent
TD_AGENT_USER=root

設定ファイルの更新

詳細はその2で

/etc/td-agent/td-agent.conf

設定の反映

 sudo /etc/init.d/td-agent reload