elasticsearch,logstash,logstash-grok,Regex,elasticsearch,Logstash,Logstash Grok" /> elasticsearch,logstash,logstash-grok,Regex,elasticsearch,Logstash,Logstash Grok" />

Regex 基于logstash模式匹配的索引创建

Regex 基于logstash模式匹配的索引创建,regex,elasticsearch,logstash,logstash-grok,Regex,elasticsearch,Logstash,Logstash Grok,我正在尝试使用elasticsearch logstash和kibana为一组windows和linux服务器构建一个集中式日志系统。我的输入将是来自两个系统的系统日志(单个输入流)。我试图了解是否有方法使用grok并匹配模式,然后在此基础上将日志放入不同的索引中(一个用于windows日志,一个用于linux日志) 任何方向上的帮助都将不胜感激 谢谢,您可以根据日志来自哪个系统来分配“类型”,然后在输出中使用该类型 以下是配置: input{ file{ path =>"

我正在尝试使用elasticsearch logstash和kibana为一组windows和linux服务器构建一个集中式日志系统。我的输入将是来自两个系统的系统日志(单个输入流)。我试图了解是否有方法使用grok并匹配模式,然后在此基础上将日志放入不同的索引中(一个用于windows日志,一个用于linux日志)

任何方向上的帮助都将不胜感激


谢谢,

您可以根据日志来自哪个系统来分配“类型”,然后在输出中使用该类型

以下是配置:

input{
   file{
     path =>"path/to/system1_log_file"
     type =>"sys1logs"
   }

  file{
    path =>"path/to/system2_log_files"
    type =>"sys2logs"
  }
}

output{
  if[type]=="sys1logs"{
  #output to sys1 index
   elasticsearch{host => localhost
               index => "sys1"
               }
   }

 if[type]=="sys2logs"{
 #output to sys2 index
  elasticsearch{host => localhost
               index =>"sys2"
              }
  }
}

您可以根据日志来自哪个系统来分配“类型”,然后在输出中使用该类型

以下是配置:

input{
   file{
     path =>"path/to/system1_log_file"
     type =>"sys1logs"
   }

  file{
    path =>"path/to/system2_log_files"
    type =>"sys2logs"
  }
}

output{
  if[type]=="sys1logs"{
  #output to sys1 index
   elasticsearch{host => localhost
               index => "sys1"
               }
   }

 if[type]=="sys2logs"{
 #output to sys2 index
  elasticsearch{host => localhost
               index =>"sys2"
              }
  }
}

当grok匹配时,您可以grok{}它们并添加_字段:

grok {
    matches => { "message", "foo %{WORD}" }
    add_field => { "send_to", "fooindex" }
}
或从模式中的字段:

grok {
    matches => { "message", "foo %{WORD:send_to} bar" }
}
然后在输出中使用%{send_to}:

elasticsearch {
    index => "%{send_to}-YYYY.MM.dd"
}

请注意,如果您的索引未命名为“logstash-*”,您将无法获得logstash提供的默认映射。

您可以对它们进行搜索,并在搜索匹配时添加_字段:

grok {
    matches => { "message", "foo %{WORD}" }
    add_field => { "send_to", "fooindex" }
}
或从模式中的字段:

grok {
    matches => { "message", "foo %{WORD:send_to} bar" }
}
然后在输出中使用%{send_to}:

elasticsearch {
    index => "%{send_to}-YYYY.MM.dd"
}

请注意,如果您的索引未命名为“logstash-*”,您将无法获得logstash提供的默认映射。

感谢回复@Ana!但是我的输入是一个单一的源(相同的路径),因此我无法在源位置进行区分。我需要解析日志,然后将它们放在不同的索引中。请看下面的答案。这可能很有用。谢谢回复@Ana!但是我的输入是一个单一的源(相同的路径),因此我无法在源位置进行区分。我需要解析日志,然后将它们放在不同的索引中。请看下面的答案。这可能有用。