ログ送信といえば伝統的なsyslogがありますが、なうなヤングにはfluentdを使ってSlackなどのチャットツールに通知したり、ログ分析基盤のElasticsearchと連携、Kibanaでグラフによる可視化が出来るなど馬鹿ウケです。
そんな今回はWEBサーバにfluentdのエージェントを導入して、fluentd ログ集約サーバにログを転送してみましょ~。
WEBサーバ側
まずはApache WEBサーバをインストールしてみましょう。
1 2 3 4 |
# yum install httpd httpd-devel # systemctl start httpd # systemctl enable httpd |
td-agentを公式推奨方法でインストールします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh Installed: td-agent.x86_64 0:2.3.6-0.el7 Dependency Installed: at.x86_64 0:3.1.13-22.el7 avahi-libs.x86_64 0:0.6.31-17.el7 bc.x86_64 0:1.06.95-13.el7 cups-client.x86_64 1:1.6.3-29.el7 cups-libs.x86_64 1:1.6.3-29.el7 ed.x86_64 0:1.9-4.el7 m4.x86_64 0:1.4.16-10.el7 mailx.x86_64 0:12.5-16.el7 patch.x86_64 0:2.7.1-8.el7 psmisc.x86_64 0:22.20-15.el7 redhat-lsb-core.x86_64 0:4.1-27.el7.centos.1 redhat-lsb-submod-security.x86_64 0:4.1-27.el7.centos.1 spax.x86_64 0:1.5.2-13.el7 time.x86_64 0:1.7-45.el7 Complete! Installation completed. Happy Logging! NOTE: In case you need any of these: 1) security tested binary with a clear life cycle management 2) advanced monitoring and management 3) support SLA Please check Fluentd Enterprise (https://www.treasuredata.com/fluentd/). |
起動しましょう。
1 2 |
# systemctl start td-agent # systemctl enable td-agent |
テストしましょうね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[root@ip-172-31-16-106 ~]# curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test [root@ip-172-31-16-106 ~]# tail -f /var/log/td-agent/td-agent.log </source> <source> @type debug_agent bind 127.0.0.1 port 24230 </source> </ROOT> 2018-01-04 10:19:25 +0000 [info]: listening fluent socket on 0.0.0.0:24224 2018-01-04 10:19:25 +0000 [info]: listening dRuby uri="druby://127.0.0.1:24230" object="Engine" 2018-01-04 10:27:51 +0000 debug.test: {"json":"message"} |
ログが表示されたらOKです。
Apacheログのパーミッション設定を行いましょう。
1 |
# chmod o+x /var/log/httpd |
td-agentの設定ファイルを設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# vi /etc/td-agent/td-agnet.conf <source> type tail path /var/log/httpd/access_log tag apache.access pos_file /var/log/td-agent/access_log.pos format apache2 </source> <match apache.access> type file path /var/log/td-agent/httpd/access.log time_slice_format %Y%m%d time_slice_wait 10m compress gzip </match> |
反映させましょう。
1 |
# systemctl restart td-agent |
ファイルが出来てたら中身を確認して下さいね!
1 2 3 4 5 6 |
# ls -laht /var/log/td-agent/httpd/ total 68K -rw-r--r-- 1 td-agent td-agent 66K Jan 4 10:41 access.log.20180104.b561f0f5384a87574 drwxr-xr-x 2 td-agent td-agent 51 Jan 4 10:40 . drwxr-xr-x 4 td-agent td-agent 75 Jan 4 10:38 .. |
これでローカル内でApacheのログをtd-agentに渡せていることが分かります。
Fluentd ログサーバに転送する
WEBサーバ側
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# vi /etc/td-agent/td-agent.conf <source> type tail path /var/log/httpd/access_log tag apache.access pos_file /var/log/td-agent/access_log.pos format apache2 </source> #<match apache.access> # type file # path /var/log/td-agent/httpd/access.log # time_slice_format %Y%m%d # time_slice_wait 10m # compress gzip #</match> <match **> type forward <server> host 172.31.23.254 port 24224 </server> </match> |
反映しましょう!
1 |
# systemctl restart td-agent |
fluentdログサーバ側
1 |
# curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh |
1 2 |
# cp /etc/td-agent/td-agent.conf /etc/td-agent/td-agent.conf.org # rm -f /etc/td-agent/td-agent.conf |
受信する設定を行いましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# vi /etc/td-agent/td-agent.conf <source> type forward port 24224 bind 0.0.0.0 </source> <match **> type file path /var/log/fluentd/out </match> |
ディレクトリ設定
1 2 |
# mkdir /var/log/fluentd # chown td-agent:td-agent /var/log/fluentd |
起動による反映
1 2 |
# systemctl restart td-agent # systemctl enable td-agent |
1 2 3 |
# tail -f /var/log/fluentd/out.*****(>▽<)****** 2018-01-04T14:32:34+00:00 apache.access {"host":"xxx.xxx.xxx.xxx","user":null,"method":"GET","path":"/noindex/css/fonts/Bold/OpenSans-Bold.ttf","code":404,"size":238,"referer":"http://yyy.yyy.yyy.yyy/noindex/css/open-sans.css","agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.xxx.yyy.84 Safari/537.36"} |
ログが流れてきたらおーけですね。
お疲れ様です。