fluentd

FluentdでWEBサーバからログを送る

優 fluentd

fluentd

 

ログ送信といえば伝統的なsyslogがありますが、なうなヤングにはfluentdを使ってSlackなどのチャットツールに通知したり、ログ分析基盤のElasticsearchと連携、Kibanaでグラフによる可視化が出来るなど馬鹿ウケです。

そんな今回はWEBサーバにfluentdのエージェントを導入して、fluentd ログ集約サーバにログを転送してみましょ~。

 

WEBサーバ側

 

まずはApache WEBサーバをインストールしてみましょう。

# yum install httpd httpd-devel

# systemctl start httpd
# systemctl enable httpd

 

td-agentを公式推奨方法でインストールします。

# 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/).

 

起動しましょう。

# systemctl start td-agent
# systemctl enable td-agent

 

テストしましょうね。

[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ログのパーミッション設定を行いましょう。

# chmod o+x /var/log/httpd

 

td-agentの設定ファイルを設定します。

# 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>

 

 

反映させましょう。

# systemctl restart td-agent

 

ファイルが出来てたら中身を確認して下さいね!

# 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サーバ側

# 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>

172.31.23.254のプライベートアドレスのfluentdログ集約サーバにログを転送する設定にします。

 

反映しましょう!

# systemctl restart td-agent

 

 

 

fluentdログサーバ側

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

 

# cp /etc/td-agent/td-agent.conf /etc/td-agent/td-agent.conf.org
# rm -f /etc/td-agent/td-agent.conf

 

受信する設定を行いましょう。

# 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>

 

ディレクトリ設定

# mkdir /var/log/fluentd
# chown td-agent:td-agent /var/log/fluentd

 

起動による反映

# systemctl restart td-agent
# systemctl enable td-agent

 

# 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"}

ログが流れてきたらおーけですね。

 

お疲れ様です。

 

 

 

fluentd
最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG