Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Filter 日志存储:具有不同模式的多个日志文件_Filter_Logstash_Kibana_Logstash Grok_Logfiles - Fatal编程技术网

Filter 日志存储:具有不同模式的多个日志文件

Filter 日志存储:具有不同模式的多个日志文件,filter,logstash,kibana,logstash-grok,logfiles,Filter,Logstash,Kibana,Logstash Grok,Logfiles,我们想为我们公司的几个不同项目设置一个日志存储服务器。现在我尝试在Kibana中启用它们。我的问题是: 若我有不同的日志文件模式,我如何为它们构建一个过滤器? 示例:logstash.conf: input { file { type => "A" path => "/home/logstash/A/*" start_position => "beginning" } file { type => "B" path =&g

我们想为我们公司的几个不同项目设置一个日志存储服务器。现在我尝试在Kibana中启用它们。我的问题是: 若我有不同的日志文件模式,我如何为它们构建一个过滤器? 示例:logstash.conf:

input {
  file {
    type => "A"
    path => "/home/logstash/A/*"
    start_position => "beginning"
  }
 file {
    type => "B"
    path => "/home/logstash/B*"
    start_position => "beginning"
  }
}

filter {
  multiline {
      pattern => "^%{TIMESTAMP_ISO8601}"
      negate => true
      what => "previous"
  }
  grok {
     type => A
     match => [ "message", "%{TIMESTAMP_ISO8601:logdate} %{DATA:thread %{LOGLEVEL:level}\s*%{DATA:logger_name}\s*-\s*%{GREEDYDATA:log_text}"]

    add_tag => [ "level_%{level}" ]
  }
  date {
        match => ["logdate", "YYYY-MM-dd HH:mm:ss,SSS"]
  }
  grok {
        type => B
        match => [ any other pattern ... 
 }
}
output {
  elasticsearch { embedded => true }
}

我是否必须为每个项目(A、B、C,…)创建一个自己的过滤器,当我为每个项目创建不同模式的日志文件时,我必须做什么?

您只需要为所有项目创建一个过滤器

对于Logstash1.3.3,您可以使用语句来区分每个项目组。比如说,

filter {

   multiline {
       pattern => "^%{TIMESTAMP_ISO8601}"
       negate => true
       what => "previous"
   }

   if [type] == "A"  {
      grok {
          match => [ any other pattern ... 
      }
   }
   else if [type] == "B" {
      grok {
          match => [ any other pattern ... 
      }
   }
}

希望这能帮助你

谢谢你,本,我会试试的。当我在A和B中有不同的日志文件模式时,当A和B是项目时,我该怎么办?谢谢Ben,我会尝试一下。当我在A和B中有不同的日志文件模式时,当A和B是项目时,我该怎么办?一个输入(文件)将有一种类型。因此,如果在A中有不同的日志文件模式,则需要首先分离日志。感谢Ben。现在我的理解是:当我有两个不同的Web服务(A和B)具有不同的日志文件模式时,则不可能在一个Kibana GUI安装中显示它们。我需要为每个Web服务提供一个自己的KibanaGUI,对吗?在一个GUI中使用两个仪表盘是不可能的?我认为您有误解。如果您想使用grok解析Logstash中的日志文件,那么日志模式应该是相同的,否则您的grok模式会很复杂。两个或多个web服务日志文件可以保存到一个elasticsearch(搜索引擎)。您可以使用一个Kibana GUI和两个不同的仪表板。例如,可以将一个仪表板配置为A类型,将另一个仪表板配置为B类型