본문으로 건너뛰기

로그 파서 설정

로그 1차 파서 설정

로그 설정 상단의 로그 1차 파서 설정 탭을 선택해 수집된 로그에 대한 파서를 등록할 수 있습니다.

로그 1차 파서는 GROKJSON 파서를 제공하며 유형별 로그 발생 수 집계나 특정 로그 탐색을 위한 필수 파서입니다. 패턴 조건에 맞는 검색 키와 검색 값을 추출하며, 파싱된 키는 로그 유형 분류 및 검색 인덱싱에 활용합니다.

  • GROK: 기본은 정규 표현식 기반 파싱에 해당합니다. 예약 키워드 기반의 파싱을 제공합니다.

  • JSON: 로그 중 JSON으로 출력된 부분에 대해서 일괄 파싱을 제공합니다.

파싱 로직 미등록 시 검색 가능한 key

category, oid, oname, okind, okindName, @txid, @login, httphost

파서 등록이 불가한 예약어

timestamp, message, pcode, category, content, logContent

  • 다음 예약어의 경우 파서를 등록하더라도 인덱스가 생성되지 않습니다.
노트

로그 파서에 대한 자세한 내용은 다음 문서를 참고하세요.

설정 항목

설정 값설명기타
카테고리패턴을 적용할 카테고리required
로그 검출 조건필터로 적용할 검색 키, 검색 값을 입력
- 로그 검출 조건에 맞는 로그 데이터에만 패턴 적용, 로그 검출 조건을 입력하지 않으면 모든 로그를 대상으로 패턴 적용
optional
패턴로그를 파싱(parsing)할 패턴
- 작성한 패턴에 맞추어서 파싱을 하고 인덱스 생성
GROK, 정규 표현식 문법 지원
required

파서 목록

등록한 파서를 조회하고, 추가 및 편집할 수 있습니다. 파서는 등록 순서대로 적용되며, 최초로 일치하는 파서만 적용됩니다.

  • 상단 오른쪽 + 추가하기 버튼을 클릭하면 파서 추가 창이 나타납니다.

  • 적용 순서 컬럼의 아이콘을 드래그해 파서 설정 순서를 변경할 수 있습니다.

  • 아이콘 활성화 토글로 파서 활성화 여부를 지정할 수 있습니다.

  • 수정 아이콘 수정삭제 아이콘 삭제 아이콘을 통해 등록한 파서를 수정 및 삭제할 수 있습니다.

파서 등록

다음은 파서를 등록하는 공통 순서입니다.

  1. 로그 1차 파서 설정에서 + 추가하기 버튼을 클릭하세요.

  2. 파서 추가 창에서 파서를 선택하세요.

    노트

    파서 및 패턴 등록 방법

  3. 파서를 선택하면 패턴 등록 버튼이 활성화됩니다. 패턴 등록 버튼을 클릭한 후, 파서 시뮬레이션 창에서 패턴과 로그를 입력합니다.

    a. 패턴을 입력하세요.

    b. 로그카테고리시뮬레이션 파싱 로그를 입력하세요. 로그 검색 버튼을 클릭한 후, 검색된 목록에서 원하는 로그 오른쪽의 선택 버튼을 클릭하면 로그가 자동으로 입력됩니다.

    노트

    로그 검색을 통해 수집된 로그 중 예시 로그를 선택할 수 있습니다. 선택한 로그는 시뮬레이션 입력창에 자동 반영되어 복사/붙여넣기 없이 바로 테스트할 수 있습니다.

    c. 등록하려는 패턴이 정상인지 시뮬레이션 버튼을 클릭해 시뮬레이션 및 패턴의 퍼포먼스를 측정하세요.

    노트

    시뮬레이션과 퍼포먼스 측정에 관한 자세한 내용은 다음 문서를 참고하세요.

  4. 성공적으로 파싱되는지 시뮬레이션 결과를 확인한 후, 패턴 적용 버튼을 클릭하세요.

  5. 추가 버튼을 클릭하면 파서가 추가됩니다.

노트

개인정보 비식별화

파서 등록 시 검색 키 이름을 검색 키.p로 지정하면 비식별화 대상이 됩니다(예: myname.p **). 와탭은 개인정보 비식별화 탭에서 비식별화를 관리하는 방식을 권장합니다. 자세한 내용은 개인정보 비식별화를 참고하세요.

GROK 파서 패턴 등록

