Created
December 5, 2012 12:09
-
-
Save ShinsukeYokota/4215057 to your computer and use it in GitHub Desktop.
fluentdでapacheのログ集約
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
■fluentdでapacheのログ集約 | |
複数台あるAPIサーバのログをADMサーバのmongodbに保存する | |
ホスト:AWS/EC2インスタンス | |
OS:ScientificLinux6.1 | |
【AWS】 | |
## EC2のセキュリティグループの設定変更 | |
ADMサーバが所属するセキュリティグループで、 | |
APIが所属するセキュリティグループからの | |
TCP/24224 | |
UDP/24224 | |
のinboundを許可する | |
【API】 | |
## Apacheの設定変更 | |
# アクセスログの内容はcombinedioにレスポンスタイムを足したもの | |
# ELB配下にいるのでリモートホストのIPアドレスを取得できるように環境変数X-Forwarded-Forを使う | |
[api] vi /etc/httpd/conf/httpd.conf | |
------------ | |
<IfModule logio_module> | |
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio | |
</IfModule> | |
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/www.example.jp/access_log/access_log.%Y%m%d 86400 540" combinedio | |
------------ | |
↓ | |
------------ | |
<IfModule logio_module> | |
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio | |
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O %D" combinedx | |
</IfModule> | |
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/www.example.jp/access_log/access_log.%Y%m%d 86400 540" combinedx | |
------------ | |
## fluentd(td-agent)のインストール | |
# yumレポジトリを登録して | |
[api] cat <<__EOT__ > /etc/yum.repos.d/td.repo | |
[treasuredata] | |
name=TreasureData | |
baseurl=http://packages.treasure-data.com/redhat/$basearch | |
gpgcheck=0 | |
__EOT__ | |
# インストール | |
[api] yum install td-agent | |
## fluentdの設定 | |
# バックアップ | |
[api] cp -p /etc/td-agent/td-agent.conf{,.orig} | |
# 設定上書き | |
[api] cat <<__EOT__ > /etc/td-agent/td-agent.conf | |
## File input | |
<source> | |
type tail | |
format /^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)" (?<received_byte>[^ ]*) (?<sent_byte>[^ ]*) (?<response_time_micro_sec>[^ ]*))?$/ | |
time_format %d/%b/%Y:%H:%M:%S %z | |
path /var/log/httpd/www.example.jp/access_log/access_log | |
pos_file /var/log/td-agent/pos/apache.access.api.pos | |
tag apache.access.api | |
</source> | |
<source> | |
type tail | |
format /^\[[^ ]* (?<time>[^\]]*)\] \[(?<level>[^\]]*)\] (?<message>.*)$/ | |
time_format %b %d %H:%M:%S %Y | |
path /var/log/httpd/www.example.jp/error_log/error_log | |
pos_file /var/log/td-agent/pos/apache.error.api.pos | |
tag apache.error.api | |
</source> | |
## Forwarding | |
<match apache.**> | |
type forward | |
buffer_type file | |
buffer_path /var/log/td-agent/buffer/apache | |
flush_interval 60s | |
<server> | |
name example-adm | |
host adm.example.jp | |
port 24224 | |
</server> | |
</match> | |
__EOT__ | |
## 設定に合わせていろいろ準備 | |
# pos, bufferファイル置場作成 | |
[api] sudo -u td-agent mkdir /var/log/td-agent/{pos,buffer} | |
# apacheのログ(日付月ファイル)のシンボリックリンクを定期的に作成する処理 | |
[api] cat <<__EOT__ > /usr/local/bin/set_daily_symlink.sh | |
#!/bin/sh | |
LINK=$1 | |
FILE=${LINK}.`date '+%Y%m%d'` | |
if [ ! -e $LINK -o -L $LINK ];then | |
/bin/ln -sf $FILE $LINK | |
fi | |
__EOT__ | |
[api] chmod a+x /usr/local/bin/set_daily_symlink.sh | |
[api] cat <<__EOT__ >> /etc/cron.d/httpd | |
# make symbolic link which is used by fluentd | |
5 0 * * * root /usr/local/bin/set_daily_symlink.sh /var/log/httpd/www.example.jp/access_log/access_log > /dev/null 2>&1 | |
5 0 * * * root /usr/local/bin/set_daily_symlink.sh /var/log/httpd/www.example.jp/error_log/error_log > /dev/null 2>&1 | |
__EOT__ | |
[api] /usr/local/bin/set_daily_symlink.sh /var/log/httpd/www.example.jp/access_log/access_log | |
[api] /usr/local/bin/set_daily_symlink.sh /var/log/httpd/www.example.jp/error_log/error_log | |
## fluentd起動 | |
[api] /etc/init.d/td-agent start | |
[api] chkconfig td-agent on | |
【ADM】 | |
## fluentd(td-agent)のインストール | |
# yumレポジトリを登録して | |
[adm] cat <<__EOT__ > /etc/yum.repos.d/td.repo | |
[treasuredata] | |
name=TreasureData | |
baseurl=http://packages.treasure-data.com/redhat/$basearch | |
gpgcheck=0 | |
__EOT__ | |
# インストール | |
[adm] yum install td-agent | |
## fluentdの設定 | |
# バックアップ | |
[adm] cp -p /etc/td-agent/td-agent.conf{,.orig} | |
# 設定上書き | |
[adm] cat <<__EOT__ > /etc/td-agent/td-agent.conf | |
## built-in TCP input | |
<source> | |
type forward | |
</source> | |
## MongoDB output | |
<match apache.access.api> | |
type mongo | |
database apache | |
collection access | |
host 127.0.0.1 | |
port 27017 | |
buffer_type file | |
buffer_path /var/log/td-agent/buffer/apache.access.api | |
flush_interval 10s | |
</match> | |
<match apache.error.api> | |
type mongo | |
database apache | |
collection error | |
host 127.0.0.1 | |
port 27017 | |
buffer_type file | |
buffer_path /var/log/td-agent/buffer/apache.error.api | |
flush_interval 10s | |
</match> | |
__EOT__ | |
## 設定に合わせていろいろ準備 | |
# pos, bufferファイル置場作成 | |
[adm] sudo -u td-agent mkdir /var/log/td-agent/{pos,buffer} | |
## mongodbインストール、起動 | |
# yumレポジトリを登録して | |
[adm] cat <<__EOT__ > /etc/yum.repos.d/10gen.repo | |
[10gen] | |
name=10gen Repository | |
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64 | |
gpgcheck=0 | |
__EOT__ | |
# インストール | |
[adm] yum install mongo-10gen.x86_64 mongo-10gen-server.x86_64 | |
# 起動 | |
[adm] /etc/init.d/mongod start | |
[adm] chkconfig mongod on | |
## fluentd起動設定変更 | |
# mongodbより後に起動するようにしないと、起動に失敗する | |
[adm] vi /etc/init.d/td-agent | |
------------ | |
# chkconfig: - 80 20 | |
------------ | |
↓ | |
------------ | |
# chkconfig: - 99 20 | |
------------ | |
## fluentd起動 | |
[adm] /etc/init.d/td-agent start | |
[adm] chkconfig td-agent on |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment