목록logstash (6)
준호씨의 블로그
현재 2.3.1 사용 중 종종 행 걸리는 문제가 있어서 그동안 버전업 릴리즈 노트 확인 해 봄 결론은 일단 2.4.1 로 업그레이드를 고려해 봐야 겠음. 내가 안쓰는 기능은 대충 적거나 생략 2.3.2 https://www.elastic.co/guide/en/logstash/2.3/logstash-2-3-2.html init 스크립트에 reload 지원. service logstash reload 가능 %{foo} 문법이 string 만 생성 했는데 예전에 2.x, 1.5.x 에서는 float 를 리턴 했었음. 2.3.0 에서 underlying value type 리턴 했음. 그러나 2.3.2 에서 다시 예전 2.x, 1.5.x 방식으로 돌아감. init 스크립트에서 KILL_ON_STOP_TIMEOU..
예전에 logstash timezone convert (http://junho85.pe.kr/489) 에 이미 포함 되었던 내용이긴 하지만 사실 단순히 date format 만 바꿀 경우가 더 많을 것 같다. strftime 함수를 이용하면 간단히 포멧을 바꿀 수 있다. DateTime.parse('Jun 22 17:41:10').strftime('%Y%m%d%H%M%S') 결과: 20160622174110 strftime 에 들어가는 인자는 http://ruby-doc.org/core-2.2.0/Time.html#method-i-strftime 의 설명을 참고 하도록 한다. 설명에 나와 있듯이 ISO C 와 POSIX 방식과 거의 비슷한 방식이다.
logstash 에서 value 내용 중 이메일만 추출하는건 grok filter 에서 match %{EMAILADDRESS} 를 이용하면 추출 해 낼 수 있다. 하지만 특정항목을 이미 array 로 분리 해 낸 상태에서 해당 array 값들 중 email 만 추출 해 내는 방법을 딱히 찾지 못하였다. 하지만 ruby filter 로 ruby 언어로 직접 코딩 하면 가능하다. 예를 들어 아래와 같이 array 에 이메일 정보가 들어가 있는데 순수하게 이메일 주소만 있는 것이 아니라 이름정보나 꺽쇠기호 같은게 섞여 있는 경우 순수이메일주소만 추출하고자 한다. array1 = ['"test1" ', 'testaddress1@gmail.com'] array2 = ['"test2" ', 'testaddress2..
logstash 필터중에 value 길이를 자르는 기능은 기본적으로 제공 하지 않는다. 뭔가 다른 수가 있는지는 모르겠다. grok 에서 정규표현식으로 가능 하려나? 아무튼 ruby 필터로 ruby 코딩을 직접 하면 해결 할 수 있다. 다음은 logdate 라는 항목의 내용 중 앞의 8자리만 잘라내어서 사용하는 예제이다. filter { ruby { code => "event['logdate'] = event['logdate'][0..7]" } } 20160529224811 이라는 데이터가 있으면 20160529 만 남게 된다.
logstash 작업을 하다가 받은 요구사항. 요약하면 다음과 같다. 로그에 있는 로그시간을 UTC 로 변경. 포멧은 유지한다. 기존 로그시간의 포멧은 yyyyMMddHHmmss 이며 타임존은 KST 이다. date 필터 date 필터가 있기에 확인 해 봄. https://www.elastic.co/guide/en/logstash/current/plugins-filters-date.html 안되겠음. 특정 필드의 시간 정보를 logstash 의 @timestamp 로 지정하는 기능이기 때문. 좀 더 범용적으로 만들어도 될 텐데 좀 아쉬운 부분이다. ...라고 적었는데 방금 다시 보니 target 이라는 옵션이 있다;; default 가 @timestamp 인데 다른걸 지정하면 되는 것 같다. 물론 out..