logstash 中的错误-plain.log 无法创建管道
Error in logstash-plain.log cannot create pipeline
需要一点帮助来弄清楚管道未启动的原因。
[ERROR][logstash.agent] Cannot create pipeline {:reason=>"Expected one of #, => at line 39, column 52 (byte 563) after filter {\n grok {\n patterns_dir => \"/etc/logstash/patterns.d\" \n match => {\n \"%{SYSLOGBASE} %{POSTFIXSMTPDCONNECTS}\""}
这是我的 grok 文件:
input {
file {
type => "postfix"
path => "/var/log/maillog"
}
}
filter {
grok {
patterns_dir => ["/etc/logstash/patterns.d"]
match => {
"%{SYSLOGBASE} %{POSTFIXSMTPDCONNECTS}",
"%{SYSLOGBASE} %{POSTFIXSMTPDACTIONS}",
"%{SYSLOGBASE} %{POSTFIXSMTPDTIMEOUTS}",
"%{SYSLOGBASE} %{POSTFIXSMTPDLOGIN}",
"%{SYSLOGBASE} %{POSTFIXSMTPDCLIENT}",
"%{SYSLOGBASE} %{POSTFIXSMTPRELAY}",
"%{SYSLOGBASE} %{POSTFIXSMTPCONNECT}",
"%{SYSLOGBASE} %{POSTFIXSMTP4XX}",
"%{SYSLOGBASE} %{POSTFIXSMTP5XX}",
"%{SYSLOGBASE} %{POSTFIXSMTPREFUSAL}",
"%{SYSLOGBASE} %{POSTFIXSMTPLOSTCONNECTION}",
"%{SYSLOGBASE} %{POSTFIXSMTPTIMEOUT}",
"%{SYSLOGBASE} %{POSTFIXBOUNCE}",
"%{SYSLOGBASE} %{POSTFIXQMGR}",
"%{SYSLOGBASE} %{POSTFIXCLEANUP}"
}
named_captures_only => true
}
}
我正在使用 logstash v5.6.5。我读到 conf.d 文件夹中的所有文件在读取时合并在一起。是否有我需要查找的特定文件才能查看代码的特定第 39 行。
您编写 grok 过滤器的方式有误。由于有多种模式,您应该使用数组。而且您忘记指出要在哪个字段上进行匹配。有关详细信息,请参阅 the documentation。
编写 grok 过滤器的正确方法是(假设您想在 message
字段上应用 grok 过滤器):
grok {
patterns_dir => ["/etc/logstash/patterns.d"]
match => {
"message" => [
"%{SYSLOGBASE} %{POSTFIXSMTPDCONNECTS}",
"%{SYSLOGBASE} %{POSTFIXSMTPDACTIONS}",
"%{SYSLOGBASE} %{POSTFIXSMTPDTIMEOUTS}",
"%{SYSLOGBASE} %{POSTFIXSMTPDLOGIN}",
"%{SYSLOGBASE} %{POSTFIXSMTPDCLIENT}",
"%{SYSLOGBASE} %{POSTFIXSMTPRELAY}",
"%{SYSLOGBASE} %{POSTFIXSMTPCONNECT}",
"%{SYSLOGBASE} %{POSTFIXSMTP4XX}",
"%{SYSLOGBASE} %{POSTFIXSMTP5XX}",
"%{SYSLOGBASE} %{POSTFIXSMTPREFUSAL}",
"%{SYSLOGBASE} %{POSTFIXSMTPLOSTCONNECTION}",
"%{SYSLOGBASE} %{POSTFIXSMTPTIMEOUT}",
"%{SYSLOGBASE} %{POSTFIXBOUNCE}",
"%{SYSLOGBASE} %{POSTFIXQMGR}",
"%{SYSLOGBASE} %{POSTFIXCLEANUP}"
]
}
named_captures_only => true
}
需要一点帮助来弄清楚管道未启动的原因。
[ERROR][logstash.agent] Cannot create pipeline {:reason=>"Expected one of #, => at line 39, column 52 (byte 563) after filter {\n grok {\n patterns_dir => \"/etc/logstash/patterns.d\" \n match => {\n \"%{SYSLOGBASE} %{POSTFIXSMTPDCONNECTS}\""}
这是我的 grok 文件:
input {
file {
type => "postfix"
path => "/var/log/maillog"
}
}
filter {
grok {
patterns_dir => ["/etc/logstash/patterns.d"]
match => {
"%{SYSLOGBASE} %{POSTFIXSMTPDCONNECTS}",
"%{SYSLOGBASE} %{POSTFIXSMTPDACTIONS}",
"%{SYSLOGBASE} %{POSTFIXSMTPDTIMEOUTS}",
"%{SYSLOGBASE} %{POSTFIXSMTPDLOGIN}",
"%{SYSLOGBASE} %{POSTFIXSMTPDCLIENT}",
"%{SYSLOGBASE} %{POSTFIXSMTPRELAY}",
"%{SYSLOGBASE} %{POSTFIXSMTPCONNECT}",
"%{SYSLOGBASE} %{POSTFIXSMTP4XX}",
"%{SYSLOGBASE} %{POSTFIXSMTP5XX}",
"%{SYSLOGBASE} %{POSTFIXSMTPREFUSAL}",
"%{SYSLOGBASE} %{POSTFIXSMTPLOSTCONNECTION}",
"%{SYSLOGBASE} %{POSTFIXSMTPTIMEOUT}",
"%{SYSLOGBASE} %{POSTFIXBOUNCE}",
"%{SYSLOGBASE} %{POSTFIXQMGR}",
"%{SYSLOGBASE} %{POSTFIXCLEANUP}"
}
named_captures_only => true
}
}
我正在使用 logstash v5.6.5。我读到 conf.d 文件夹中的所有文件在读取时合并在一起。是否有我需要查找的特定文件才能查看代码的特定第 39 行。
您编写 grok 过滤器的方式有误。由于有多种模式,您应该使用数组。而且您忘记指出要在哪个字段上进行匹配。有关详细信息,请参阅 the documentation。
编写 grok 过滤器的正确方法是(假设您想在 message
字段上应用 grok 过滤器):
grok {
patterns_dir => ["/etc/logstash/patterns.d"]
match => {
"message" => [
"%{SYSLOGBASE} %{POSTFIXSMTPDCONNECTS}",
"%{SYSLOGBASE} %{POSTFIXSMTPDACTIONS}",
"%{SYSLOGBASE} %{POSTFIXSMTPDTIMEOUTS}",
"%{SYSLOGBASE} %{POSTFIXSMTPDLOGIN}",
"%{SYSLOGBASE} %{POSTFIXSMTPDCLIENT}",
"%{SYSLOGBASE} %{POSTFIXSMTPRELAY}",
"%{SYSLOGBASE} %{POSTFIXSMTPCONNECT}",
"%{SYSLOGBASE} %{POSTFIXSMTP4XX}",
"%{SYSLOGBASE} %{POSTFIXSMTP5XX}",
"%{SYSLOGBASE} %{POSTFIXSMTPREFUSAL}",
"%{SYSLOGBASE} %{POSTFIXSMTPLOSTCONNECTION}",
"%{SYSLOGBASE} %{POSTFIXSMTPTIMEOUT}",
"%{SYSLOGBASE} %{POSTFIXBOUNCE}",
"%{SYSLOGBASE} %{POSTFIXQMGR}",
"%{SYSLOGBASE} %{POSTFIXCLEANUP}"
]
}
named_captures_only => true
}