td-agentでログ欠損が発生した
fluent(td-agent)で、Buffer溢れにによるログ欠損が発生したのでその時の調査・対応を下記へ記載しておく。
・対応フロー
- コンソールからtd-agentのログ状況確認
- Bufferの蓄積状況確認
- td-agent.conf確認
- td-agent.conf設定変更
- td-agnetサービス再起動
以下、設定環境:td-agent version0.12
□ Kibana上でログ欠損が発生
・コンソールからtd-agentのログ状況確認
# less /var/log/td-agent/td-agent.log 2018-09-11 03:28:43 +0900 [warn]: emit transaction failed: error_class=Fluent::BufferQueueLimitError error="queue size exceeds limit" tag="www.nginx.access-json" 2018-09-11 03:28:43 +0900 [warn]: /opt/td-agent/embedded/lib/ruby/gems/2.1.0/gems/fluentd-0.12.40/lib/fluent/buffer.rb:204:in `block in emit'
queue size exceeds limit
が発生してる。
・Bufferの蓄積状況確認
# cd {buffer_dir} # ll -h /data/buffer/secure-forward.* |wc -l 2054
・td-agent.conf設定確認 (一部抜粋)
# less td-agent.conf buffer_chunk_limit 2m buffer_queue_limit 2048
・td-agent.conf設定変更 (一部抜粋)
# less td-agent.conf buffer_chunk_limit 2m buffer_queue_limit 4096
↑の設定変更によりログが流れた。
※今回、master -> standby構成を組んだがmaster側でBuffer溢れが発生している状況においても、standby側に流れない状況
。
また、今回設定した送信部分のconf内容を抜粋して記載。
<match **> @id testid.match @type forest subtype copy <template> <store> @id secure_forward @type secure_forward self_hostname test123.co.jp shared_key testkey secure yes ca_cert_path /etc/td-agent/ca/ca-cert.pem keep_alive 300 num_threads 1 <server> host testbudder.co.jp port 24284 username test password ****** </server> flush_interval 0s try_flush_interval 0.1 queued_chunk_flush_interval 0.01 buffer_type file buffer_path /data/buffer/secure-forward_${tag}.* buffer_chunk_limit 2m buffer_queue_limit 6000000 # 2 * 6000000 = 120T retry_wait 5s # default: 1.0 # retry_limit 10 reload_connections true reload_on_failure true heartbeat_type tcp heartbeat_interval 10s phi_threshold 100 # default: 16 hard_timeout 200s # default: equals to send_timeout require_ack_response true send_timeout 60s # default 60s ack_response_timeout 61s # default 190s max_retry_wait 1h # default: inifinity disable_retry_limit true # DO NOT discard buffer anyway require_ack_response true # Qos 1 (At least once) flush_at_shutdown true </store> </template> </match>
上記設定でログ欠損発生せず稼働している。
ref