기본 문법은 %{SYNTAX:SEMANTIC} 입니다. GROK 파서에 대한 자세한 내용은 다음 문서를 참조하세요. 패턴 등록 및 시뮬레이션이 필수적입니다.

  • SYNTAX

    GROK 정의 패턴입니다.

  • SEMANTIC

    파싱된 데이터에 할당할 키입니다.

    노트

    SEMANTIC에는 예약어 등이 사용되지 않도록 조합어 사용을 권장합니다.

JSON 포맷 파서 패턴 등록

로그 전체 또는 일부가 JSON 형태로 출력되는 경우 해당 부분을 파싱할 수 있습니다. Prefix, Postfix 옵션으로 JSON 인식 범위를 지정합니다. JSON 파서에 대한 자세한 내용은 다음 문서를 참조하세요. 시뮬레이션이 필수적입니다.

옵션설명
PrefixJSON 문자열의 시작 부분 앞의 문자열을 지정합니다. 미지정 시 로그 출력문의 맨 앞부터 JSON 문자열로 식별합니다.
PostfixJSON 문자열의 종료 부분 뒤의 문자열을 지정합니다. 미지정 시 로그 출력문의 맨 뒤까지를 JSON 문자열로 식별합니다.
IgnoreJSON 출력부 중 키 추출을 제외할 필드를 지정합니다.
  • 등록 예시

    Log
    [2022-10-25 10:15:34:145]...(개행)
    Request : {"key1":"value1","key2":"value2",...}(개행)
    Response : {"key3":"value3","key4":"value4",...}

    예시처럼 유입되는 로그가 Request JSON, Response JSON을 모두 파싱하고자 하는 경우 다음의 2가지 패턴을 등록합니다.

    • Request 파싱용 패턴

      "Request : " 와 "Response" 사이의 문자열 {"key1":"value1","key2":"value2",...} 대상

    • Response 파싱용 패턴

      "Response : " 부터 로그의 마지막 까지의 문자열 {"key3":"value3","key4":"value4",...} 대상

  • JSON 커스텀 패턴 등록

    로그 중 일부가 JSON 형태로 출력되는 경우 JSON으로 출력된 부분을 전용 커스텀 파서를 통해 파싱할 수 있습니다. 패턴을 다음과 같이 입력하세요.

    io.whatap.logsink.parser.JsonFormatParser{}

    로그 중 JSON 형태로 출력된 부분을 검출하기 위해 Prefix, Postfix 옵션을 조합해 로그의 어느 부분을 JSON으로 인식하여 파싱할지 지정하세요.

    JsonFormatParser{}{} 에 옵션을 지정합니다.

    • 등록 예시

      Log
      [2022-10-25 10:15:34:145]...(개행)
      Request : {"key1":"value1","key2":"value2",...}(개행)
      Response : {"key3":"value3","key4":"value4",...}

      예시처럼 유입되는 로그가 Request JSON, Response JSON을 모두 파싱하고자 하는 경우 다음의 2가지 패턴을 등록합니다.

      • Request 파싱용 패턴

      "Request : " 와 "Response" 사이의 문자열 {"key1":"value1","key2":"value2",...} 대상

      io.whatap.logsink.parser.JsonFormatParser {prefix:"Request : ",postfix:"Response"}
      • Response 파싱용 패턴

      "Response : " 부터 로그의 마지막 까지의 문자열 {"key3":"value3","key4":"value4",...} 대상

      io.whatap.logsink.parser.JsonFormatParser {prefix: "Response : "}

파서 시뮬레이션 및 퍼포먼스 측정

파서 시뮬레이션 후 패턴을 등록할 수 있습니다. 퍼포먼스 측정은 시뮬레이션 수행 대상 문자열에 대하여 파서의 반복 파싱 소요 시간을 측정합니다.

  1. 패턴로그를 입력하세요. 로그 검색 버튼을 클릭한 후, 검색된 목록에서 원하는 로그 오른쪽의 선택 버튼을 클릭하면 로그가 자동으로 입력됩니다.

  2. 시뮬레이션 버튼을 클릭하여 등록하려는 패턴으로 파싱에 성공하는지 확인하세요.

  3. 시뮬레이션 성공 시 시뮬레이션 결과퍼포먼스 측정 결과를 조회할 수 있습니다.

  4. 시뮬레이션 후 패턴 적용 버튼 클릭 시 선택한 파서에 입력한 패턴이 적용됩니다.

파싱 성공

