fluentd(td-agent)とfluent-agent-liteでログ集約
nginx reverse proxy以下に数台のアプリケーションサーバを配置してます。 Applictionサーバでログが分散してて、検証するのにかなり辛いのでFluentd(td-agent)とfluent-agent-liteを使ってログをまとめてみました。
ちょろっと調べてみると、
- アプリケーションでFluent::Logger等を使って集約サーバに流す方法
- Logをtailして集約サーバに流す方法
んで、つぶやいたら@repeatedly氏がアドバイスくれました:) Many thanks!
検討した結果、下記の二点で"Logをtailして集約サーバに流す方法"をとることにしました。
- アプリケーションとログ機能を分けたかった
- appインスタンスが非力すぎてメモリを節約したい(fluent-agent-liteを使いたい)
下記のように簡単にメモリ使用量を見てみると(top's RES) td-agentが20Mとtd-agent-liteが8Mでした。
# Memory usage of td-agent(fluentd) just after installed package. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1649 td-agent 20 0 208m 17m 4 S 0.0 3.5 0:00.00 ruby 1652 td-agent 20 0 236m 23m 388 S 0.0 4.8 0:00.85 ruby # fluent-agent-lite PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 14675 root 20 0 152m 8332 2464 S 0.3 1.7 0:56.18 perl
インストール方法
というより、ansible playbookを張っとく。
Ansible/roles/fluent-agent-lite at master · shohey1226/Ansible · GitHub
--- - name: resolve dependency yum: name=perl-devel state=latest - name: git clone fluent-agent-lite shell: (cd /tmp; git clone https://github.com/tagomoris/fluent-agent-lite.git) args: creates: /etc/fluent-agent-lite.conf - name: install fluent-agent-lite shell: /tmp/fluent-agent-lite/bin/install.sh args: creates: /etc/fluent-agent-lite.conf - name: copy fluent-agent-lite.conf copy: src=fluent-agent-lite.conf dest=/etc/fluent-agent-lite.conf force=yes notify: - restart fluent-agent-lite - name: setup monit copy: src=fluent-agent-lite.monit dest=/etc/monit.d/fluent-agent-lite force=yes notify: restart monit - name: enable on boot service: name=fluent-agent-lite state=started enabled=yes
Ansible/roles/fluentd at master · shohey1226/Ansible · GitHub
--- - name: install fluentd shell: sudo curl -L http://toolbelt.treasuredata.com/sh/install-redhat.sh | sh args: creates: /etc/td-agent/td-agent.conf - name: install fluentd plugin shell: sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-file-alternative - name: copy td-agent.cnf copy: src=td-agent.conf dest=/etc/td-agent/td-agent.conf force=yes notify: - restart fluentd - name: setup monit copy: src=fluentd.monit dest=/etc/monit.d/fluentd force=yes notify: restart monit - name: enable on boot service: name=td-agent state=started enabled=yes