2016-05-13 3 views
0

я динамическое поле, формат поле выглядитlogstash поле имени динамически

A-B-C::D_[randomNum] 

поле является динамическим, так как randonNUM, я хочу изменить «-» на «_» и удалите [ randomNUM] и это будет выглядит вроде как следовать,

A_B_C::D 

есть ли плагин/стратегия, чтобы решить эту проблему?

ответ

0

Вы должны быть в состоянии достичь этого с mutate/gsub фильтром

filter { 
    mutate { 
    gsub => [ 
     # replace random num suffix 
     "fieldname", "_\d+", "", 
     # replace all dashes with underscores 
     "fieldname", "-", "_" 
    ] 
    } 
} 

Убедитесь заменить fieldname с фактическим именем поля.

UPDATE

Учитывая ваши комментарии, оказалось, это имена полей, которые являются динамическими и не значение. По этой причине, вы не можете использовать приведенные выше решения, но следующий должно работать, то есть с помощью ruby filter:

filter { 
    ruby { 
    code => " 
     newhash = {} 
     event.to_hash.each {|key, value| 
     if key =~ /^CISCO/ then 
      newkey = key.gsub(/_\d+/, '').gsub('-', '_') 
      newhash[newkey] = event[key] 
      event.remove(key) 
     end 
     } 
     newhash.each {|key,value| 
     event[key] = value 
     } 
    " 
    } 
} 

После запуска этого фильтра, ваше мероприятие будет иметь поле A_B_C::D вместо оригинального A-B-C::D_num

+0

привет Вал, спасибо за ваш ответ! Мне жаль, что я не был более ясен в вопросе. Я не могу установить поле из-за randomNum. что все, что я могу указать, является префиксом имени поля. как «A-B-C :: D_ *» – stefansaye

+0

Так что это ваше имя поля, а не полевое значение, верно? – Val

+0

ДА, имя поля не является значением поля. для моего примера вывод выглядит как A-B-C :: D_ [randomNum] => field_value ...... – stefansaye

Смежные вопросы