はじめに
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