У меня есть следующий конвейер, требование состоит в том, что мне нужно записать данные «показателей» в ОДИН файл и данные СОБЫТИЯ в другой файл. У меня две проблемы с этим конвейером.
Выходной файл не создает «файл с отметкой времени» каждые 30 секунд, вместо этого он создает файл с этим именем output%{[@metadata][ts]}.csv
и продолжает добавлять данные.
Вывод CSV создает новый файл с отметкой времени каждые 30 секунд, но каким-то образом он создает один раз дополнительный файл с именем output%{[@metadata][ts]}
и продолжает добавлять метаинформацию в этот файл.
Может кто-нибудь, пожалуйста, помогите мне, как я могу это исправить?
input {
beats {
port => 5045
}
}
filter {
ruby {
code => '
event.set("[@metadata][ts]", Time.now.to_i / 30)
event.set("[@metadata][suffix]", "output" + (Time.now.to_i / 30).to_s + ".csv")
'
}
}
filter {
metrics {
meter => [ "code" ]
add_tag => "metric"
clear_interval => 30
flush_interval => 30
}
}
output {
if "metric" in [tags] {
file {
flush_interval => 30
codec => line { format => "%{[code][count]} %{[code][count]}"}
path => "C:/lgstshop/local/csv/output%{[@metadata][ts]}.csv"
}
stdout {
codec => line {
format => "rate: %{[code][count]}"
}
}
}
file {
path => "output.log"
}
csv {
fields => [ "created", "level", "code"]
path => "C:/lgstshop/local/output%{[@metadata][ts]}.evt"
}
}
Фильтр метрик генерирует новые события в конвейере. Эти события будут проходить только через фильтры, которые идут после него. Таким образом, события метрики не имеют поля [@metadata][ts], поэтому ссылки sprintf в разделе вывода не заменяются. Переместите рубиновый фильтр так, чтобы он находился после фильтра метрик.
Если вы не хотите, чтобы метрики отправлялись в csv, оберните этот вывод if "metric" not in [tags] {
или поместите его в else существующего условного оператора.
Есть предложения по второму вопросу?
Кажется, этот метрический фильтр добавляет несколько строк к выходу CSV с метрической информацией, можно ли этого не делать? @Badger
Обновление о выводе csv.
если у вас есть несколько минут, вот еще одна вещь, с которой мне нужна помощь. Я больше не использую метрический фильтр из-за того, что нам нужно несколько настроек, вместо этого я выбрал «рубиновый» фильтр, который помогает мне лучше контролировать. stackoverflow.com/questions/71563167/…
О, попробую через час и сообщу. Спасибо за быстрое руководство!