Logstash 日志存储:无法从度量中筛选行

Logstash 日志存储:无法从度量中筛选行,logstash,logstash-configuration,Logstash,Logstash Configuration,我需要从URL收集指标。指标的格式如下所示: # HELP base:classloader_total_loaded_class_count Displays the total number of classes that have been loaded since the Java virtual machine has started execution. # TYPE base:classloader_total_loaded_class_count counter base:cla


我需要从URL收集指标。指标的格式如下所示:

# HELP base:classloader_total_loaded_class_count Displays the total number of classes that have been loaded since the Java virtual machine has started execution.
# TYPE base:classloader_total_loaded_class_count counter
base:classloader_total_loaded_class_count 23003.0
我需要从收集的事件中排除所有以“#”字符开头的行。 因此,我安排了以下配置文件:

input {


  http_poller {
    urls => {
      pool_metrics => {
        method => "get"
        url => "http://localhost:10090/metrics"
        headers => {
          "Content-Type" => "text/plain"
        }
      }

}
request_timeout => 30
schedule => { cron => "* * * * * UTC"}
codec => multiline  {
pattern => "^#"
negate => "true"
what => previous
}
type => "server_metrics"
  }
}


output {
  elasticsearch {

    # An index is created for each type of metrics inpout
    index => "logstash-%{type}" 
  }

}
不幸的是,当我通过弹性搜索检查收集到的数据时,我发现这并不是我所期望的。例如:

 {
        "_index" : "logstash-server_metrics",
        "_type" : "doc",
        "_id" : "2egAvWcBwbQ9kTetvX2o",
        "_score" : 1.0,
        "_source" : {
          "type" : "server_metrics",
          "tags" : [
            "multiline"
          ],
          "message" : "# TYPE base:gc_ps_scavenge_count counter\nbase:gc_ps_scavenge_count 24.0",
          "@version" : "1",
          "@timestamp" : "2018-12-17T16:30:01.009Z"
        }
      },
因此,似乎没有跳过带“#”的行,而是将其附加到度量的下一行。 你能推荐一种方法来修复它吗?

这种方法不行。它将事件合并到单个事件中,并添加与您观察到的不匹配的行

我认为不可能使用编解码器删除消息,您必须使用

首先从输入配置中删除编解码器,然后将此筛选器部分添加到配置中:

filter {
  if [message] =~ "^#" {
    drop {}
  }
}
使用,如果消息匹配
^#
,则删除筛选器将根据需要删除事件