파싱 로직을 등록해 (key)가 생성되면 로그 조회 시 해당 키로 파싱된 값이 추가됩니다. 다음 라이브 테일 메뉴 예시와 같이 파싱된 키와 값이 추가됩니다.

파싱 성공

파싱된 키는 라이브 테일, 로그 검색, 로그 트렌드에서 확인할 수 있습니다.

로그 2차 파서 설정

로그 설정 메뉴 상단에서 로그 2차 파서 설정 탭을 선택해 로그 파서를 등록할 수 있습니다.

로그 2차 파서는 4xx, 5xx 상태 코드 파서상태 코드 성공률 파서를 제공하며, 1차 파서로 추출한 값을 가공해 통계 데이터를 생성합니다. 웹 또는 API 응답 로그의 HTTP Status Code를 기반으로 2차 통계를 추출합니다.

  • 4xx, 5xx 상태 코드 파서: 비정상 응답에 대한 건수 정보를 집계합니다.

  • 상태 코드 성공률 파서: 전체 건수 대비 비정상 응답 비율을 추출합니다.

노트

로그 2차 파서는 1차 파싱된 결과에 대하여 특수 목적의 2차 파싱 기능을 제공합니다. 2차 파서를 사용하기 위해서는 1차 파서등록되어 있어야 합니다.

파서 목록

로그 2차 파서 목록

등록한 파서를 조회하고, 추가 및 편집할 수 있습니다.

파서 추가, 순서 변경, 활성화 토글, 수정 및 삭제 등의 조작 방법은 1차 파서 목록과 동일합니다.

파서 등록 순서

다음은 파서를 등록하는 공통 순서입니다.

로그 2차 파서 등록 순서

  1. + 추가하기 버튼을 선택하면 파서 추가 창이 나타납니다.

  2. 파서 선택 창에서 파서를 선택하세요. 각 파서별 설정 항목은 다음 문서를 참조하세요.

  3. 제외할 상태 코드를 입력하세요.

  4. 카테고리 선택 창에서 카테고리를 선택하거나 직접 입력하세요.

  5. 로그 검출 조건을 선택하거나 직접 입력하세요.

  6. 추가 버튼을 선택해 파서를 등록하세요.

4xx, 5xx 상태 코드 파서 설정 항목

4xx, 5xx 상태 코드 파서는 1차 파서로 파싱된 status 값을 기반으로 4xx, 5xx 건수 데이터를 생성합니다. 특정 상태 코드를 제외하려면 제외할 상태 코드를 입력하세요.

설정 항목

설정 값설명기타
카테고리4xx, 5xx건수 데이터를 생성할 카테고리입니다.required
로그 검출 조건필터로 적용할 검색 키, 검색 값을 입력합니다. 로그 검출 조건에 맞는 로그 데이터에 대해서만 4xx, 5xx건수 데이터를 생성합니다. 로그 검출 조건을 입력하지 않으면 모든 로그를 대상으로 데이터를 생성합니다.optional
제외할 상태 코드통계 데이터 생성 시 제외할 상태 코드입니다. 입력하지 않으면 4xx~5xx에 해당하는 전체 오류 상태 코드를 대상으로 4xx, 5xx건수 데이터를 생성합니다.optional

status 파서 등록 예시

GROK파서 - status 파싱 패턴 등록

유입되는 로그가 {"msg":"message","status":404}이고 예시처럼 GROK 파서로 status를 파싱한다면, status: 404와 같이 파싱됩니다. status가 정상적으로 파싱되는 것을 확인했다면 4XX,5XX 상태 코드 파서에서 제외할 상태 코드를 등록하세요.

데이터 조회

파서를 모두 등록하면 통합 Flex 보드로 이동해 로그 4XX, 5XX 건수 위젯을 생성하세요.

로그 플렉스 보드 위젯-4xx5xx

위젯을 생성하면 다음과 같이 데이터를 확인할 수 있습니다.

로그 플렉스 보드 위젯 차트-4xx5xx

  • avg: 조회 기간 데이터 평균값입니다.

  • max: 조회 기간 데이터 중 최댓값입니다.

  • recently: 조회 기간 데이터 중 마지막 값입니다.

상태 코드 성공률 파서 설정 항목

상태 코드 성공률 파서는 1차 파서로 파싱된 status 값을 기반으로 HTTP 요청 성공률 데이터를 생성합니다. 특정 상태 코드를 제외하려면 제외할 상태 코드를 입력하세요. status 파싱에 관한 내용은 4xx, 5xx 상태 코드 파서 설정 항목을 참조하세요.

