Logstash 로그 필터

4676 단어 Logstash
다음으로 이동:https://www.jianshu.com/p/49ae54a411b8
머리말
Logstash 는 Elastic stack 의 오픈 소스 구성 요소 로 로 그 를 캡 처 하고 수집 할 수 있 을 뿐만 아니 라 캡 처 한 로 그 를 필터 출력 할 수 있 습 니 다.Logstash 의 필터 플러그 인 은 grok, date, json, geoip 등 여러 가지 가 있 습 니 다.그 중에서 가장 많이 사용 되 는 것 은 grok 정규 표현 식 필터 입 니 다.
2. grok 의 일치 문법
grok 의 일치 문법 은 두 가지 로 나 뉜 다. grok 자체 의 기본 일치 모델, 사용자 정의 일치 모델 이다.
- Grok 의 기본 매 칭 모드
Grok 모듈 은 기본 일치 모드 를 제공 합 니 다. 문법 은 다음 과 같 습 니 다.
%{SYNTAX:SEMANTIC}

그 중에서 SYNTAX 는 일치 하 는 패턴 의 이름 으로 해당 하 는 일치 하 는 패턴 과 일치 하 는 텍스트 를 호출 하 는 데 사 용 됩 니 다. 예 를 들 어 3.44 는 NUBER 모드 와 일치 하고 10.10.10.1 은 IP 모드 와 일치 합 니 다.반면 SEMANTIC 는 10.10.10.1 과 같은 일치 하 는 텍스트 내용 을 표시 하고 클 라 이언 트 IP 로 편집 하 는 데 사 용 됩 니 다.사용 예:
%{NUMBER:duration} %{IP:ClientIP}

- Grok 의 사용자 정의 모드
Grok 모듈 은 정규 표현 식 을 기반 으로 일치 하기 때문에 기본 적 인 일치 모드 가 우리 의 수 요 를 만족 시 키 지 못 할 때 우 리 는 패턴 컴 파일 에 해당 하 는 일치 규칙 을 사용자 정의 합 니 다.Grok 의 사용자 정의 모드 문법:
(?the pattern here)

그 중 filedname 은 사용자 정의 모드 의 이름 입 니 다. pattern 은 바로 정규 표현 식 입 니 다.
예:
#          
(?(\d*[./-]\d*[./-]\d* \d*:\d*:\d*[.,][0-9]+))

