Logstash:无法从指标中过滤行

时间:2018-12-17 16:45:36

标签: logstash logstash-configuration


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

testthat::with_mock(
  check_not_nested = function(path, name) return(),
  usethis::create_package('NewPackage2'),
  .env = "usethis"
)

我需要从收集的事件中排除所有以'#'字符开头的行。 因此,我安排了以下配置文件:

# 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}" 
  }

}

因此,似乎没有跳过带有“#”的行,而是将它们附加到了指标的下一行。 您能推荐任何解决方法吗?

1 个答案:

答案 0 :(得分:0)

multiline codec不能这样工作。它将事件合并为一个事件,并添加与您观察到的depends_on_past不匹配的行。

我认为无法使用编解码器删除消息,而必须使用drop filter

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

^#

使用conditionals,如果消息与filter { if [message] =~ "^#" { drop {} } } 相匹配,则事件将通过拖放过滤器根据需要删除。