elk集群异常日志多行处理插件 (解决方法与步骤)
下面内容仅为某些场景参考,为稳妥起见请先联系上面的专业技术工程师,具体环境具体分析。
2023-08-31 15:47 96
处理多行日志的插件对于处理ELK集群的异常日志非常有用。下面是一个示例插件的代码:
```ruby multiline_filter.rb
class MultilineFilter < LogStash::Filters::Base config_name "multiline_filter"
config :pattern, :validate => :string, :default => "^\\[" config :negate, :validate => :boolean, :default => false
public def register @regex = Regexp.new(@pattern) @multiline = [] @in_multiline = false end
public def filter(event) line = event.get("message")
if @in_multiline if line =~ @regex flush_multiline(event) @in_multiline = false else @multiline << line event.cancel end else if line =~ @regex flush_multiline(event) unless @multiline.empty? @in_multiline = true @multiline << line event.cancel end end end
private def flush_multiline(event) event.set("multiline_message", @multiline.join("\n")) event.set("multiline_count", @multiline.length) @multiline.clear filter_matched(event) end end ```
这个插件使用一个正则表达式模式来定义多行日志的起始行,然后将所有多行日志合并为一个字段,并在事件中添加一些其他有关多行日志的信息。要在Logstash中使用此插件,请将插件文件复制到Logstash的插件目录中,并在Logstash配置文件中添加以下内容:
```ruby filter { multiline_filter { pattern => "^\\[" negate => false } } ```
在上面的示例中,`pattern`参数指定了一个以`[`字符开头的行作为多行日志的起始行。`negate`参数指示是否以此模式的匹配为起始行,`false`表示只有匹配此模式的行才被认为是多行日志的起始行。您可以根据您的具体需求调整这些选项。
您可以在Kibana中查看处理后的多行日志,例如,您可以使用`multiline_message`字段来查看合并后的多行日志。