tweet:2024:0111_01
fluent-package
AlmaLinuxでfluentdを利用する際には選択肢が3つある。
- RubyをInstallしてGemからfluentdを利用する
- fluent-packageを利用する(v4まではtd-agentと呼ばれていたが、v5からfluent-packageになった)
- calyptia-fluentdを利用する
正直、plainなまま利用するなら、どれでもほとんど差がないが、管理や更新の手間の問題からfluent-packageを利用した。
以下に、いくつかメモを記載しておく。
logを複数のfluentd serverに転送する
fluentdの設定のうち、外部出力はmatch blockに記載することが多い。問題は、2台(以上)のサーバーにlogを転送しなければならないときである。
通常のmatch blockはこんな感じ
- modsec Tagがついているlogをsrv01(192.0.2.10):8514に転送する
- sample.output
##### 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>
これを、
- srv01, srv02に同じ内容のデータを送付する
##### 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>
肝は
- match blockで
@type
をcopy
にする - forward設定を
<store>
ブロックに登録する - fluentdのcopyは「storeブロックのどれか」で失敗すると、全部が失敗扱いになるので、ignore_error設定を
<store ignore_error>
として設定する
こと。もちろん、失敗したらErrorにしたい場合もある(「完全に同期させておきたい」かつ「logが多少欠けても良い」環境である場合)もあるから、それに合わせて設定すること。
Buffer 設定に関して
- flush_at_shutdown
- fluentd終了時にbufferをflushする
- flush_mode interval
- flush_interval毎にflushする
- flush_mode immediate
- Bufferが作成されたら即flushする
- flush_interval
- 設定した秒数ごとにflushを実施
- retry_forever
- retryが、retry_max_times(default: none)に達し、retry_timeout(default: 72h)に達した際、通常はchunkがdropされるが、dropせずに永遠にretryを繰り返す
DryRun(設定確認)
fluentd —dry-run -c /path/to/fluentd.conf
tweet/2024/0111_01.txt · 最終更新: 2024/01/11 02:41 by seirios