ニフティクラウドストレージで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系をインストールします。

リポジトリの追加

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

1
2
3
4
5
6
7
8
cat > /etc/yum.repos.d/td.repo <<EOF
[treasuredata]
name=TreasureData
gpgcheck=0
enable=0
EOF

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

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

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

conf設定

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

confの変更

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

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
27
28
29
30
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

サーバ固有の設定変更

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

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

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

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

1
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起動

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

1
/etc/init.d/td-agent start

動作確認

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

1
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台ほどあります…。

サーバー大好き!

コメントを残す

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

CAPTCHA


Time limit is exhausted. Please reload CAPTCHA.