У меня есть файлы журналов, которые я перехожу в logstash для изменения, прежде чем нажимать на elasticsearch.logstash - удалить все незнаковые символы из поля
Одно из полей, которые у меня есть, иногда появляется в виде последовательности цифр
foobar = 42
Иногда с префиксом буквы
foobar = ws-42
Я хочу, чтобы убедиться, что поле всегда является целым числом, и если присутствуют какие-либо цифры, они удаляются.
Вот часть logstash конфигурации, которая удостоверяется поле представляет собой целое
filter {
mutate {
convert => [ "foobar", "integer"]
}
}
Как я могу вырезать символы, если присутствуют?
Обновление
С помощью мутирует фильтр можно либо лишить неконтролируемые числовые значения, или можно преобразовать в целые числа. Однако, если я пытаюсь сделать так, она возвращает 0.
Пример
input {
stdin {}
}
filter {
kv { }
mutate {
gsub => [ "foobar", "\D", "" ]
convert => [ "foobar", "integer" ]
}
}
Вот выход. Обратите внимание на то, что если предусмотрено «42», то Foobar возвращает целое число 42, однако, если вы предоставите «SW-42» Foobar возвращает 0
foobar="42"
{
"message" => "foobar=\"42\"",
"@version" => "1",
"@timestamp" => "2015-03-31T22:32:11.718Z",
"host" => "swat-logstash02",
"foobar" => 42
}
foobar="sw-42"
{
"message" => "foobar=\"sw-42\"",
"@version" => "1",
"@timestamp" => "2015-03-31T22:32:23.822Z",
"host" => "swat-logstash02",
"foobar" => 0
}