설정 항목

설정 값설명기타
카테고리요청 성공률 데이터를 생성할 카테고리입니다.required
로그 검출 조건필터로 적용할 검색 키, 검색 값을 입력합니다. 로그 검출 조건에 맞는 로그 데이터에 대해서만 요청 성공률 데이터를 생성합니다. 로그 검출 조건을 입력하지 않으면 모든 로그를 대상으로 데이터를 생성합니다.optional
제외할 상태 코드요청 성공률 데이터 생성 시 제외할 상태 코드입니다. 입력하지 않으면 2xx~3xx에 해당하는 전체 성공 상태 코드를 대상으로 요청 성공률 데이터를 생성합니다.optional

데이터 조회

파서를 모두 등록하면 통합 Flex 보드로 이동해 로그 요청 성공률 위젯을 생성하세요.

로그 요청 성공률 위젯 템플릿

위젯을 생성하면 다음과 같이 데이터를 확인할 수 있습니다.

로그 플렉스 보드 요청 성공률 위젯 차트-4xx5xx

차트 위 데이터는 조회 기간에 대한 통계를 나타냅니다. 통계 방법을 최근값, 최댓값, 평균값 등으로 선택할 수 있습니다. 최근값이 기본으로 선택되어 있습니다.

로그 파서를 사용하면 불규칙한 형태의 로그를 쿼리가 가능한 구조화된 형태로 변경할 수 있습니다. 와탭 로그 모니터링은 다음과 같이 두 가지 유형의 파서를 제공합니다.

  • GROK 파서: 임의의 형태로 수집되는 로그를 정규 표현식과 GROK 문법을 활용해 파싱합니다.

  • JSON 파서: JSON 형태로 수집되는 로그를 파싱합니다.

노트

공통 주의사항

  • 같은 카테고리에 여러 개의 파서가 등록되어 있는 경우 첫 번째로 매칭되는 파서만 적용됩니다.

  • 와탭은 와탭 서비스의 안정성에 영향을 줄 수 있는 파서를 비활성화할 수 있는 권한을 가집니다.

GROK 파서

로그가 불규칙한 형태로 수집되는 경우 GROK 파서를 사용해 로그를 파싱할 수 있습니다. GROK 문법은 named regular expressions를 제공해 정규 표현식을 보다 쉽고 편리하게 사용할 수 있습니다.

GROK 파서 패턴 등록에 관해 다음 동영상 가이드를 참조하세요.

GROK 시작하기

