원시 이벤트의 전체 메시지 또는 특정 속성을 구문 분석할 사용자 지정 grok 규칙을 생성합니다. grok 프로세서 내에서 최대 10개의 구문 분석 규칙을 사용하는 것이 모범 사례로 권장됩니다.
내 이벤트 구문 분석을 클릭하면 기저 파이프라인을 통과하는 이벤트에 대한 구문 분석 규칙 세 개로 구성된 세트를 시작합니다. 여기에서 속성 이름 지정을 미세 조정하고, 필요한 경우 다른 유형의 이벤트에 대한 새 규칙을 추가합니다. 이 기능을 사용하려면 상응하는 이벤트가 인덱싱되고 실제로 유입되는 상태여야 합니다. 해당 기능이 작동하도록 하기 위해 일시적으로 제외 필터를 비활성화하거나 다운샘플링할 수 있습니다.
샘플을 클릭해 선택하면 구문 분석 규칙을 기준으로 그 샘플의 평가가 트리거되고, 결과가 화면 맨 아래에 표시됩니다.
프로세서를 사용해 최대 5개의 샘플을 저장할 수 있고, 각 샘플의 길이는 최대 5,000자까지 가능합니다. 모든 샘플에 상태가 표시되며(match 또는 no match), 이를 통해 grok 파서의 구문 분석 규칙 중 하나가 샘플과 일치하는지 강조 표시됩니다.
Grok 구문
Grok 파서는 반구조화된 텍스트 메시지에서 속성을 추출합니다. Grok에는 정수, IP 주소, 호스트 이름 등을 구문 분석할 재사용 가능한 패턴이 함께 제공됩니다. 이러한 값은 문자열 형식으로 grok 파서로 전송되어야 합니다.
%{MATCHER:EXTRACT:FILTER} 구문을 사용하여 구문 분석 규칙을 작성할 수 있습니다.
Matcher: 예상되는 내용(숫자, 단어, notSpace 등)을 설명하는 규칙입니다(다른 토큰 규칙에 대한 참조일 수 있음).
Extract(선택 사항): Matcher가 매칭한 텍스트 조각의 캡처 대상을 나타내는 식별자입니다.
Filter(선택 사항): 일치 항목을 변환할 사후 프로세서입니다.
구조화되지 않은 전형적인 이벤트 예시:
john connected on 11/08/2017
다음 구문 분석 규칙을 사용합니다.
MyParsingRule %{word:user} connected on %{date("MM/dd/yyyy"):date}
처리 후 다음 구조화된 이벤트가 생성됩니다.
참고:
Grok 파서 하나에 구문 분석 규칙이 여러 개인 경우:
하나의 항목만 주어진 이벤트와 일치할 수 있습니다. 위에서부터 첫 번째 항목이 일치하면 해당 항목이 구문 분석됩니다.
URL을 구문 분석하고 토큰화된 모든 구성원(도메인, 쿼리 파라미터, 포트 등)을 JSON 개체로 반환합니다.
고급 설정
Grok 타일 하단에 고급 설정 섹션이 있습니다.
특정 텍스트 속성 구문 분석
추출 대상 필드를 사용하여 기본 message 속성 대신 주어진 텍스트 속성에 Grok 프로세서를 적용합니다.
예를 들어 키-값으로 구문 분석해야 하는 command.line 속성을 포함하는 이벤트를 생각해 보세요. 이 이벤트를 다음과 같이 구문 분석할 수 있습니다.
도우미 규칙을 사용하여 여러 구문 분석 규칙을 공통화
도우미 규칙 필드를 사용하여 구문 분석 규칙의 토큰을 정의하세요. 도우미 규칙을 사용하면 구문 분석 규칙 전체에서 Grok 패턴을 공통으로 묶는 데 도움이 됩니다. 이것은 같은 토큰을 사용하는 같은 Grok 파서에 규칙이 여러 개 있을 때 유용합니다.
구조화되지 않은 전형적인 이벤트 예시:
john id:12345 connected on 11/08/2017 on server XYZ in production
다음 구문 분석 규칙 사용:
MyParsingRule %{user} %{connection} %{server}
다음 도우미 사용:
user %{word:user.name} id:%{integer:user.id}
connection connected on %{date("MM/dd/yyyy"):connect_date}
server on server %{notSpace:server.name} in %{notSpace:server.env}
Multiple QuotingString 예시: 여러 quotingstring을 정의하면 기본 동작이 정의된 따옴표로 대체됩니다.
키-값은 quotingStr에 정의된 내용과는 관계없이 항상 따옴표 없이 입력과 일치합니다. 따옴표를 사용하는 경우, 따옴표 사이의 모든 내용을 추출하기 때문에 characterAllowList는 무시됩니다.
{"level":"W","timestamp":1587728861605,"logger":{"thread_id":1,"name":"authorization.go"},"lineno":47,"msg":"Authorization is disabled"}
XML 구문 분석
XML 파서는 XML 형식 메시지를 JSON으로 변환합니다.
이벤트:
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
</book>
규칙:
rule %{data::xml}
결과:
{"book":{"year":"2005","author":"J K. Rowling","category":"CHILDREN","title":{"lang":"en","value":"Harry Potter"}}}
참고:
XML에 두 개의 태그 사이에 속성과 문자열 값이 모두 있는 태그가 포함된 경우, value 속성이 생성됩니다. 예를 들어 <title lang="en">Harry Potter</title>는 {"title": {"lang": "en", "value": "Harry Potter" } }로 변환됩니다.
반복되는 태그는 자동으로 배열로 변환됩니다. 예를 들어 <bookstore><book>Harry Potter</book><book>Everyday Italian</book></bookstore>은 { "bookstore": { "book": [ "Harry Potter", "Everyday Italian" ] } }으로 변환됩니다.
CSV 구문 분석
CSV 필터를 사용하면 주어진 문자(기본적으로 ,)로 구분된 문자열을 속성으로 더 쉽게 매핑할 수 있습니다.
CSV 필터는 csv(headers[, separator[, quotingcharacter]])로 정의되며, 자세한 설명은 다음과 같습니다.
headers: ,로 구분된 키 이름을 정의합니다. 키 이름은 알파벳 문자로 시작해야 하며 _와 영숫자만 포함할 수 있습니다.
separator: 서로 다른 값을 구분하는 데 사용되는 구분 기호를 정의합니다. 문자 한 개만 허용됩니다. 기본값: ,. 참고: TSV의 탭 문자를 나타내려면 separator로 tab을 사용하세요.
quotingcharacter: 따옴표를 정의합니다. 문자 한 개만 허용됩니다. 기본값: "
참고:
구분 기호 문자를 포함하는 값은 반드시 따옴표로 묶어야 합니다.
따옴표로 묶인 값에 따옴표 문자가 포함된 경우 따옴표로 이스케이프해야 합니다. 예를 들어 따옴표로 묶인 값 안의 ""는 "를 나타냅니다.
이벤트에 헤더의 키 개수와 같은 숫자 값이 포함되지 않은 경우, CSV 파서는 첫 번째 항목을 매칭합니다.