Logstash 구성 파일을 쓰고 있습니다.logstash에서 grok 필터는 어떻게 작동합니까?
나는 grok 필터가 있습니다. grok 필터의 일치가 정확히 어떻게 작동하는지 알고 싶습니다.
은 내가 logstash 측면에서 하나의 예를 언급하고 다음 보았다예 로그 : 이것은 우리가 일치하려는 의미
filter {
grok {
match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
}
: 55.3.244.1 GET /index.html 15824 0.043
그것은 아래의 필터를 사용하여 구문 분석을 전체 로그 라인을 순차적으로? 로그 라인이 다릅니다. 그것들은 항상 적절한 틀에 있지 않습니다. 아래의 것과 같은
그것을 :
1. 11:10:15---somedata
2. 11:10:20---source--destination-- somedata
3. somedata
나는 모든 세 가지 유형의 라인 을 캡처 할 것이다 그래서 나는 다른 일치하는 필터를 작성해야? 또는 원본, 대상, somedata 필드를 개별적으로 일치 시켜서 캡처해도 괜찮습니까?
이 문제에 대한 정보는
예 정규식과 grok patterns.But의 기본 사항을 이해하지만 다음과 같은 부분에 대해 일치하는 블록을 작성하는 방법에 대해 여전히 혼란 스럽습니다.
line 1: timestamp source destination a=0,b=1,c=3,d=4
line 2: timestamp a=1,e=5, b=1
line 3: g=0
로그 파일에이 세 줄이 있고 b 및 g 값이있는 줄을 캡처한다고 가정합니다. 내 시합 블록은 어떻게 생겼습니까?
match => message ["b=":variable_b,"g=":variable_g]
이렇게하면 모든 줄이 b 및 g로 캡처됩니까? b의 경우 1과 2 줄을 캡처해야합니다. g의 경우 3을 포착해야합니다. 따라서 출력에는 세 줄이 모두 포함되어야합니까 ?? 이게 어떻게 작동합니까 아니면 grokparse 오류 던지겠습니까 ??
기본적으로 Grok 필터는 패턴을 제공된 순서대로 일치 시키려고 시도합니다. 따라서 세 번째 (GREEDYDATA 하나)를 먼저 입력하면 필터가 그대로 유지됩니다. break_on_match 설정으로 여러 패턴과 일치시킬 수 있습니다. – Chro
@Chro 고맙습니다. 내 대답에이를 추가 할 수 있습니까? – baudsp
예, 제발! – Chro