GROK은 두 가지 형태의 문법을 제공합니다.

  1. %{SYNTAX:SEMANTIC}: GROK 라이브러리에서 제공하는 문법입니다. named regular expressions를 활용해 태그를 추출할 수 있습니다. 활용 예시는 다음을 참조하세요.

    • SYNTAX: GROK이 제공하는 named regular expressions를 지정합니다.

    • SEMANTIC: 매칭되는 값에 부여할 이름을 지정합니다.

    노트

    named regular expressions

    GROK에서 제공하는 문법입니다. 복잡한 정규 표현식에 이름을 부여해 사용할 수 있도록 GROK에서 제공하는 기능입니다.

    nameregular expression
    WORD\b\w+\b
    SPACE\s*
    NOTSPACE\S+
    UUID[A-Fa-f0-9]{8}-(?:[A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}

    와탭에서 제공하는 모든 named regular expressions 확인을 원한다면 다음 링크를 참조하세요.

  2. (?<SEMANTIC>REGX): 정규 표현식의 named capturing group 문법입니다. 정규 표현식을 활용해서 사용자의 의도에 맞게 태그를 추출할 수 있습니다. 활용 예시는 다음을 참조하세요.

    • SEMANTIC: 매칭되는 값에 부여할 이름을 지정합니다.

    • REGX: 매칭에 사용할 정규 표현식을 입력합니다.

    노트

    named capturing group

    정규 표현식에서 제공하는 문법입니다.

    • capturing group: 여러 개의 토큰을 하나로 묶어 하나의 매칭 단위로 사용하는 기능을 의미합니다.

    • named capturing group: capturing group에 이름을 부여한 것입니다.

    • 문자열 매칭 예시를 살펴보겠습니다. dev@whatap.io

      • 예시 1 (\w+)@(\w+\.\w+)
      • 예시 2 이메일 전체 매칭 및 username과 domain 추가 매칭 시 (?<username>\w+)@(?<domain>\w+\.\w+)

%{SYNTAX:SEMANTIC} 활용 예시

다음은 %{SYNTAX:SEMANTIC} 문법을 활용하는 예시입니다.

Sample log
[2023-08-08 02:02:30,101 GMT][INFO ][i.w.y.l.c.LogSinkDexScheduleThread.realProcess(159)] 8 VirtualLog 20230808 02:01:00.000 {area=4, city=5} 56ms

샘플 로그를 보고 각 단어가 의미하는 내용을 유추할 수 있습니다. 각 부분을 semantic한 단어로 치환 시 다음과 같이 표현할 수 있습니다.

semantic replace
[date][logLevel][caller] projectCode logCategory dexBuildStartTime {area=areaEnum, city=cityEnum} dexBuildElapsed

semantic한 단어 모두 정규 표현식으로 대체할 수 있습니다. GROK 파서를 사용하면 사전 정의된 named regular expressions를 활용할 수 있습니다. 여기서 사용된 TIMESTAMP_ISO8601, LOGLEVEL, DATA 는 GROK에서 제공하는 named regular expressions입니다. 이 값들은 각각 다음의 정규 표현식으로 대체되어 매칭됩니다.

  • name: TIMESTAMP_ISO8601

    • regular expression: %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?
  • name: LOGLEVEL

    • regular expression: LOGLEVEL ([Aa]lert|ALERT|[Tt]race|TRACE|[Dd]ebug|DEBUG|[Nn]otice|NOTICE|[Ii]nfo|INFO|[Ww]arn?(?:ing)?|WARN?(?:ING)?|[Ee]rr?(?:or)?|ERR?(?:OR)?|[Cc]rit?(?:ical)?|CRIT?(?:ICAL)?|[Ff]atal|FATAL|[Ss]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ency)?)
  • name: DATA

    • regular expression: .*?
GROK parsing pattern
\[%{TIMESTAMP_ISO8601:date}\sGMT\]\[%{LOGLEVEL:level}\s\]\[%{DATA:caller}\] 

위와 같은 문법으로 파싱을 하면 다음과 같이 태그를 추출할 수 있습니다. 이렇게 GROK의 %{SYNTAX:SEMANTIC} 문법은 복잡하고 긴 정규 표현식을 쉽고 간결하게 적용할 수 있도록 도와주는 역할을 합니다.

Tag extraction
- date : 2023-08-08 02:02:30,101
- caller : i.w.y.l.c.LogSinkDexScheduleThread.realProcess(159)
- level : LEVEL

(?<SEMANTIC>REGX) 활용 예시

named regular expressions로 매칭되지 않는 부분은 (?<SEMANTIC>REGX) 패턴을 사용해서 파싱할 수 있습니다. 위의 샘플 로그에서 %{SYNTAX:SEMANTIC} 문법만으로 파싱되지 않는 영역은 다음과 같습니다.

Unparsed area
8 VirtualLog 20230808 02:01:00.000 {area=4, city=5} 56ms

해당 로그의 각 부분을 semantic한 단어로 치환 시 다음과 같이 표현할 수 있습니다.

semantic replace
projectCode logCategory dexBuildStartTime {area=areaEnum, city=cityEnum} dexBuildElapsed

이렇게 불규칙한 형태의 문자열은 다음과 같은 (?<SEMANTIC>REGX) 문법을 사용해 파싱할 수 있습니다.

샘플 로그 파싱 키워드별 매칭되는 정규 표현식
파싱 키워드(?<SEMANTIC>REGX)
8(?<projectCode>\d)
VirtualLog(?<logCategory>\w*)
20230808 02:01:00.000(?<dexBuildStartTime>\d{8}\s\d{2}:\d{2}:\d{2}\.\d{3})
area=4area=(?<areaEnum>\d)
city=5city=(?<cityEnum>\d)
56ms(?<dexBuildElapsed>\d{2})ms
기본 정규 표현식 문법
문법의미별칭
?0 or 1-
+1 or more-
*0 or more-
a{5}exactly 5-
\wword character[a-zA-Z_0-9]
\swhite space-
.any character except newline
[abc]any of-
[^abc]not a,b, or c-
[a-z]character between a and z-
[1-3[7-9]]union (combining two or more character classes)-
[1-6&&[3-9]]intersection (교집합)-
[0-9&&[^2468]]subtraction (차집합)-
a{2,}2 or more-
a{1,3}between 1 and 3-
a+?match as few as possible-
{2,3}?match as few as possible-
(abc)capturing group (여러 개의 문자열을 single unit으로 처리함)-
\ddigit[0-9]
\Dnon-digit[^0-9]
\Wnon-word character-
\Snon-white space-

