如何将具有相同LSF的2种不同类型的日志(具有不同模式)发送到一个logstash中心

时间:2016-02-17 17:49:31

标签: logstash multiline lsf lumberjack

我有一个日志存储(LSF)代理,它将两种日志发送到Logstash中央代理(版本2.2)。 这些日志是多行的,但没有相同的模式..

在LSF中配置文件是这样的:

{ "network": {
"servers": [ "server1:77009" ],
"timeout": 15,
"ssl ca": "logstashforwader.jks"  },  "files": [
{
  "paths": [
   "/dir1/log1"
            ],
  "fields": { "type": "type1",
    "environment": "env1" }
},
{
  "paths": [
   "/dir2/log2"
            ],
        "fields": { "type": "type2",
    "environment": "env1"  }
}   ]}

在logstash中心,我想为这样的好类型应用好的模式:

input {if [type] == "type1" { lumberjack {
    host => "@IP"
    port => "77009"
    ssl_certificate => "/logstash-forwarder.crt"
    ssl_key => "/logstash-forwarder.key"
            codec => multiline {
            pattern => "^%{DATE_EU}"
            max_lines => 750
            negate => true
            what => previous
            }
    }} else if [type] == "type2" { lumberjack {
    host => "server1"
    port => "77009"
    ssl_certificate => "logstash-forwarder.crt"
    ssl_key => "/logstash-forwarder.key"
            codec => multiline {
            pattern => "^<"
            negate => true
            what => previous
            }
    }}}

但它不起作用......它是最好的方式(或者是否可以在模式行中放置&#34;或&#34;)

在我对每个&#34;类型&#34;应用不同的grok之后。

1 个答案:

答案 0 :(得分:0)

您无法在输入中使用条件。

您可以在多线模式中使用或(&#34; |&#34;)来支持两种输入。

您还可以使用两个不同的端口,并将每个输入发送到不同的端口。