web-dev-qa-db-ja.com

logstashはファイルに出力し、コーデックを無視します

誰かが私に説明してもらえますか、なぜlogstashは「codec => plain => format」設定を無視し続けるのですか、私は設定しようとしていますか?

私が使用しているCfgファイル:

 input {
        gelf {
                Host => "[some ip]"
                port => 12201
        }
}

output {
        elasticsearch {
                Host => "[some ip]"
                bind_port => "9301"
        }

        file {
                codec => plain {
                        format => "%{[time]} | %{[severity]} : /%{[thread]}/ %{[loggername]} (%{[sourcemethodname]}) - %{[message]}"
                }
                path => "/Users/[some user]/logs/%{Host}/%{facility}-%{+YYYY-MM-dd}.log"
        }
}

間違った形式を使用していると思い、フィールドに「%{time}」などのさまざまな組み合わせを試し、さらに次のような定数テキストを使用しようとしました。

codec => plain {format => "Simple line"}

しかし、何も機能していないようです。 Elasticsearchに正常に出力し、フォルダー/ファイルを作成しますが、JSONとして出力します。

誰かがそれで何が起こっているのか知っているなら、助けてください。ありがとう。

6
user1946099

fileにはmessage_format使用したいパラメータ:

file {
  message_format => "%{[time]} | %{[severity]} : /%{[thread]}/ %{[loggername]} (%{[sourcemethodname]}) - %{[message]}"
  path => "/Users/[some user]/logs/%{Host}/%{facility}-%{+YYYY-MM-dd}.log"
}
7
Alcanzar

パラメータmessage_formatは非推奨であり、Logstashの今後のリリースで削除される予定です。 message_formatを使用する代わりに、次のようにしてみてください。

file {
  codec => line {
    format => "%{[time]} | %{[severity]} : /%{[thread]}/ %{[loggername]} (%{[sourcemethodname]}) - %{[message]}"
  }
  path => "/Users/[some user]/logs/%{Host}/%{facility}-%{+YYYY-MM-dd}.log"
}

PS:コーデックplainを使用した例、lineで試してみてください。

9
Rohlik