728x90
반응형
Fluent Bit에서 사용되는 파서(parser)는 로그 데이터를 특정 형식으로 변환하여 처리할 수 있도록 도와줍니다. 다양한 파서 종류와 각 파서의 특징을 표로 정리해 보겠습니다.
구분 | 내용 | 사용 예시 |
Configuring Parser |
사전 구성된 구문 분석기 세트를 제공합니다.
[PARSER]
Name docker Format json Time_Key time Time_Format %Y-%m-%dT%H:%M:%S.%L Time_Keep On [PARSER] Name syslog-rfc5424 Format regex Regex ^\ .... <생> Time_Key time Time_Format %Y-%m-%dT%H:%M:%S.%L Time_Keep On Types pid:integer |
[SERVICE] Parsers_File /path/to/parsers.conf [INPUT] Name dummy Tag dummy.data Dummy {"data":"100 0.5 true This is example"} [FILTER] Name parser Match dummy.* Key_Name data Parser docker [OUTPUT] Name stdout Match * |
JSON | JSON 파서는 가장 간단한 옵션으로, 원본 로그 소스가 JSON 맵 문자열인 경우 그 구조를 가져와 내부 바이너리 표현으로 직접 변환합니다. | [PARSER] Name docker Format json Time_Key time Time_Format %Y-%m-%dT%H:%M:%S %z |
Regular Experession |
정규식 구문 분석기를 사용하면 네임드 캡처 기능을 사용하여 어떤 콘텐츠가 어떤 키 이름에 속하는지 정의하는 사용자 지정 루비 정규식을 정의할 수 있습니다. | [PARSER] Name apache Format regex Regex ^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\"]*?)(?: +\S*)?)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$ Time_Key time Time_Format %d/%b/%Y:%H:%M:%S %z Types code:integer size:integer |
LTSV | ltsv 파서를 사용하면 LTSV 형식의 텍스트를 구문 분석할 수 있습니다. 레이블이 지정된 탭으로 구분된 값(LTSV 형식은 탭으로 구분된 값(TSV)의 변형입니다. LTSV 파일의 각 레코드는 한 줄로 표시됩니다. 각 필드는 탭으로 구분되며 레이블과 값이 있습니다. 레이블과 값은 ':'로 구분되어 있습니다. ex) host:127.0.0.1 ident:- user:- time:[10/Jul/2018:13:27:05 +0200] req:GET / HTTP/1.1 status:200 size:16218 referer:http://127.0.0.1/ ua:Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0 |
[PARSER] Name access_log_ltsv Format ltsv Time_Key time Time_Format [%d/%b/%Y:%H:%M:%S %z] Types status:integer size:integer |
Logfmt | logfmt 파서를 사용하면 https://brandur.org/logfmt 에 설명된 logfmt 형식을 구문 분석할 수 있습니다. 보다 공식적인 설명은 https://godoc.org/github.com/kr/logfmt 에 있습니다. ex) key1=val1 key2=val2 key3 |
[PARSER] Name logfmt Format logfmt Logfmt_No_Bare_Keys true |
Decoders | 구문 분석 중인 로그 메시지에 인코딩된 데이터가 포함되어 있는 경우가 있는데, 일반적인 사용 사례는 Docker를 사용하는 컨테이너화된 환경에서 찾을 수 있습니다. 애플리케이션이 JSON 형식으로 데이터를 기록하지만 이스케이프된 문자열이 되는 경우, 고려하십시오. ex) {"log":"{\"status\": \"up and running\"}\r\n","stream":"stdout","time":"2018-03-09T01:01:44.851160855Z"} |
[PARSER] Name docker Format json Time_Key time Time_Format %Y-%m-%dT%H:%M:%S.%L Time_Keep On # Command | Decoder | Field | Optional Action | # ==============|===========|=======|===================| Decode_Field_As escaped log Decoders 1. json : 필드 콘텐츠를 JSON 맵으로 처리합니다. JSON 맵을 찾으면 콘텐츠를 구조화된 맵으로 바꿉니다. 2. escaped : 이스케이프 문자열을 디코딩합니다. 3. escaped_utf8 : UTF8 이스케이프 문자열을 디코딩합니다. |
728x90
반응형
'빅데이터' 카테고리의 다른 글
[객체 스토리지] Object Storage(객체 스토리지)란 무엇인가? (0) | 2024.06.04 |
---|---|
[빅데이터] Data Mesh란 무엇인가? (0) | 2024.05.27 |
[Message Queue] Solace 개념 잡기! <Kafka 비교> (0) | 2024.05.13 |
[데이터] CDC (Change Data Capture)란 무엇인가?! (0) | 2024.05.13 |
Grafana Loki 개념 잡기! (0) | 2024.05.03 |