以下の構成で、logstash を使用して、tcp 経由で Gelf ログを解析したいと考えています。私のメッセージ ストリームはヌル バイトで区切られており、\n が含まれていません。残念ながら、設定で config.support_escapes: true を設定した後でも、logstash は区切り文字として \0 を受け入れません。このオプションは、より一般的な \n、\r、\t など専用です。
これらのgelfメッセージからlogstashイベントを生成するために機能するアプローチを知っている人はいますか?
logstash -e 'input { tcp { port => 7777
codec => json_lines
{ delimiter => "\0" }
} }
output { stdout{ } }'
メッセージは docker gelf ログ ドライバーによって生成され、次のようになります。
{"version":"1.1","host":"herm-VirtualBox","short_message":"{ counter: 1 } ","timestamp":1515490442.825,"level":6,"_command":"bin/sh -c COUNTER=1;while true; do printf \"{ counter: $COUNTER } \\n\"; COUNTER=$((COUNTER+1)); sleep 1; done","_container_id":"4aa5b8bd52381b005ad9c5d07db8bd71358a16510f16ef9e0f1887b25ac3040b","_container_name":"inspiring_booth","_created":"2018-01-09T09:34:02.506691976Z","_image_id":"sha256:00fd29ccc6f167fa991580690a00e844664cb2381c74cd14d539e36ca014f043","_image_name":"ubuntu","_tag":"4aa5b8bd5238"}
それらは常に {"version": で始まります。