Fluentdでログをさくらクラウドのオブジェクトストレージに保存する
さくらクラウドのオブジェクトストレージはS3互換のAPIなので
GitHub - fluent/fluent-plugin-s3: Amazon S3 input and output plugin for Fluentd
を使えばFluentd を使ってログを保存できる。
さくらクラウドのオブジェクトストレージに登録
さくらクラウドはAPI経由でバケットの作成・削除ができないので
コントロールパネルであらかじめ作っておきます。
INPUT
Fluentd の設定をします。Fluentd の仕組みやインストールについては
色々なところで解説されてるので省略します。
柔軟なログ収集を可能にする「fluentd」入門 | さくらのナレッジ
今回はnginx のログを収集したいのでINPUT側はこんな設定にしました。
<source> type tail format nginx time_format %d/%b/%Y:%H:%M:%S %z path /var/log/nginx/access.log pos_file /var/log/td-agent/nginx.access.log.pos tag s3.nginx.access </source>
ログのパーミッション設定をtd-agentユーザーがアクセスできる設定にするのを忘れずに。
OUTPUT
ログの保存先をさくらクラウドのオブジェクトストレージにします。
先ほどのfluent-plugin-s3 をインストールしておきます。
sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-s3
fluentd の設定はこんな感じ
<match s3.*.*> type s3 aws_key_id アクセスキーID aws_sec_key シークレットアクセスキー s3_bucket バケット名 s3_endpoint b.sakurastorage.jp path log_ buffer_path /var/log/td-agent/s3 time_slice_format %Y%m%d%H time_slice_wait 10m utc buffer_chunk_limit 256m use_ssl no check_apikey_on_start false </match>
さくらクラウドのオブジェクトストレージのバケット作成時に得た
「アクセスキーID」「シークレットアクセスキー」をaws_key_id aws_sec_key に設定します。
バケット名も設定します。
本来のAWS S3ならばここでリージョン設定をするのですが、
さくらクラウドはそんなものないので省略。代わりにs3_endpoint で
エンドポイントをAWSでなく、さくらクラウドのエンドポイントに設定します。
エンドポイント≠さくらクラウドのコントロールパネルに表示されてるURLなことに注意
URLに表示されてるのは既にバケット名に紐付いたエンドポイントなので
バケット名部分を削除してます。
https://sai-chan.b.sakurastorage.jp/
というURLがコントロールパネルに表示されていれば、エンドポイントは
b.sakurastorage.jp
ということですね。
あと通常のAWS S3の設定と異なり、下記の設定を追加してます。
use_ssl no check_apikey_on_start false
さくらクラウドのオブジェクトストレージだとSSLやAPIチェックに対応してない?
っぽくてエラーになっていたのでその辺無視するようにしてます。
この辺 AWS S3と異なっていてつまづくところかなと思います。
終わり
これでこんな感じでFluentd から さくらオブジェクトストレージに保存できました。