🔎 Grok Patterns 이란?
Logstash에서 제공하는 Filter 플러그인으로, 구조화되지 않은 로그 데이터에서 속성(키:값 쌍)을 추출하는 프로세스로
즉 Graylog에서 로그 분석(파싱)하는 역할을 하는 친구이다.
🔎 구문
%(Pattern : Field)
Pattern : Syntax로, 로그 텍스트에서 매치되는 패턴 이름 (정규 패턴명)
이미 만들어진 패턴도 있고, 필요할 경우 직접 만들어서 사용 가능
Field : 사용자 정의 필드, 필드에 표현하고 싶은 이름
apic2 %LOG_LOCAL0-6-SYSTEM_MSG
^%{WORD:device} \%%{WORD:facility_code}\-%{INT:log_level}\-%{WORD:mnemonic}
❔ 이스케이프 문자란? ❕
원래 의미를 탈출하는 문자. 특수한 역할을 하는 문자를 의미한다.
즉 의미가 있는 문자는 그 의미를 없애주고, 의미가 없는 문자에는 의미를 만들어준다.
예를 들어, Grok Patterns에서 %는 패턴 이름의 시작을 의미하는데, /%로 사용함으로써 아무 의미 없는 문자로 만들어주고,
아무 의미 없는 알파벳 n에 \를 붙임으로써 \n은 줄바꿈이라는 의미를 가지게 된다.
🔎 문법
위와 같이 구문으로만 패턴을 만들기에는 변수가 너무 많다.
(패턴을 한 번 만들어도 다양한 로그 때문에 계속 수정이 필요하다 😭😭)
패턴을 만들 때 좀 더 편하게 만들 수 있는 자주 쓰는 문법을 준비해 봤다. (🎈은 소소한 Tip!!)
^ | 패턴 시작을 알림 |
$ | 패턴 끝을 알림 |
? | ?앞 문자 있을 수도 있고 없을 수도 있음 🎈 Grok Pattern의 경우 띄어쓰기에도 굉장히 예민한데, 띄어쓰기가 있을 때도 있고 없을 때도 있을 때 쓰면 유용함 |
. | 문자 하나 |
* | 앞의 표현식이 0회 이상 반복될 때 🎈 문자는 있는데 패턴화 시키고 싶지 않을 때, .* 사용하면 됨 (문자 하나(.)가 0회 이상 반복됨을 의미한다. 즉 문자가 있을 수도 있고 없을 수도 있어서 에러가 잘 나지 않게 해준다.) |
x|y | x 또는 y에 대응됨 🎈 (?:(%{WORD}-%{WORD}-%{WORD})|(%{WORD}-%{WORD})|(%{WORD})) 의 경우 a-b-c , a-b , a 등 구조가 달라도 패턴화 시킬 수 있음. 다만, %(WORD)가 먼저 오면 a-b-c의 경우 a만 필터링 되므로, 함수 순서가 중요함 |
🔎 참고하면 좋을 사이트
여러 개 샘플 로그를 동시에 테스트할 수 있음
https://github.com/elastic/logstash/blob/v1.4.0/patterns/grok-patterns
이미 정의된 패턴 확인 가능 단, Graylog에 없는 패턴도 있어서 없을 경우 따로 패턴 생성 후 적용시켜야 함.
📌 느낀점
Graylog를 구축할 때 오프라인 환경이라는 점도 힘들었지만, 그보다 더 힘들었던 것이 Grok Patterns과 Pipeline이었다. Graylog 사이트에 잘 정리되어 있지만 지식이 너무 없어서 습득하기 어려웠던 거 같다 😭😭 100% 이해됐다고 말할 수는 없지만 새로운 장비의 로그를 파싱 하는데 전혀 거부감이 없다는 거 만으로도 만족한다.
다음에는 Graylog에서 Grok Patterns 생성 및 적용에 대해 알아보자-!
'💻 프로젝트 > 01. Graylog' 카테고리의 다른 글
[Graylog] 사용자(USER) 설정 (0) | 2023.12.19 |
---|---|
[Graylog] 파이프라인 설정(적용) (0) | 2023.08.26 |
[Graylog] 파이프라인이란? (0) | 2023.08.15 |
[Graylog] Grok Patterns 적용하기 (0) | 2023.08.14 |
[Graylog] Sidecar 설치 (feat. Filebeat) (0) | 2023.08.06 |