elasticsearch Logstash筛选器从日志消息中复制一些文本,elasticsearch,logstash,filebeat,elk,logstash-filter,elasticsearch,Logstash,Filebeat,Elk,Logstash Filter" /> elasticsearch Logstash筛选器从日志消息中复制一些文本,elasticsearch,logstash,filebeat,elk,logstash-filter,elasticsearch,Logstash,Filebeat,Elk,Logstash Filter" />

elasticsearch Logstash筛选器从日志消息中复制一些文本

elasticsearch Logstash筛选器从日志消息中复制一些文本,elasticsearch,logstash,filebeat,elk,logstash-filter,elasticsearch,Logstash,Filebeat,Elk,Logstash Filter,我现在正在记录这样的短信: "Some text: some variable text" "Some other text: some other variable text" 我需要将消息的可变部分复制到一个新字段,以便有两个这样的新字段 "field1" : " some variable text" "field2" : "some other variable text&qu

我现在正在记录这样的短信:

"Some text: some variable text"
"Some other text: some other variable text"
我需要将消息的可变部分复制到一个新字段,以便有两个这样的新字段

"field1" : " some variable text"
"field2" : "some other variable text"
到目前为止,我们只能用filebeat处理器将整个文本消息复制到一个新字段,logstash也一样。我做了一些研究,我发现我可能能够使用条件句,并使用变异过滤器:

filter {
  if "Some text" in [message] {
    mutate { add_field =>{ "field1" => }}}

但是我发现了如何将“一些可变文本”复制到新字段中。有人知道怎么做吗?

一种解决方案是直接使用如下过滤器:

  filter{
    grok {
        match => { 
          "message" => "^Some text: %{GREEDYDATA:field1}" 
          }
    }
   grok {
        match => { 
          "message" => "^Some other text: %{GREEDYDATA:field2}" 
          }
    }
}
这样做的好处是,与if条件相比,它更易于阅读和维护

您可以将grok更改为在一行中处理所有情况:

      filter{
        grok {
            match => { 
              "message" => "^(Some text: %{GREEDYDATA:field1}|Some other text: %{GREEDYDATA:field2})" 
              }
        }
}

好的,主要的问题是我有5条日志消息,我想创建自定义字段,而不是弄乱其余的日志消息。这就是为什么我在考虑条件,但我的问题是如何实现它。我已经改变了我的解决方案,以与您的用例相匹配OK,非常感谢!似乎无法创建字段。。。我确实遵循了您的教程,但由于我有要到filebeat的日志,我不知道为什么要创建字段。您好,您使用了grok处理器和摄取节点管道,它工作得很好。谢谢你的帮助。