Notice
Recent Posts
Recent Comments
준호씨의 블로그
logstash array 내용 중 이메일만 추출하기 본문
반응형
logstash 에서 value 내용 중 이메일만 추출하는건 grok filter 에서 match %{EMAILADDRESS} 를 이용하면 추출 해 낼 수 있다.
하지만 특정항목을 이미 array 로 분리 해 낸 상태에서 해당 array 값들 중 email 만 추출 해 내는 방법을 딱히 찾지 못하였다.
하지만 ruby filter 로 ruby 언어로 직접 코딩 하면 가능하다.
예를 들어 아래와 같이 array 에 이메일 정보가 들어가 있는데 순수하게 이메일 주소만 있는 것이 아니라 이름정보나 꺽쇠기호 같은게 섞여 있는 경우 순수이메일주소만 추출하고자 한다.
array1 = ['"test1" <testaddress1@daum.net>', 'testaddress1@gmail.com']
array2 = ['"test2" <testaddress2@daum.net>', 'testaddress2@gmail.com']
array3 = ['"test3" <testaddress3@daum.net>', 'testaddress3@gmail.com']
아래와 같이 ruby filter 로 구현하면 된다.
filter {
ruby {
code => "
r = Regexp.new(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/i)
event['array1'].map! { |x| x.scan(r)[0] }
event['array2'].map! { |x| x.scan(r)[0] }
event['array3'].map! { |x| x.scan(r)[0] }
"
}
}
map 을 이용하면 손쉽게 array 에 접근해서 개별 데이터에 접근 할 수 있게 된다. map! 를 적는 이유는 결과를 원본에 반영하겠다는 의미이다.
참고
반응형
'개발이야기' 카테고리의 다른 글
Visual Studio Code - 쉘 커맨드 code 사용 하기 (0) | 2016.09.01 |
---|---|
logstash date format 바꾸기 (0) | 2016.07.17 |
logstash value 길이 자르기 (0) | 2016.05.29 |
logstash timezone convert. KST to UTC (0) | 2016.05.29 |
lolcat 설치 (0) | 2016.05.29 |
Comments