FileLogWinLog 수집기 모두에 대해 KVP(키/값 쌍) 구문 분석기를 구성할 수 있습니다.

KVP(키/값 쌍) 구문 분석기

kvp 구문 분석기는 임의의 로그 메시지 텍스트에서 key=value 일치 항목을 모두 찾아서 추출합니다. 다음 예에서는 kvp 구문 분석기 형식을 보여 줍니다.
[parser|kvp_parser]
base_parser=kvp
fields=*

예를 들어 키-값 로그는 scope=local; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; 형식일 수 있습니다.

kvp 구문 분석기를 사용할 때는 값을 추출할 필드를 지정해야 합니다. 예를 들어 구성에 정의 fields=name,lastname,country가 있는 경우에는 지정된 키를 가진 값만 구문 분석하여 서버로 보냅니다.

필요한 경우 공백 또는 기타 특수 문자를 정의할 때 키와 값 모두 큰따옴표("")로 묶을 수 있습니다.

키 또는 값에 대해 큰따옴표를 사용할 경우 백슬래시 문자("\")를 이스케이프 문자로 사용할 수 있습니다. 백슬래시 다음에 나오는 모든 문자는 리터럴 방식으로 정의됩니다(큰따옴표 문자 또는 백슬래시 문자 포함). 예: "\\"

다음 고려 사항에 주의하십시오.

  • 키/값 쌍의 키 뒤에 등호 기호가 없고 VALUE가 제공되지 않으면 일반 텍스트의 경우처럼 옵션을 건너뜁니다.
  • 키는 비워 둘 수 없으며 값은 비워 둘 수 있습니다.
  • 등호 기호 뒤에 값이 없으면 일반 텍스트로 취급하여 건너뜁니다.
  • 값은 큰따옴표 문자로 묶인 문자열이거나 비어 있을 수 있습니다. 값에 특수 문자가 포함된 경우 백슬래시를 사용하여 이스케이프합니다.

KVP 구문 분석기 옵션

kvp 구문 분석기의 구조에 대해 다음 정보를 참조하십시오.

옵션 설명
fields

추출하려는 정보이며 데이터 단위로 정의됩니다. 예를 들면 fields=name,lastname,country입니다.

특정 필드 이름이 fields 옵션에서 정의되면 로그에서 추출한 필드 이름에서 유효하지 않은 각 문자가 밑줄로 대체됩니다. 예를 들어 fields 옵션에서 필드 “x-A” 및 “a*(X+Y)”를 찾는 경우 구문 분석기는 로그에서 이러한 필드를 추출하고 “x_a” 및 “a__x_y” 필드로 각각 이름을 변경합니다. 이렇게 하면 이름에 문자가 있는 필드를 추출할 수 있습니다.

fields 옵션이 “*”로 지정된 경우 이는 kvp 구문 분석기가 필드/값 쌍을 자동으로 인식한 다음 “영숫자+밑줄” 문자만 있는 필드(LI 서버에서 지원)를 검색한다는 의미입니다. 유효하지 않은 다른 모든 문자는 밑줄로 변환되지 않고 삭제됩니다. 이는 구문 분석기가 불필요한 정보를 정적 필드로 추출하는 것을 방지합니다.

delimiter

선택 사항입니다.

기본 구분 기호는 공백 문자, 탭, 줄 바꿈 문자, 쉼표 및 세미콜론 문자입니다.

구성에 구분 기호가 지정되지 않은 경우 kvp 구문 분석기는 기본 구분 기호를 구문 분석에 사용합니다.

기본 구분 기호를 특정 구분 기호로 변경하려면 해당 구분 기호를 큰따옴표로 묶어야 합니다. 예를 들면 delimiter = "#^|"입니다. 이 정의는 큰따옴표 안에 있는 각 문자가 구분 기호로 사용된다는 것을 의미합니다. kvp 구문 분석기의 경우 모든 문자를 구분 기호로 간주할 수 있습니다. 정의에 포함된 다른 구분 기호와 함께 기본 구분 기호를 포함할 수 있습니다.

예를 들어 delimiter = "#^|\t\r\n\s" 문에는 탭, 줄 바꿈 문자 및 공백이 구분 기호로 포함됩니다. 이러한 문자를 사용할 경우 해당 문자 앞에 이스케이프 문자가 나와야 합니다. 예를 들어 공백 문자를 구분 기호로 정의하려면 공백 문자 앞에 이스케이프 문자 "\"를 입력합니다(예: delimiter="\s").

field_decoder

중첩된 구문 분석기는 JSON 문자열로 지정됩니다. 이 문자열의 키는 중첩된 구문 분석기에 적용할 필드의 이름이고, 값은 해당 필드에 사용할 구문 분석기의 이름입니다.

중첩된 구문 분석기 각각은 기본 구문 분석기가 디코딩한 적절한 필드에 적용됩니다.

필드 디코더는 키-값 쌍의 값이 타임 스탬프 또는 쉼표로 구분된 목록과 같은 복잡한 값일 때 유용합니다.

debug =

선택 사항입니다. debug = 값은 yes 또는 no일 수 있습니다. 구문 분석기에 대한 디버그의 기본 값은 debug=no입니다.

옵션을 yes로 설정하면 liagent_<date>.log에서 구문 분석기 수집의 상세 로그를 볼 수 있습니다.

추가적인 키 값 옵션

정의
KVP_MESSAGE = *(MESSAGE_ENTRY [WSPR])

선택적인 공백으로 구분된 메시지 항목의 목록입니다.

MESSAGE_ENTRY = KVP / FREE_TEXT

항목은 키/값 쌍이거나 일반 텍스트입니다.

KVP = KEY ["=" VALUE]

키/값 쌍입니다. KEY 다음에 등호와 VALUE가 나오지 않으면 일반 텍스트처럼 건너뜁니다.

KEY = BARE_KEY / QUOTED_KEY
FREE_TEXT = "="

단독으로 나오는 등호는 일반 텍스트로 간주되어 건너뜁니다.

BARE_KEY = *1BARE_KEY_CHAR

적어도 한 문자 이상입니다.

BARE_KEY_CHAR = %0x00-08 / %0x10-19 / %0x21-3C / %3E-%FF

등호, 공백 또는 탭을 제외한 모든 문자입니다.

QUOTED_KEY = 0x22 *1(QUOTED_STRING_CHAR / "\" CHAR) 0x22

큰따옴표 문자로 묶은 하나 이상의 문자입니다. 백슬래시를 이스케이프 문자로 사용합니다.

QUOTED_STRING_CHAR = %0x00-21 / %0x23-FF

큰따옴표를 제외한 모든 문자입니다.

VALUE = BARE_VALUE / QUOTED_VALUE
BARE_VALUE = *BARE_VALUE_CHAR

0개 이상의 문자입니다.

BARE_VALUE_CHAR = %0x00-08 / %0x10-19 / %0x21-FF

공백 또는 탭을 제외한 모든 문자입니다.

QUOTED_VALUE = 0x22 *(QUOTED_STRING_CHAR / "\" CHAR) 0x22

큰따옴표 문자로 묶은 문자열입니다. 이 값은 비워 둘 수 있습니다. 백슬래시를 이스케이프 문자로 사용합니다.

KVP 구문 분석기 구성 예

필요한 경우 fields=*를 사용하여 모든 필드를 구문 분석할 수 있습니다.

[parser|simple_kvp]
base_parser =kvp
fields=*

이 예에서는 필드 디코더를 지정하는 방법을 보여 줍니다.

[parser|mykvp]
debug=no
base_parser=kvp
delimiter="#^|"
fields=*
;OR fields=scope,abstract,lazyInit,autowireMode,dependencyCheck
field_decoder={"field1":"field1_parser1"}

[parser|field1_parser1]
base_parser=clf
format=[%{value1}i]]
field_decoder={"value1":"field_parser2"}

다음 KVP 로그를 구문 분석하려면:

Configuring transport... proto = cfapi server_hostname = LOCALHOST ssl = no port = 9000 reconnect = 30
KVP 구문 분석기 구성을 정의합니다.
[parser|kvp_log_parser]
base_parser=kvp
fields=*
KVP 구문 분석기가 다음 필드를 반환합니다.
proto=cfapi
server_hostname=LOCALHOST
ssl=no
port=9000
reconnect=30
참고: 입력 로그에서 할당 연산자( =) 앞에 임의로 생성된 키가 있는 경우, KVP 구문 분석기가 다수의 임의 필드를 생성하여 UI 및 쿼리 성능 문제가 발생할 수 있으므로 KVP 구문 분석기를 * 옵션과 함께 사용하지 않는 것이 좋습니다. 대신 구문 분석해야 하는 필드를 지정하여 구문 분석기를 사용할 수 있습니다.

단순한 KVP 구문 분석기 및 복잡한 KVP 구문 분석기의 예

단순한 KVP 구문 분석기 예

[filelog|MyLog]
directory=C:\<folder_name>\Parser_logs
include=*.log
parser=my_KVP_parser

[parser|my_KVP_parser]
base_parser=kvp
fields=*

복잡한 KVP 구문 분석기 예

[filelog|MyLog]
directory=C:\<folder_name>\Parser_logs
include=*.log
parser=my_KVP_parser

[parser|my_KVP_parser]
base_parser=kvp
fields=*
field_decoder={"field1":" field1_parser1"}

[parser| field1_parser1]
base_parser=clf
format=[%{value1}i]]
field_decoder={"value1":" field1_parser2"}