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