
td-agentのバッファを強制フラッシュする
td-agentを使っていて、bufferが溜まってしまってミッチもさっちも行かなくなったとき。
バッファがたまってしまってどうしようもない
[warn]: #0 emit transaction failed: error_class=Fluent::Plugin::Buffer::BufferOverflowError error="buffer space has too many data"
一定時間、送信先のノードがネットワーク障害で送信できないときにこんな感じに。
バッファを強制的にフラッシュする
fluentdはSIGUSR1のシグナルを送れば、bufferをフラッシュしてくれるので、 プロセスIDの確定後、killコマンドでシグナルを送ります
$ systemctl status td-agent.servce
● td-agent.service - td-agent: Fluentd based data collector for Treasure Data
Loaded: loaded (/usr/lib/systemd/system/td-agent.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2021-08-18 11:49:17 JST; 2 days ago
Docs: https://docs.treasuredata.com/articles/td-agent
Main PID: 281(fluentd)
CGroup: /system.slice/td-agent.service
├─281 /opt/td-agent/embedded/bin/ruby /opt/td-agent/embedded/bin/fluentd --log /var/log/td-agent/td-agent.log --daemon /var/run/td-agent/td-agent.pid
└─282 /opt/td-agent/embedded/bin/ruby -Eascii-8bit:ascii-8bit /opt/td-agent/embedded/bin/fluentd --log /var/log/td-agent/td-agent.log --daemon /var/run/td-agent/td-agent.pid --under-supervisor
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
これでPIDがわかるので、
kill -USR1 PID
とするとtd-agent.logに
[info]: #0 force flushing buffered events
って行が出てきて、無事に繋がるようになりました。 この辺ももう少し理解を深めないとなー。