どんな事でもお気軽にお問い合わせください
0120-803-656
24時間受付致します

【fluentd】IDCFのオブジェクトストレージに投げるのにハマった話


インフラエンジニアの指原です。

先日IDCFさんの環境でサーバを構築する機会があり、その時にオブジェクトストレージにログを格納するというのがあったんですが、ドハマりしたのでその時のメモです。

構成はこんな感じ

APIサーバ(fluentd) ⇒ log集約サーバ(fluentd) ⇒ オブジェクトストレージ

一般的な構成だと思います。

最初の設定

IDCFさんの公式に手順があったので、それを参考に設定を進めていました。

S3互換のストレージなのでfluent-s3-pluginを使用しています。

初めの設定はこんな感じ

<store>
   type s3
   aws_key_id XXXXXXXXXXXXXXXXXXXX
   aws_sec_key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   s3_bucket bucket_name
   s3_endpoint http://ds.jp-east.idcfcloud.com
   check_apikey_on_start false
   s3_object_key_format %{path}%{time_slice}_%{index}.%{file_extension}
   path logs/
   buffer_path /var/log/fluent/idcf/buffer/
   flush_interval 60s
   time_slice_format %Y%m%d/%Y%m%d-%H
</store>

ただなぜかオブジェクトストレージにアップロードされない。。

バッファファイルの作成は問題なし

エラーを調べてみてもよくわからず・・・

かなりハマりました・・・

 

答えはfluent-plugin-s3のドキュメントに書いてあった

fluent-plugin-s3のgithubに書いてありました。

signature_version

Signature version for API request. s3 means signature version 2 and v4 means signature version 4. Default is nil(Following SDK’s default). It would be useful when you use S3 compatible storage that accepts only signature version 2.

要はAPIリクエストの署名バージョンについて

  • 署名バージョン2を使うときはs3、バージョン4を使うときはv4を指定してね
  • 署名バージョン2のS3互換ストレージに使うと便利ですよ。
  • デフォルトはSDKのバージョンに準拠するよ

という感じでしょうか。使用するストレージの署名バージョンに合わせて設定を入れる必要があるようです。

オブジェクトストレージは署名バージョン2のみをサポートしているようだったので

signature_version s3

これを追加したらあっさりいけました。

S3の署名バージョンが4をサポートしたのに合わせてfluent-s3-plugin側でも対応したみたいです。

まとめ

署名バージョンについては他環境のS3互換ストレージでも流用できるので勉強になりました。

今回に限らず公式のドキュメントは英語が多く敬遠しがちですが、やはり答えが書いてあることが多いですね。

英語力を上げていきましょう!


お問い合わせ 採用情報 エンジニアブログ
ISO27001認証
Contact PageTop
株式会社ビヨンド

© beyond Co., Ltd. All rights reserved.

mautic is open source marketing automation