티스토리 뷰
[업데이트 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
- 2D Game
- OST
- some time ago
- English
- Badge
- Sea Bottom
- Game Engine
- Meow
- belief
- ate
- #ELK Stack
- aws #cloudfront
- #ApacheSpark
- Memorize
- project
- Library
- Mask R-CNN
- docker
- GOD
- Physical Simulation
- ILoop Engine
- Jekyll and Hyde
- sentence test
- #ApacheZeppelin
- SSM
- Worry
- 도커
- #TensorFlow
- Ragdoll
- #REST API
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |