まるまるこふこふ

数々の次元が崩壊し、全ての生命が塵と化すのを見てきた。私ほどの闇の心の持ち主でも、そこには何の喜びも無かった。

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

さくらクラウドのオブジェクトストレージだとSSLAPIチェックに対応してない?

っぽくてエラーになっていたのでその辺無視するようにしてます。

この辺 AWS S3と異なっていてつまづくところかなと思います。

終わり

これでこんな感じでFluentd から さくらオブジェクトストレージに保存できました。