이렇게 파싱된 키워드를 띄어쓰기(\s)와 특수 문자 escape(\{, \,, \})로 연결하면 다음과 같이 패턴을 적용할 수 있습니다.

GROK parsing pattern
(?<projectCode>\d)\s(?<logCategory>\w*)\s(?<dexBuildStartTime>\d{8}\s\d{2}:\d{2}:\d{2}\.\d{3})\s\{area=(?<areaEnum>\d),\scity=(?<cityEnum>\d)\}\s(?<dexBuildElapsed>\d{2})ms

위와 같은 문법으로 파싱을 하면 다음과 같이 태그를 추출할 수 있습니다.

Tag extraction
- projectCode : 8
- logCategory : VirtualLog
- dexBuildStartTime : 20230808 02:01:00.000
- areaEnum : 4
- cityEnum : 5
- dexBuildElapsed : 56

GROK 적용하기

로그 설정 > 로그 1차 파서 설정

  1. GROK 패턴 파서를 적용하려면 로그 설정 메뉴의 로그 1차 파서 설정 탭으로 이동하세요.

  2. + 추가하기를 선택 후 파서 입력란에서 GROK 파서를 선택하세요.

  3. 패턴 등록 버튼 선택 시 오른쪽에 패턴 등록 및 시뮬레이션 창이 나타납니다.

  4. 패턴로그 입력 후 시뮬레이션 버튼을 클릭하여 적용하려는 패턴으로 파싱에 성공하는지 확인하세요.

    패턴 예시: [%{TIMESTAMP_ISO8601:date}\sGMT\][%{LOGLEVEL:level}\s\][%{DATA:caller}\]\s(?<projectCode>\d)\s(?<logCategory>\w*)\s(?<dexBuildStartTime>\d{8}\s\d{2}:\d{2}:\d{2}\.\d{3})\s\{area=(?<areaEnum>\d),\scity=(?<cityEnum>\d)\}\s(?<dexBuildElapsed>\d{2})ms

    로그 예시: [2023-08-08 02:02:30,101 GMT][INFO ][i.w.y.l.c.LogSinkDexScheduleThread.realProcess(159)] 8 VirtualLog 20230808 02:01:00.000 {area=4, city=5} 56ms

  5. 시뮬레이션 성공 시 시뮬레이션 결과퍼포먼스 측정 결과를 조회할 수 있습니다.

  6. 시뮬레이션 후 패턴 적용 버튼 클릭 시 선택한 파서에 입력한 패턴이 적용됩니다.

  7. 패턴 적용 후 카테고리로그 검출 조건, 패턴을 입력하세요.

    GROK 파서 입력

    • 카테고리

      로그 카테고리를 선택하세요. 카테고리는 필수로 입력해야 합니다.

    • 로그 검출 조건
      • 조건에 만족하는 로그만 파서가 적용됩니다.

      • 검색 키검색 값을 선택하거나 직접 입력하세요.

      • 로그 검출 조건은 모든 파서가 수행되기 전에 적용됩니다. 즉 파서의 결과로 추가되는 태그를 사용할 수 없습니다.

  8. 추가 버튼을 선택해 파서를 등록하세요.

노트
  • 로그 파서 목록에서 해당 파서의 적용 순서를 변경하거나 활성화수정, 삭제할 수 있습니다.

  • 파서 시뮬레이션 후 패턴을 등록할 수 있습니다.

노트

GROK 파서 주의사항

  • GROK 파서는 %{SYNTAX:SEMANTIC}, %{SYNTAX:SEMANTIC} 두 가지 패턴을 지원합니다.

  • %{SYNTAX:SEMANTIC} 패턴 사용 시 SEMANTIC을 반드시 입력해야합니다.

  • %{SYNTAX:SEMANTIC} 패턴 사용 시 SEMANTIC은 하나의 파서 안에서 unique 해야합니다.

  • (?<SEMANTIC>REGX) 패턴 사용 시 SEMANTIC은 문자(a-z, A-Z)와 숫자(0-9) 그리고 지정된 특수문자(., _, -)만 올 수 있습니다.

  • SEMANTIC은 문자(a-z, A-Z)로 시작해야 합니다.

  • SEMANTIC은 문자(a-z, A-Z) 또는 숫자(0-9)로 끝나야 합니다.

