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に送ってみる。
が以下のエラーが出てうまくログが送信されない。。
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からの送信が目的ではないのでまぁ良しとする。