我有一个日志存储(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之后。
答案 0 :(得分:0)
您无法在输入中使用条件。
您可以在多线模式中使用或(&#34; |&#34;)来支持两种输入。
您还可以使用两个不同的端口,并将每个输入发送到不同的端口。