이름 지정된 필드를 생성하는 모든 구문 분석기에 대해 공통 옵션을 구성할 수 있습니다.

필드 이름의 예약어

필드 이름은 제한됩니다. 다음 이름은 예약된 것이므로 필드 이름으로 사용할 수 없습니다.

  • event_type
  • hostname
  • source
  • text

일반 구문 분석기 옵션

다음 표에 나와 있는 옵션은 지원되는 모든 구문 분석기에 사용할 수 있습니다.

옵션 설명
base_parser

이 사용자 지정 구문 분석기가 확장하는 기본 구문 분석기의 이름입니다. 기본 제공 구문 분석기 이름이거나 다른 사용자 지정 구문 분석기 이름일 수 있습니다. 이 구성 키는 필수입니다.

field_decoder
중첩된 구문 분석기는 JSON 문자열로 지정됩니다. 이 문자열의 키는 중첩된 구문 분석기가 적용되는 필드의 이름이고, 값은 해당 필드에 사용할 구문 분석기의 이름입니다. 중첩된 구문 분석기 각각은 기본 구문 분석기가 디코딩한 적절한 필드에 적용됩니다. 필드 디코더는 필드의 값이 타임 스탬프와 같은 복잡한 값일 때 유용합니다. 또한 field_decoder 옵션은 중첩된 구문 분석기가 적용되기 전에 확인되는 특정 필드 값에 대해 조건을 사용할 수 있도록 허용하는 인수로 좀 더 복잡한 JSON 개체를 지원합니다.
참고: 사용량 및 조건부 구성에 대한 자세한 내용은 아래의 field_decoder 옵션에 대한 조건부 구성 섹션을 참조하십시오.
field_rename

추출된 필드의 이름을 바꿉니다. 키는 필드의 원래 이름이고 값은 필드의 원하는 새 이름에 해당하는 JSON 문자열을 사용합니다. field_decoder 옵션은 field_rename 전에 항상 적용됩니다. INI 파일에서 이러한 옵션의 순서는 중요하지 않습니다. 확실히 하기 위해 field_decoder를 먼저 지정하십시오.

next_parser

다음으로 실행할 구문 분석기의 이름입니다. 동일한 입력에 대해 여러 구문 분석기를 순차적으로 실행할 수 있습니다.

참고: 구문 분석기는 next_parser 키워드로 정의된 이후의 모든 구문 분석기를 처리하며 이전 구문 분석기에 의해 이미 추출된 필드 값을 바꿀 수 있습니다.
exclude_fields

서버에 제공되기 전에 이벤트에서 제거할 세미콜론으로 구분된 필드 이름 목록입니다. 필드 이름은 이벤트 필터링이 수행되기 전에 제거되므로 구문 분석 도중 제외한 필드를 필터 조건에 사용할 수 없습니다.

debug

특정 구문 분석기의 디버깅을 사용하도록 설정하는 Yes 또는 No 옵션입니다. 디버깅을 사용하도록 설정하면 구문 분석기는 수신되는 입력, 수행한 작업 및 생성한 결과의 상세 로깅을 수행합니다. 옵션은 섹션별로 적용됩니다. 즉, 특정 섹션으로 정의된 구문 분석기에만 적용됩니다.

구문 분석기에 대한 디버그의 기본 값은 debug=no입니다.

field_decoder에 대한 조건부 구성 옵션

동일한 공통 형식을 갖지만 특정 필드 값과 관련된 로그(예: infoerror 심각도의 로그)의 경우, 조건부로 중첩된 구문 분석기를 사용하여 불필요한 구문 분석기가 이미 구문 분석된 로그의 해당 필드에 적용되는 경우를 줄일 수 있습니다.

예를 들어 다음 로그를 사용합니다.
2019-03-29T11:00:54.858Z host-FQDN Hostd: error hostd[2099230] [Originator@6876 sub=Default opID=1983bdbe-c1-800f user=admin.user] AdapterServer caught exception: SSLExceptionE(SSL Exception: error:140000DB:SSL routines:SSL routines:short read: The connection was closed by the remote end during handshake.)
2019-03-29T11:00:55.477Z host-FQDN Hostd: info hostd[6D620B70] ['commonhost' opID=5759adcc-cf] [transportConnector] -- FINISH task-internal-5726666 -- -- Completed connection restart -- 

다음 구성을 사용하여 구문 분석할 수 있습니다.

[parser|clf_parser]
base_parser=clf
format=%t %{generator_host}i %i: %{log_severity}i %i[%{thread_id}i]%M
field_decoder={"log_message" : {"log_severity" : {"error" : "error_parser", "info" : "info_parser"}}}
exclude_fields=log_message

[parser|info_parser]
base_parser=clf
format=[%{common_info}i] [%{process}i] %M
field_rename={"log_message" : "info_log_content"}

[parser|error_parser]
base_parser=clf
format=[%{common_info}i] %{exception_handler}i %i:%{exception_type}i:%i:%{error_id}i:%i:%i:%i: %M
field_rename={"log_message" : "exception_content"}

이 구성은 다음과 같은 결과를 생성합니다.

timestamp=2019-03-29T11:00:54.858000 generator_host="host-FQDN" log_severity="error" thread_id="2099230" common_info=Originator@6876 sub=Default opID=1983bdbe-c1-800f user=admin.user exception_handler="AdapterServer" exception_type="SSLExceptionE(SSL Exception" error_id="140000DB" exception_content="The connection was closed by the remote end during handshake.)"

또한 info 로그에 대해 다음 필드가 구문 분석됩니다.

timestamp=2019-03-29T11:00:55.477000 generator_host="host-FQDN" log_severity="info" thread_id="6D620B70" log_message="['commonhost' opID=5759adcc-cf] [transportConnector] -- FINISH task-internal-5726666 -- -- Completed connection restart --" common_info="'commonhost' opID=5759adcc-cf" process="transportConnector" info_log_content="-- FINISH task-internal-5726666 -- -- Completed connection restart --"