목록개발이야기 (528)
준호씨의 블로그
예전에 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..
페북에서 누군가가 터미널에서 lolcat 을 사용한 걸 보고 나도 해 봤음. 그냥은 안되고 lolcat 을 설치 해 주어야 됨. $ gem install lolcat Fetching: trollop-2.1.2.gem (100%) Successfully installed trollop-2.1.2 Fetching: paint-1.0.1.gem (100%) Successfully installed paint-1.0.1 Fetching: lolcat-42.1.43.gem (100%) Successfully installed lolcat-42.1.43 Parsing documentation for trollop-2.1.2 Installing ri documentation for trollop-2.1.2 Parsi..