Fluentd 勉強その2

Goで書かれたWebアプリケーションからAmazon Redshiftにログを送る勉強をしたかったけど、まずは情報の豊富なApache Webサーバーからのログを送ることにします。

プラグインのインストール

ネットの情報を見てると

/usr/lib64/fluent/ruby/bin/gem install fluent-plugin-redshift

というコマンドで入れてという記事が多かったのですが、僕の環境だと/usr/lib64/fluent/ruby/bin/gemがまず見つかりませんでした。

公式の情報を見ると

$ /usr/sbin/td-agent-gem install <plugin name>

という記載があったので、変更されたのかもしれないですね。 というか公式情報をまず最初に見る癖をつけないとダメですね。

以下のコマンドで必要なプラグインインストール。

/usr/sbin/td-agent-gem install fluent-plugin-redshift
/usr/sbin/td-agent-gem install fluent-plugin-jsonbucket

でこの記事を参考にして、ApacheのログをRedshiftに送ってみる。

qiita.com

が以下のエラーが出てうまくログが送信されない。。

failed to copy data into redshift due to load error. s3_uri=s3://ryotakatoh/logs/20151110/20151110-1031_00.gz error="ERROR:  Load into table 'access_log' failed.  Check 'stl_load_errors' system table for details.\n"

stl_load_errorsの中を確認するとエラーID1213のエラーが出てて、NULL値のテーブルに対して、NULLが設定されてるよってエラーっぽい。

テーブル定義のNOT NULLオプションを全部はずしたらうまく送信できてたので、何かがおかしいと思うけど、Apacheからの送信が目的ではないのでまぁ良しとする。