JSON 파서

로그가 JSON 포맷으로 수집될 경우 JSON 파서를 사용해 쉽고 편리하게 파싱할 수 있습니다.

JSON 적용하기

로그 설정 > 로그 1차 파서 설정

  1. JSON 패턴 파서를 적용하려면 로그 설정 메뉴의 로그 1차 파서 설정 탭으로 이동하세요.

  2. + 추가하기를 선택 후 파서 입력란에서 JSON 파서를 선택하세요.

  3. 패턴 등록 버튼 선택 시 오른쪽에 패턴 등록 및 시뮬레이션 창이 나타납니다.

  4. 패턴로그 입력 후 시뮬레이션 버튼을 클릭하여 적용하려는 패턴으로 파싱에 성공하는지 확인하세요.

    Example
    2023-08-08 02:43:28,615 -- {"host":"10.21.3.24","method":"POST","status":"200","url":"http://dev.whatap.io/yard/api/flush"} --

    예시 로그에서 PrefixPostfix--로 지정하고 Ignoreurl을 지정 시 host, method, status 3개의 태그만 생성됩니다.

    • Prefix
      로그에서 JSON 포맷이 시작하는 위치를 지정합니다. 로그 전체가 JSON 포맷인 경우 빈 값으로 설정합니다.

    • Postfix
      로그에서 JSON 포맷이 끝나는 위치를 지정합니다. 로그 전체가 JSON 포맷인 경우 빈 값으로 설정합니다.

    • Ignore
      JSON 포맷 중 태그를 생성하지 않을 키를 지정합니다.

  5. 시뮬레이션 성공 시 시뮬레이션 결과퍼포먼스 측정 결과를 조회할 수 있습니다.

    파서 시뮬레이션 및 퍼포먼스 측정

  6. 시뮬레이션 후 패턴 적용 버튼 클릭 시 선택한 파서에 입력한 패턴이 적용됩니다.

  7. 패턴 적용 후 카테고리로그 검출 조건, 패턴을 입력하세요.

    Json 파서 입력

    • 카테고리

      로그 카테고리를 선택하세요. 카테고리는 필수로 입력해야 합니다.

    • 로그 검출 조건
      • 조건에 만족하는 로그만 파서가 적용됩니다.

      • 검색 키검색 값을 선택하거나 직접 입력하세요.

      • 로그 검출 조건은 모든 파서가 수행되기 전에 적용됩니다. 즉 파서의 결과로 추가되는 태그를 사용할 수 없습니다.

  8. 추가 버튼을 선택해 파서를 등록하세요.

노트
  • 로그 파서 목록에서 해당 파서의 적용 순서를 변경하거나 활성화수정, 삭제할 수 있습니다.

  • 파서를 등록하기 전에 시뮬레이션을 통해 등록하려는 패턴이 정상적인지 확인할 수 있습니다. GROK 파서 등록 시뮬레이션 과정과 동일합니다. 다음 문서를 참조하세요.

JSON 포맷 활용 예시

Sample log
{"host":"10.21.3.24","method":"POST","status":"200","url":"http://dev.whatap.io/yard/api/flush"}

위와 같은 샘플 로그가 수집된 경우 파서 추가 창에서 JSON 파서를 선택하세요. 복잡한 파싱 로직을 작성할 필요없이 로그 분석에 필요한 태그를 다음과 같이 추출할 수 있습니다.

Tag extraction
- host : 10.21.3.24
- method : POST
- status : 200
- url : http://dev.whatap.io/yard/api/flush

JSON 포맷 일부 구성 시 활용 예시

Some JSON format sample log
2023-08-08 02:43:28,615 -- {"host":"10.21.3.24","method":"POST","status":"200","url":"http://dev.whatap.io/yard/api/flush"} --

만약 예시와 같이 로그의 일부만 JSON 포맷으로 구성되어있다면 PrefixPostfix를 지정해 주세요. 와탭 로그 모니터링은 PrefixPostfix 사이의 영역을 JSON 포맷으로 인식 후 파싱합니다.

Tag extraction
- host : 10.21.3.24
- method : POST
- status : 200
- url : http://dev.whatap.io/yard/api/flush