はじめに
Fluentd は、OSS で開発されているとても柔軟なデータ収集ソフトウェアです。さまざまなソースのデータを、様々な宛先に出力することが出来ます。CNCF でホストされているため、データ収集ソフトウェアでデファクトスタンダードな製品です。データの受け取り(input)とデータの出力(output)をプラグインとして実装されています。OSSでかつプラグイン方式なため、ファイルや標準出力、データベース、Public Cloud のサービスなど、多種多用なものに対応しています。また、対応していないものがあれば自作することも可能です。
今回の記事では、Fluentd の S3 プラグインを使用して、OCI の Object Storage にデータを出力する config を紹介します。
事前準備
Object Storage で S3互換API を提供されています。S3 プラグインでは、これを利用して接続をします。次の記事を参考に、Customer Secret Key と、Endpoint を確認します。
Fluentd のインストール
次の Document を見てインストールしていきます。
config
パッケージマネージャーからインストールしたので、vim で config を編集します
vim /etc/td-agent/td-agent.conf
次のconfigを入力します。事前準備で確認した内容をパラメータなどを入れていきます。
- aws_key_id : key
- aws_sec_key : secret
- s3_bucket : Bucket 名
- s3_region : Region Identifier
- s3_endpoint : S3互換APIのendpoint
- ssl_verify_peer : false を指定
- force_path_style : true を指定
<source>
 @type forward
</source>
 
<match debug.**>
  @type copy
  <store>
    @type stdout
  </store>
  <store>
    @type s3
    aws_key_id "your key"
    aws_sec_key "your secret"
    s3_bucket testsugi
    s3_region <region>
    s3_endpoint https://<namespace>.compat.objectstorage.<region>.oraclecloud.com
    check_apikey_on_start false
    ssl_verify_peer false
    force_path_style true
    <buffer>
      @type file
      path /var/log/td-agent/buffer/oci.buffer
      chunk_limit_size 8m
      queue_limit_length 256
      flush_at_shutdown true
      flush_interval 1s
      retry_wait 30s
      retry_max_times 9
    </buffer>
  </store>
</match>
Fluentd を再起動します
systemctl restart td-agent
次のコマンドを発行すると、Fluentd にデータがキューされます。
echo '{"I say":"hello"}' | /opt/td-agent/embedded/bin/fluent-cat debug.ok
td-agent.log を確認すると、末尾に stdout で文字列が表示されています
root@stepbox:~# tail /var/log/td-agent/td-agent.log
2020-03-20 00:46:03.443149932 +0000 debug.ok: {"I say":"hello"}
再度、Fluentd を再起動することで、バッファーをフラッシュして Object Storage にデータが出力されます
systemctl restart td-agent
OCI Console で確認
Object Storage にアップロードされている gz ファイルをダウンロードして内容を確認すると、正しくデータが書かれています
参考URL

