logstash grok 분석

1991 단어 elasticsearchELKgrok
에서 로컬에 매우 간단한 ELK 시스템을 구축했다.이 중에서logstash는 로컬 로그 파일에서 정보를 읽고 elasticsearch에 전달합니다.
그러나 원본 미가공 로그를 엘라스틱 검색에 직접 건네주는 것은 의미가 없다.
logstash의 또 다른 중요한 작업은 로그를 분석하는 것이다.해석된 키워드와 로그 자체를elasticsearch에 공통적으로 건네주면elasticsearch가 로그 인덱스를 잘 만들 수 있습니다.
logstash는 여러 종류의 해상도를 지원합니다.grok은 그 중의 하나입니다.
grok filter를 사용하려면 logstash의 프로필에 이런 내용을 추가해야 합니다.
filter {
    grok {
        match => { "message" => "grok_pattern" }
    }
}

이 코드는 grok_pattern 외에logstash의 키워드입니다.grok_pattern 부분은 사용자가 자신의 해석 방식을 채워야 한다.grok_pattern는 0개 또는 여러 개%{SYNTAX:SEMANTIC}로 구성되어 있는데 그 중에서 SYNTAX는 표현식의 이름이고grok에서 제공한 것이다. 예를 들어 디지털 표현식의 이름은 NUMBER이고 IP 주소 표현식의 이름은 IP이다.SEMANTIC는 해석된 이 문자의 이름을 표시합니다. 예를 들어 IP 필드의 이름은client일 수 있습니다.
다음 로그의 경우:
55.3.244.1 GET/index.html 15824 0.043
다음과 같이 해석할 수 있습니다.
filter {
    grok {
        match=>{ "message"=>"%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
    }
}

이런 결과를 얻게 될 거예요.
* client: 55.3.244.1
* method: GET
* request: /index.html
* bytes: 15824
* duration: 0.043

grok은 어떤 SYNTAX를 제공합니까?파일grok-patterns를 볼 수 있습니다. 기본적으로 경로/usr/local/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-0.3.0/patterns 아래에 있습니다.
현재 정규 표현식이 regexp인 문자열과 일치하려면grok이 미리 정의한 SYNTAX가 만족하지 않거나 SYNTAX를 스스로 정의할 수 있습니다
사용자 정의 SYNTAX 방식은 다음과 같습니다.
(1) 익명 SYNTAX%{SYNTAX:SEMANTIC}을(를) (?<SEMANTIC>regexp)로 작성
(2) SYNTAX 이름 지정
  • dir 아래에 파일을 만들고 파일 이름이 임의로
  • dir를 grok 경로에 추가: patterns_dir => "./dir"
  • 추가할 SYNTAX를 기록합니다: SYNTAX_NAME regexp
  • 사용 방법은 기본 SYNTAX와 동일합니다: %{SYNTAX_NAME:SEMANTIC}
  • 좋은 웹페이지 즐겨찾기