티스토리 뷰
[업데이트 2016.12.29 10:39]
Logstash에서 Ruby Filter를 통해 데이터 제어를 보다 더 풍부하게 처리 할 수 있습니다.
아래의 내용은 XML 데이터를 가져와서 배열 형태로 만든 후, 각 배열 아이템의 key name을 다시 저장하는 Ruby 코드입니다.
filter { xml { source => "xml" store_xml => "false" xpath => [ "/root/data/appname", "APPName" ] remove_field => [ "xml" ] } xml { source => "APPName" force_array => "false" target => "APPName" } if ( [APPName] ) { ruby { add_field => { "APPName_Keynames" => "" } code => " event.set('APPName_Keynames', event.get('APPName').keys) " } } }
다음은 특정 hash 값에서 key값을 value 개수 만큼 카운팅하여 string으로 만드는 Ruby code입니다.
filter { # UserName : Hash value # ex) { "John" => "4", "Jeff" => "2" } # output string : "John,John,John,John,Jeff,Jeff" if ( [UserName] ) { ruby { code => " # init a variable event.set('UserNameSeparated', nil) str_out = '' flag = false # do each hash(key/value) event.get('UserName').each { |key, value| # convert string value to integer type max_cnt = value.to_i # word.exe => word, new_key[0] => word, new_key[1] => .exe new_key = key.partition('.') # add user name as long as the number of user names for i in 1..max_cnt # do not add comma before first value if i == 1 && flag == false str_out.concat(new_key[0]) flag = true else str_out.concat(',') str_out.concat(new_key[0]) end end } event.set('UserNameSeparated', str_out) " remove_field => [ "UserName" ] } } }
Ruby filter를 사용하다보니 Ruby 문법 오류 등으로 매번 Logstash를 실행하면서 동작여부를 확인하는 불편함이 있었는데, Ruby Windows 버전을 설치하여 Ruby code 동작을 확인하면서, Logstash에 config파일에 반영하였습니다.
* 참고: http://rubyinstaller.org/downloads/
또한 Ruby 문법에 대한 설명 등은 아래의 사이트를 참조 하였습니다.
* 참고: https://opentutorials.org/module/517
Ruby Filter의 자세한 사용법은 아래의 링크를 참조하시면 됩니다.
* 참고: https://www.elastic.co/guide/en/logstash/current/plugins-filters-ruby.html
* 참고: https://www.elastic.co/guide/en/logstash/current/breaking-changes.html
* 참고: https://www.elastic.co/guide/en/logstash/current/event-api.html
* 참고: http://ruby-doc.org/core-2.0.0/String.html#method-i-partition
- Total
- Today
- Yesterday
- Sea Bottom
- Meow
- some time ago
- docker
- aws #cloudfront
- project
- sentence test
- English
- #ELK Stack
- Game Engine
- 2D Game
- Badge
- Physical Simulation
- Memorize
- ILoop Engine
- Worry
- OST
- #TensorFlow
- belief
- Ragdoll
- #REST API
- Library
- ate
- #ApacheZeppelin
- #ApacheSpark
- GOD
- SSM
- Mask R-CNN
- Jekyll and Hyde
- 도커
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |