AlmaLinuxでfluentdを利用する際には選択肢が3つある。
正直、plainなまま利用するなら、どれでもほとんど差がないが、管理や更新の手間の問題からfluent-packageを利用した。
以下に、いくつかメモを記載しておく。
fluentdの設定のうち、外部出力はmatch blockに記載することが多い。問題は、2台(以上)のサーバーにlogを転送しなければならないときである。
通常のmatch blockはこんな感じ
##### Output Descriptions. <match modsec.**> @type forward <buffer> @type file path /any/where/fluent.modsec.srv01.buffer flush_at_shutdown flush_mode interval flush_interval 60s retry_forever </buffer> <server> name srv01 host 192.0.2.10 port 8514 </server> </match>
これを、
##### Output Descriptions. <match modsec.**> @type copy <store ignore_error> @type forward <buffer> @type file path /any/where/fluent.modsec.srv01.buffer flush_at_shutdown flush_mode interval flush_interval 60s retry_forever </buffer> <server> name srv01 host 192.0.2.10 port 8514 </server> </store> <store ignore_error> @type forward <buffer> @type file path /any/where/fluent.modsec.srv02.buffer flush_at_shutdown flush_mode interval flush_interval 60s retry_forever </buffer> <server> name cust-bbf-wb2 host 192.0.2.20 port 8514 </server> </store> </match>
肝は
@type
を copy
にする<store>
ブロックに登録する<store ignore_error>
として設定すること。もちろん、失敗したらErrorにしたい場合もある(「完全に同期させておきたい」かつ「logが多少欠けても良い」環境である場合)もあるから、それに合わせて設定すること。
fluentd —dry-run -c /path/to/fluentd.conf