원시 이벤트의 전체 메시지 또는 특정 속성을 파싱하는 커스텀 grok 규칙을 만듭니다. 모범 사례로, grok 프로세서 내에서 최대 10개의 파싱 규칙을 사용하는 것이 좋습니다.
내 이벤트 파싱을 클릭하여 기본 파이프라인을 통해 흐르는 이벤트에 대한 세 가지 파싱 규칙 세트를 시작합니다. 속성 이름을 구체화하고, 필요한 경우 다른 유형의 이벤트에 대한 새 규칙을 추가합니다. 이 기능을 사용하려면 해당 이벤트가 인덱싱되어 실제로 수신되는 상태여야 합니다. 작동을 위해 임시로 예외 필터를 비활성화하거나 샘플링할 수 있습니다.
샘플을 클릭하여 선택한 다음, 파싱 규칙에 대한 평가를 트리거하고 화면 하단에 결과를 표시합니다.
프로세서에 최대 5개의 샘플을 저장할 수 있으며, 각 샘플의 길이는 최대 5000자까지 가능합니다. 모든 샘플에는 상태(일치 또는 일치하지 않음)가 표시됩니다. Grok Parser의 파싱 규칙 중 하나가 샘플과 매칭되는 경우 해당 상태가 강조 표시됩니다.
Grok 구문
Grok Parser는 반구조화된 문자 메시지에서 속성을 추출합니다. Grok에는 정수, IP 주소, 호스트 이름 등을 파싱하기 위한 재사용 가능한 패턴이 포함되어 있습니다. 이러한 값은 문자열로 Grok Parser에 보내야 합니다.
%{MATCHER:EXTRACT:FILTER} 구문을 사용하여 파싱 규칙을 작성할 수 있습니다.
Matcher: 예상되는 내용(숫자, 단어, notSpace 등)을 설명하는 규칙(다른 토큰 규칙에 대한 참조일 수 있음)입니다.
Extract (옵션): Matcher와 일치하는 텍스트 조각의 캡처 대상을 나타내는 식별자입니다.
필터(옵션): 매치를 변환하는 포스트-프로세서입니다.
전형적인 비정형 이벤트 예시:
john connected on 11/08/2017
다음 파싱 규칙을 사용합니다.
MyParsingRule %{word:user} connected on %{date("MM/dd/yyyy"):date}
프로세싱 후 다음 정형 이벤트가 생성됩니다.
참고:
단일 Grok Parser에 여러 개의 파싱 규칙이 있는 경우
제공된 이벤트와 단 하나의 항목만 일치할 수 있습니다. 위에서부터 시작해 첫 번째 항목이 일치하면 해당 항목이 파싱됩니다.
각 규칙은 목록에서 위에 정의된 파싱 규칙을 참조할 수 있습니다.
동일한 Grok Parser 내에 고유한 규칙 이름이 있어야 합니다.
규칙 이름은 영숫자, _, .만 포함해야 하며, 반드시 영숫자로 시작해야 합니다.
값이 0이거나 비어 있는 속성은 표시되지 않습니다.
정규식 일치기는 암묵적으로 ^과 $를 적용하여 문자열의 시작과 끝이 매칭되도록 합니다.
특정 이벤트에는 공백이 다수 생성될 수 있습니다. \n 및 \s+을 사용하여 줄 바꿈과 공백을 고려하세요.
URL을 파싱하여 토큰화된 모든 구성원(도메인, 쿼리 매개변수, 포트 등)를 JSON 객체로 반환합니다.
고급 설정
Grok 프로세서 타일의 하단에는 고급 설정 섹션이 있습니다.
특정 텍스트 속성 파싱
다음에서 추출 소스 필드를 사용하여 기본 message 속성 대신 지정된 텍스트 속성에 Grok 프로세서를 적용합니다.
예를 들어 키 값으로 파싱해야 하는 command.line 속성이 포함된 이벤트를 생각해 보세요. 이 이벤트를 다음과 같이 파싱할 수 있습니다.
도우미 규칙을 사용하여 여러 파싱 규칙을 인수 분해하기
지원 규칙 필드를 사용하여 파싱 규칙에 대한 토큰을 정의하세요. 지원 규칙을 사용하면 파싱 규칙에서 Grok 패턴을 인수 분해할 수 있습니다. 이 기능은 동일한 Grok Parser에 동일한 토큰을 사용하는 여러 개의 규칙이 있을 때 유용합니다.
전형적 비정형 이벤트에 대한 예시:
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}
다중 인용 문자열 예제: 여러 인용 문자열이 정의된 경우 기본 동작은 정의된 인용 문자로 대체됩니다.
키-값은 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 필터를 사용하면 문자열을 지정된 문자로 구분할 때 속성에 더 쉽게 매핑할 수 있습니다(기본값은 ,).