Grok 패턴은 로그 파싱을 편하게 하기 위해 나왔습니다.
아래 patterns.go를 봐보면, 정규식들의 집합체입니다.
그래서 정규식을 직접 쓰는 것보다 간편하게 string을 파싱하는데 유용합니다.
동시에 매칭 시 Key, Value를 사용할 수 있어 깔끔한 코딩을 하는 데 도움이 됩니다. (어느정도는... 만능은 아닙니다.)이번 포스팅에는 간단하게 오픈소스 검증만 하고, 다음 포스팅에 예전에 만들었던 syslog파싱에 적용해 봐야겠습니다.
정의되어있는 grok 패턴들...

package main
import (
"fmt"
"github.com/vjeantet/grok"
)
func main() {
g, _ := grok.New()
// 예전 포스팅에 Syslog 샘플.
rfc3164 := "<34>Oct 11 22:14:15 mymachine su: 'su root' failed for lonvick on /dev/pts/8"
values, _ := g.Parse("<%{NUMBER:facility}>%{DATA:date} %{TIME:time} %{WORD:process} %{GREEDYDATA:msg} ", rfc3164)
for k, v := range values {
fmt.Printf("%+20s: %s\n", k, v)
}
}
'Go언어 golang' 카테고리의 다른 글
golang elasticsearch / go언어 elasticsearch 사용하여 REST API 만들기 - #1 개발 환경 셋팅 (0) | 2023.04.11 |
---|---|
2023-03-28 : golang Syslog server / Go언어 Syslog collector - Grok 으로 해보기. (0) | 2023.03.28 |
2023-03-24 json decoder 주석 허용 하는 기능 구현 (0) | 2023.03.24 |
golang JSON 설정 파일 로더 / JSON 주석 처리 (0) | 2023.03.23 |
golang REST API / go언어 REST API 서버 #6 PUT & DELETE (0) | 2023.03.22 |