我需要从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}"
}
}
因此,似乎没有跳过带有“#”的行,而是将它们附加到了指标的下一行。 您能推荐任何解决方法吗?
答案 0 :(得分:0)
multiline codec不能这样工作。它将事件合并为一个事件,并添加与您观察到的depends_on_past
不匹配的行。
我认为无法使用编解码器删除消息,而必须使用drop filter。
首先从输入配置中删除编解码器,然后将此过滤器部分添加到您的配置中:
^#
使用conditionals,如果消息与filter {
if [message] =~ "^#" {
drop {}
}
}
相匹配,则事件将通过拖放过滤器根据需要删除。