logstash 상용 플러그인 소개

6896 단어 logstash
전언
에서 분포식 로그 서비스의 각 구성 요소를 대체적으로 소개했다.그러나 많은 실현 세부 사항은 포함되지 않았다.본고는 주로logstash에 사용되는 플러그인과 플러그인에 대한 오프라인 패키지를 소개하여 매번 수동으로 플러그인을 설치하지 않도록 한다.본문은 주로 네 부분으로 나뉜다.
  • 플러그 인의 오프라인 패키지
  • input 플러그인
  • Filter 플러그인
  • output 플러그인
  • 플러그인을 사용하기 전에, 우리는 먼저 하나의 개념인 이벤트를 이해한다.Logstash에서 매번 데이터를 읽는 행위를 이벤트라고 합니다.
    1. 플러그인의 오프라인 패키지
    생산 환경에서logstash는 여러 대의 기계에 배치될 수 있습니다. 만약에 매번logstash의 설치와 업데이트가 수동으로 플러그인을 한 번 업데이트해야 한다면 비용이 매우 높습니다.그러면 우리는 사용된 플러그인을 오프라인으로 포장할 수 있다.logstash-offline-plugins-x.x.x.zip 설명 만들기
  • logstash가 설치된 기계에 먼저 logstash에 필요한 플러그인을 설치해야 한다
  • 플러그 인, 명령어:
  • bin/logstash-plugin update logstash-filter-mutate 
    bin/logstash-plugin install logstash-filter-json_encode 
    bin/logstash-plugin prepare-offline-pack logstash-filter-mutate logstash-filter-json_encode

    elastic 공식 문서 참조:https://www.elastic.co/guide/...
    logstash를 설치할 때 다음 명령을 사용하여 플러그인 패키지를 설치합니다.
    bin/logstash-plugin install file://$(pwd)/logstash-offline-plugins.zip

    플러그인을 설치한 후logstash의 인쇄 로그를 제때에 관찰하여 플러그인 버전 충돌로 인한logstash 시작 실패를 피해야 합니다.
    2. input 플러그인
    플러그인을 입력하면 특정한 이벤트 원본이Logstash 파이프에 읽히고 input {}에 설정되며 여러 개를 설정할 수 있습니다.에서 우리는 각각 input, Filter, output 세 부분의 설정을 다른 설정 파일에 넣었다.input의 설정은 input에 있습니다.conf 파일에서EFK를 사용하기 때문에 beats 플러그인이 필요합니다.홈페이지 참조:https://www.elastic.co/guide/...
    input {
        beats {
            port => 5044
            client_inactivity_timeout => 600
            ssl => true
            ssl_certificate_authorities => ["/home/work/certificate/chain-ca.pem"]
            ssl_certificate => "/home/work/certificate/server.crt.pem"
            ssl_key => "/home/work/certificate/server.key.pem"
            ssl_verify_mode => "force_peer"
        }
    }

    주의해야 할 것은 6.4 버전 이상의 비트스 설정에 ssl 이 많다는 것이다peer_metadata, 인증서에 있는 meta 정보를 얻을 수 있으며, 다음에logstash에서 감권 검사를 할 수 있습니다.beats 플러그인을 제외하고 inputs 유형 플러그인은 여러 가지가 있는데 주로 다음과 같다.
  • elasticsearch
  • file
  • log4j
  • kafka

  • 추가 플러그인 구성 소개 참조 홈페이지:https://www.elastic.co/guide/...
    3. Filter 플러그인
    필터 플러그인이 좀 많아요.로그 접속 후 로그의 규칙 일치, 필터 등 작업을 하려면 Filter를 설정해야 합니다.가장 많이 사용되는 Filter 플러그인은 다음과 같습니다.
  • grok
  • date
  • mutate
  • geoip
  • split
  • uuid
  • json
  • jsonencode

  • 3.1 grok 플러그인
    Grok은logstash의 가장 주요한 필터 플러그인입니다.grok는 시스템이 미리 정의한 정규 표현식이나 자신이 정의한 정규 표현식을 통해 로그의 값을 일치시킵니다.logstash를 설치한 후 기본적으로 자주 사용하는 소프트웨어의 로그가 정규와 일치하며, 사용할 때 자신의 로그 형식에 따라 조정하거나 직접 호출할 수 있습니다.만약 다른 디렉터리에서 정규 규칙이 로그와 일치하도록 정의하려면, 사용할 때 정규 경로를 지정해야 합니다.다음 로그의 경우
    55.3.244.1 GET /index.html 15824 0.043

    다음과 같은 규칙을 사용합니다.
    %{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}

    grok 구성의 예는 다음과 같습니다.
    filter {
      grok {
        match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
      }
    }

    그러면 이 로그는 grok을 지나면 다음과 같은 필드를 얻을 수 있습니다.
    client: 55.3.244.1
    method: GET
    request: /index.html
    bytes: 15824
    duration: 0.043

    일반적인 구성 옵션:
  • match: 필드의 패턴을 일치시키는 데 사용
  • patterns_dir: 규칙의 일치성을 지정하는 데 사용합니다.logstash에서 정의한 규칙을 사용할 때 이 인자를 쓸 필요가 없습니다.Patterns_dir는 필터 규칙을 여러 개 저장할 수 있는 디렉터리를 동시에 만들 수 있습니다.구문 형식: patternsdir => [“/opt/logstash/patterns”,“/opt/logstash/extra_patterns”]
  • remove_field: 로그 필드와 일치하면 일치하는 로그 필드를 이 로그에서 삭제합니다
  • Grok 필터 정규 규칙은 자신의 로그 형식에 따라 스스로 작성할 수 있으며,grok 필터 규칙을 작성할 때 오류가 발생하기 쉽습니다. 이때grokdebug 사이트에서 자신의 로그와 작성한 정규 규칙을 디버깅할 수 있습니다.grokdebug 사이트는 (https://grokdebug.herokuapp.com/)
    3.2 date 플러그인
    날짜는 필드의 날짜를 해석하고 이벤트의logstash 시간 스탬프로 사용합니다.날짜 플러그인에 대한 설명은https://segmentfault.com/a/11...홈페이지https://www.elastic.co/guide/...매우 상세한 소개가 있다.구성 과정에서 발생한 예제를 열거합니다. 주어진 시간 형식에 대해:
    2019-01-10T18:11:28.699+08:00

    구성할 pattern은 다음과 같습니다.
    date {
        match => ["[@metadata][log_timestamp]", "yyyy-MM-dd'T'HH:mm:ss.SSSZZ"]
        timezone => "Asia/Shanghai"
    }

    주의해야 할 것은 필터에 대해.conf 설정은 열로 불러올 수 있습니다. 시간 형식 설정이 잘못되면logstash 프로세스가 끊기고, 문제에 대한 검색은logstash의 로그를 스스로 조회할 수 있습니다.
    3.3 mutate 플러그인
    mutate 플러그인은 이름 바꾸기, 삭제, 바꾸기, 수정을 포함한 필드에서 변환을 실행할 수 있습니다.이 플러그인은 상당히 자주 쓰인다.
    예를 들면 다음과 같습니다.
    그룹 표현식에 따라 Tomcat 로그의 내용을 각 필드에 넣고 상태 코드, 바이트 크기, 응답 시간을 정형으로 변환하려고 합니다.
    정규 표현식에 따라 로그 내용을 각 필드에 넣었지만, 필드의 값, 대소문자가 있습니다. 이것은 Elasticsearch의 전문 검색에 있어서 분명히 쓸모가 없습니다. 이 플러그인으로 필드 내용을 모두 소문자로 변환할 수 있습니다.
    예는 다음과 같습니다.
    filter {
        mutate {
            split => ["hostname", "."]
            add_field => { "shortHostname" => "%{hostname[0]}" }
        }
    
        mutate {
            rename => ["shortHostname", "hostname" ]
        }
    }

    필자가 이전에 쓴 에서 주로mutate 플러그인을 사용하여addfield, remove_field,convert,gsub 등 조작.그 중에서covert는 문자열 형식을 int/long/float 등 형식으로 변환하여 집합 등 조작에 편리하게 할 수 있다.예를 들면 다음과 같습니다.
    mutate {
      convert => {
            "averageSliceQueryTime" => "integer"
            "maxSliceQueryTime" => "integer"
      }

    추가 Filter 유형 플러그 인에 대해서는 다음을 참조하십시오.https://www.elastic.co/guide/...
    4.output 플러그인
    앞에서 소개한 input 플러그인과 마찬가지로 output 플러그인도 가장 기초적이고 간단한 출력 플러그인입니다.EFK를 사용하여 안전하고 신뢰할 수 있는 로그 서비스를 신속하게 구축합니다. 이 글에서 우리가 사용하는elasticsearch는 최종 출력 저장소이기 때문에output 플러그인은elasticsearch를 사용합니다.grok 해석에 실패한 파일은 로컬 파일에 쓰기 때문에 파일 플러그인을 사용하여 지점을 통해 판단합니다.예는 다음과 같습니다.
    output {
        if "_grokparsefailure" in [tags] or "_jsonparsefailure" in [tags] {
            file {
                path => "/home/work/logstash/failure_output/failure-%{+YYYY-MM-dd}.log"
            }
        } else {
            elasticsearch {
                hosts => ["https://es-host1:9920","https://es-host2:9920","https://es-host3:9920"]
                index => "logstash-%{[@metadata][index_name]}-%{+YYYY.MM.dd}"
                document_id => "%{[@metadata][document_id]}"
                ssl => true
                ssl_certificate_verification => true
                truststore => "/home/work/certificate/truststore.jks"
                truststore_password => "adofkoe"
                user => "logstash"
                password => "dafodmfkamkefadfg"
            }
        }
    }

    elasticsearch 외에도 다음 출력이 지원됩니다.
  • email
  • file
  • influxdb
  • mongodb
  • redis

  • 자세한 내용은 홈페이지 참조:https://www.elastic.co/guide/...
    총결산
    logstash의 각종 플러그인은 그 기능을 크게 풍부하게 했다.실제 사용에서 우리는 자신의 실제 수요에 따라 관련 설정을 해서 자신의 로그 서비스 시스템을 구축할 수 있다.필자는 이곳에서 주로 자신의 사용 과정에서 사용된 내용에 대한 총결이다.많은 실제 문제에 부딪히면 스스로 홈페이지를 조회하여 해결할 수 있다.

    좋은 웹페이지 즐겨찾기