とりあえず、まぁ

かけだしインフラエンジニアの日々のまとめや趣味のことを書いていきます。

td-agnetの終了時にbufferを解放する処理

ようやくP5Rが終わりました。。。 長かった。。。

背景

td-agentが走っているインスタンスを落とす前にbufferを開放しておかないとログが全部送れないということがある

方法について

bufferを開放する方法については、 Signals - Fluentd に書かれてある

sudo kill -SIGUSR1 `cat /var/run/td-agent/td-agent.pid`

これをすれば開放される。

終了時に実行できれば、bufferが開放される。

これをsystemdでやってしまえばOK

配布用のansible

- name: copy td-agent.service
  copy:
    src: /usr/lib/systemd/system/td-agent.service
    dest: /etc/systemd/system/td-agent.service
    remote_src: yes

- name: lineinfile
  lineinfile:
    dest: /etc/systemd/system/td-agent.service
    regexp: '^ExecStop='
    line: 'ExecStop=/bin/bash -c "kill -SIGUSR1 ${MAINPID} && kill -TERM ${MAINPID}"'

- name: systemd deamon_reload
  systemd:
    daemon_reload: yes