본문 바로가기

카테고리 없음

[grok]로그 파싱 위한 간단한 grok 패턴 예

애플리케이션 로그 통합뷰를 제공하기 위해 기존 애플리케이션 로그들 패턴을 정리하는 중.

2019-11-11 11:23:52 [INFO ] [INF_M1] - {"msgType":"RECV_SENSOR_INFO","msgJson":"{\"mchnId\":\"T768\",\"mchnTp\":\"M1\",...}"}
2019-11-16 00:00:00 [WARN ] [INF_M1] - Producer - Action: Send Object, {"msgType":"RECV_SENSOR_INFO","msgJson":"{\"mchnId\":\"T768\",\"mchnTp\":\"M2\",...}"}
2019-11-11 12:31:00 [WARN ] [INF_M2] - Producer, Action, Send Object, {"msgType":"RECV_SENSOR_INFO","msgJson":"{\"mchnId\":\"T768\",\"mchnTp\":\"M2\",...}"}
2019-11-11 12:31:00 [WARN ] [INF_M2] - Producer, Action, Send Object ... Test

일단 현재까지 수집한 로그 데이터 보면 대략 위에 나열한 형태들로 분류할 수 있을 듯 하고, 그렇다면 로그 데이터에 텍스트와 JSON 포맷의 실 데이터값 조합된 형태의 로그를 적절히 파싱하면 될 듯하여 아래와 같은 grok 패턴 만들어 보았다. grok 기초 사용법 익혀 적용해 본 김에 메모 겸해서 기록.

%{TIMESTAMP_ISO8601:timestamp} \[%{LOGLEVEL:loglevel}\s?\] \[%{WORD:logcat}\] - ((((?<logmsg0>[^{].*),\s?)?(?<jsonmsg>{.*))|(?<logstr>.*))