Memo/Linux/Fluentd(td-agent)/Errors

https://dexlab.net:443/pukiwiki/index.php?Memo/Linux/Fluentd%28td-agent%29/Errors
 

Fluentd/td-agent Errors


error_class="Encoding::UndefinedConversionError" error="\"\\xE3\" from ASCII-8BIT to UTF-8"

  • I got encoding error inside the plugin. How to fix it?
    • fluentdのエンコーディングがASCII-8BITだが、対応のログがUTF-8の場合に発生
    • in_tailのデフォルト文字コードが ASCII-8BIT。ただし、in_tailではエラーが出ずに、それを受け取った側エラーが出るので、発生元を特定しにくい。
  • ログ中にASCII文字以外が含まれているか検索
    cat /path/to/example.log | LANG=C grep -n -v '^[[:cntrl:][:print:]]*$' | head
  • td-agent.logの中に「-Eascii-8bit:ascii-8bit」と書いてあるが、これを変更する方法が分からない。
    zless /var/log/td-agent/td-agent.log
    ...
    2021-08-01 01:02:03 +0000 [info]: spawn command to main:  cmdline=["/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"]
  • in_tail: encoding, from_encoding を指定する。encoding, from_encodingと両方指定すると変換される。encodingだけではエラーは解消されなかった。
    <source>
      @type tail
      encoding UTF-8
      from_encoding UTF-8
    ...
    </source>
  • cloudwatch_logs: yajl を指定する
    <match **>
    ...
      json_handler yajl # To avoid UndefinedConversionError
    ...
    </match>
  • fluent-plugin-record-modifier のchar_encoding を使う
    <filter pattern>
      @type record_modifier
    
      # set UTF-8 encoding information to string.
      char_encoding utf-8
    
      # change char encoding from 'UTF-8' to 'EUC-JP'
      char_encoding utf-8:euc-jp
    </filter>

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-09-08 (水) 18:23:45 (14d)