ニフティクラウドストレージでfluentd(td-agent)を使用する方法.

AWSではオートスケールの都合などもあり、ログをfluentd(td-agent)を用いてAmazon S3へ置く事が流行っていますね。

しかし、AWSと同じ手順でtd-agentをインストールしても、ニフティクラウドストレージでは利用できません。
原因はtd-agentにaws-sdkが同梱されており、保存先にAmazonS3が指定してある為に他クラウドではエラーになってしまいます。

そこで、本記事ではこの対策方法について記載したいと思います。

OS

CentOS6.4
Apache2.2 td-agent1.1.24

Apacheのログ形式は標準のcombined
ログ保存領域は/var/www_logs/[バーチャルホスト名]-access_log.%Y%m%d

td-agentインストール方法

本手順ではtd-agent1系をインストールします。

リポジトリの追加

以下の内容をターミナルにそのまま貼りつけ

cat > /etc/yum.repos.d/td.repo <<EOF
[treasuredata]
name=TreasureData
baseurl=http://packages.treasuredata.com.s3.amazonaws.com/redhat/$basearch
gpgcheck=0
gpgkey=http://packages.treasuredata.com.s3.amazonaws.com/redhat/RPM-GPG-KEY-td-agent
enable=0
EOF

yumコマンドにてインストール

以下の内容をターミナルにそのまま貼りつけ

 yum -y --enablerepo=treasuredata install td-agent

conf設定

標準では不要なconfファイルが含まれるので、こちらの削除とAPIキー等の記載をします

confの変更

以下の内容をターミナルにそのまま貼りつけ

    mkdir /tmp/td-agent
    chown td-agent:td-agent /tmp/td-agent
    mkdir /var/log/td-agent/buffer
    chown td-agent:td-agent /var/log/td-agent/buffer
    cp -pi /etc/td-agent/td-agent.conf /etc/td-agent/td-agent.conf.org
    cat > /etc/td-agent/td-agent.conf <<EOF
    # File input
    ## read apache logs continuously and tags td.apache.access

      type tail
      format apache
      path /var/www_logs/!!!バーチャルホスト名!!!-access_log.%Y%m%d
      tag apache.access.!!!バーチャルホスト名!!!
      pos_file /tmp/td-agent/!!!バーチャルホスト名!!!.pos



      type s3
      aws_key_id !!!NiftyCloudAccessKey!!!
      aws_sec_key !!!NiftyCloudSecretAccessKey!!!
      s3_bucket !!!NiftyCloudバケット名!!!
      s3_endpoint ncss.nifty.com
      check_apikey_on_start false
      s3_object_key_format %{path}%{time_slice}%{hostname}_apachelog_%{index}.%{file_extension}
      path www_logs/
      time_slice_format %Y/%m/%d/
      buffer_path /var/log/td-agent/buffer/CloudStorage
      flush_interval 60s

    EOF

サーバ固有の設定変更

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

以下の個所を変更(置換)
!!!バーチャルホスト名!!! → サーバーで稼働しているバーチャルホスト名。複数ある場合は要conf編集
!!!NiftyCloudAccessKey!!!    →該当アカウントのアクセスキーを記載
!!!NiftyCloudSecretAccessKey!!! →該当アカウントのシークレットキーを記載
!!!NiftyCloudバケット名!!!   →作成するバケット名を設定

aws-sdkのS3固定設定の変更

以下の内容をターミナルにそのまま貼りつけ、実行

    sed -i -e 's/        @endpoint = config.send(:"#{service_ruby_name}_endpoint")/        #@endpoint = config.send(:"#{service_ruby_name}_endpoint")n        @endpoint = "ncss.nifty.com"/g' /etc/td-agent/td-agent.conf

td-agent起動

以下の内容をターミナルにそのまま貼りつけ、実行

 /etc/init.d/td-agent start

動作確認

以下のコマンドでログを確認し、
下記ログがある事を確認

 tail /var/log/td-agent/td-agent.log
[起動日時] [info]: following tail of /var/www_logs/[本日のログファイル]

例:
2015-03-12 11:28:55 +0900 [info]: following tail of /var/www_logs/fluentdtest.xxx.xxx-access_log.20150312

以上になります。

ストレージに入ったログを各種ログ解析ツールに入れて確認したりすることができるはずです!

なお、手順途中のバケット名を変更することで、IDCFクラウドのオブジェクトストレージや、さくらのBASE Storageにも対応できます!
興味のある人は一度トライしてみてください!

なにかあればコメント等ばんばん頂ければ嬉しいです!

投稿者プロフィール

kenji
2013年入社の平成生まれです。

初めて触ったコンピュータはPC9821でダイヤルアップでした。
その時に鯖落ちや人大杉の対応をしてくださる鯖缶になりたいと憧れ、
みなさんのお役に立てればと思っております!
#今では個人所有のパソコン・サーバだけで20台ほどあります…。

サーバー大好き!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.

ABOUTこの記事をかいた人

2013年入社の平成生まれです。 初めて触ったコンピュータはPC9821でダイヤルアップでした。 その時に鯖落ちや人大杉の対応をしてくださる鯖缶になりたいと憧れ、 みなさんのお役に立てればと思っております! #今では個人所有のパソコン・サーバだけで20台ほどあります…。 サーバー大好き!