3. grok 의 필터 설정 옵션 과 일반 옵션
grok 는 다음 필터 설정 옵션 을 지원 합 니 다.
옵션
유형
반드시
묘사 하 다.
break_on_match
불 형
아니.
기본 값 은 true 입 니 다. 첫 번 째 일치 하 는 조건 에 맞 는 값 만 일치 합 니 다. 여러 값 이 일치 하려 면 false 로 설정 해 야 합 니 다.
keep_empty_captures
불 형
아니.
기본 값 은 false 입 니 다. true 라면 빈 필드 를 이벤트 필드 로 유지 합 니 다.
match
해시 형
아니.
한 필드 에 일치 하 는 해시 값 을 뜻 합 니 다. 단일 필드 에 여러 일치 하 는 모드 를 설정 할 수 있 습 니 다.
named_captures_only
불 형
아니.
기본 값 은 true 입 니 다. grok 에서 가 져 온 이름 만 저장 하 는 것 을 의미 합 니 다.
overwrite
배열
아니.
이 옵션 은 복사 필드 의 값 을 사용 합 니 다.
pattern_definitions
해시 형
아니.
현재 필터 에 사 용 된 자동 모드 의 이름과 그룹 이름 을 정의 합 니 다. 이름 이 존재 하면 이전 설정 을 덮어 씁 니 다.
patterns_dir
배열
아니.
정 의 된 일치 모드 를 저장 할 파일 디 렉 터 리 를 지정 합 니 다.
patterns_files_glob
문자열
아니.
patterns 에 사용dir 지정 한 디 렉 터 리 에서 일치 하 는 파일 을 걸 러 냅 니 다.
tag_on_failure
배열
아니.
기본 값 은grokparseffailure, 일치 하지 않 을 때 tags 필드 에 지정 값 을 추가 합 니 다.
tag_on_timeout
문자열
아니.
기본 값 은groktimeout, grok 정규 표현 식 이 시간 초과 에 추 가 된 tag 와 일치 할 때
timeout_millis
수치
아니.
기본 값 은 30000 밀리초 입 니 다. 정규 운행 이 지정 한 시간 을 초과 하면 이 일치 하 는 동작 을 종료 하려 고 합 니 다.0 으로 설정 하면 종료 시간 초과
grok 의 일반적인 옵션: 다음 옵션 은 모든 필터 플러그 인 이 지원 하 는 일반적인 옵션 입 니 다.
옵션
유형
반드시
묘사 하 다.
add_field
해시 형
아니.
이 필터 옵션 이 일치 하면 일치 하 는 이벤트 에 지정 한 필드 를 추가 합 니 다. 필드 이름과 내용 은 관련 변 수 를 호출 하여 이름 을 정의 할 수 있 습 니 다.
add_tag
배열
아니.
필터 가 성공 하면 일치 하 는 이벤트 에 tag 를 추가 합 니 다.
enable_metric
불 형
아니.
기본 값 은 true 입 니 다. 기본 값 으로 이 기능 을 사용 하거나 사용 하지 않 으 면 특정 플러그 인의 도량 값 을 기록 할 수 있 습 니 다.
id
문자열
아니.
지정 한 플러그 인 설정 에 유일한 ID 를 추가 합 니 다. 같은 유형의 플러그 인 이 여러 개 있 을 때 모니터링 logstash 를 구별 할 수 있 습 니 다.
periodic_flush
불 형
아니.
기본 값 은 false 입 니 다. 옵션 을 선택 할 수 있 습 니 다. 정 해진 간격 으로 필터 의 새로 고침 기능 을 호출 할 수 있 습 니 다.
remove_field
배열
아니.
이 플러그 인 이 일치 할 때 이벤트 에서 지정 한 필드 를 제거 합 니 다.
remove_tag
배열
아니.
이 플러그 인 이 일치 할 때 이벤트 에서 지정 한 tags 를 제거 합 니 다.
4. grok 사용 예시
지정 한 필드 추가 및 제거
input {
        beats {
                port => 5044
                type => "nginx"
        }
}

filter {
        if [type] == "nginx" {
        grok {
                match => { "message" => ["(?(\d*.\d*.\d*.\d*)) - %{DATA:[nginx][access][user_name]} \[%{HTTPDATE:[nginx][access][time]}\] \"%{WORD:[nginx][access][method]} %{DATA:[nginx][access][url]} HTTP/%{NUMBER:[nginx][access][http_version]}\" %{NUMBER:[nginx][access][response_code]} %{NUMBER:[nginx][access][body_sent][bytes]} \"%{DATA:[nginx][access][referrer]}\" \"%{DATA:[nginx][access][agent]}\""] }
        add_field => {
                "Device" => "Charles Desktop"
        }
        remove_field => "message"
        remove_field => "beat.version"
        remove_field => "beat.name"
                }
        }
}

output {
        if [type] == "nginx" {
                elasticsearch {
                        hosts => "10.10.10.6:9200"
                        index => "logstash-testlog"
        }       }
}


작은 선물 이 걸 어가 자, 약서 가 나 를 주목 해 주 었 다.
작성 자: 난쟁이 보조개 링크:https://www.jianshu.com/p/49ae54a411b8 출처: 간 서 간 서 저작권 은 작가 의 소유 이 며, 어떠한 형식의 전재 도 작가 에 게 연락 하여 권한 을 수 여 받 고 출처 를 밝 혀 주 십시오.

좋은 웹페이지 즐겨찾기