Gibbs Kim's playground

[ElasticStack-6] 정규표현식(regex)과 Logstash 본문

Tech 기록지/Elastic Stack

[ElasticStack-6] 정규표현식(regex)과 Logstash

Lio Grande 2020. 4. 23. 13:33

정규표현식 : 특정한 규칙을 가진 문자열을 집합을 표현하는데 사용하는 형식 언어

 

정규 표현식 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 노랑색 강조 부분은 다음 정규식을 사용했을 때 매치된 것이다. 정규 표현식(正規表現式, 영어: regular expression, 간단히 regexp[1] 또는 regex, rational expression)[2][3] 또는 정규식(正規式)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 정규 표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색과 치환을 위해 지원하고 있으며, 특히

ko.wikipedia.org

 

Logstash에서는 grok 이라는 이름의 filter 기능으로 정규표현식이 주로 사용된다

Logstash grok patterns

 

elastic/logstash

Logstash - transport and process your logs, events, or other data - elastic/logstash

github.com

 

사용목적은 다양하지만 필자는 주로 json 타입의 데이터를 추출하기 위해 사용하려고 한다.

(key : value 형태의 데이터) regex테스트페이

 

 

 

regex 예제에 사용된 데이터 정보는 다음과 같은 패턴을 지닌다 (참고 : LINK, LINK2)

'''
"DATA": [
        {
            "stn_idx": "152",
            "stn_line": "8",
            "stn_nm": "모란역",
            "stn_road_addr": "경기도 성남시 수정구 산성대로 지하100 (수진동)",
            "stn_addr": "경기도 성남시 수정구 수진동 4808",
            "stn_zip_code": "461-873",
            "stn_phone": "02-6311-8261"
        },
'''

### logstashcode.conf 에 적용될 형태

.+?stn_idx"+\N\s+"+([^"]+)
.+?stn_line"+\N\s+"+([^"]+)
.+?stn_nm"+\N\s+"+([^"]+)
.+?stn_road_addr"+\N\s+"+([^"]+)
.+?stn_addr"+\N\s+"+([^"]+)
.+?stn_zip_code"+\N\s+"+([^"]+)
.+?stn_phone"+\N\s+"+([^"]+)


### 일반적인 형태
.+?anyKey_jsonForm"+\N\s+"+([^"]+)