logstash의 Filter 설정

12310 단어 Logstash
전편에서 우리는logstash-input-file 플러그인의 사용법을 배웠고, 우리는 지금 전편을 토대로 Filter를 배우고 있다.우선, 데이터를 위조하는 것이
[sqczm@sqczm logstash-6.7.1]$ pwd
/opt/logstash-6.7.1
[sqczm@sqczm logstash-6.7.1]$ ls demo/second/
events.txt  second.conf
[sqczm@sqczm logstash-6.7.1]$ more demo/second/events.txt 
2019-04-20 20:21:00 64 bytes from 8.8.8.8: icmp_seq=1 ttl=64 time=1.720 ms
2019-04-20 20:21:01 64 bytes from 8.8.8.8: icmp_seq=2 ttl=64 time=2.197 ms
[sqczm@sqczm logstash-6.7.1]$ more demo/second/second.conf 
input {
    file {
        path => ["/opt/logstash-6.7.1/demo/second/events.txt"]
        start_position => "beginning"
    }
}
filter {
    
}
output {
    stdout {}
}
[sqczm@sqczm logstash-6.7.1]$ bin/logstash -f demo/second/second.conf 
……        ……
{
      "@version" => "1",
          "host" => "sqczm",
    "@timestamp" => 2019-04-20T12:28:58.365Z,
       "message" => "2019-04-20 20:21:01 64 bytes from 8.8.8.8: icmp_seq=2 ttl=64 time=2.197 ms",
          "path" => "/opt/logstash-6.7.1/demo/second/events.txt"
}
{
      "@version" => "1",
          "host" => "sqczm",
    "@timestamp" => 2019-04-20T12:28:58.323Z,
       "message" => "2019-04-20 20:21:00 64 bytes from 8.8.8.8: icmp_seq=1 ttl=64 time=1.720 ms",
          "path" => "/opt/logstash-6.7.1/demo/second/events.txt"
}

위에서 설명한 데이터를 살펴보면 다음과 같은 기능을 수행하는 것이 매우 간단합니다.
  • 출력의 @timestamp 필드를 메시지 필드의 시간으로 설정합니다
  • 메시지의 정보를 다른 몇 가지 속성을 추출합니다:bytes, ip, icmpseq、ttl、time

  • 위의 이 의문을 가지고 우리는 어떻게 실현하는지 보았다.우선, @timestamp 필드를 교체해야 합니다. 이 필드를 바꾸려면logstash-filter-date 플러그인이 필요합니다. 이 플러그인에 대한 상세한 설명은 아래의 주소logstash-filter-date 상세한 설명을 보면 logstash-filter-date 이 플러그인을 이해한 것 같습니다. 우리는 또 다른 플러그인을 알아야 합니다. 이 플러그인은logstash-filter-grok입니다.정규 해석 텍스트에 대한 정보를 쓰기 위해서, 이 플러그인에 대한 상세한 설명은 아래의 사이트 주소logstash-filter-grok에 있는 상세한 설명을 보십시오
    위의 두 플러그인을 이해한 후에 우리는 우리의 요구 기능을 실현할 것이다
    [sqczm@sqczm logstash-6.7.1]$ pwd
    /opt/logstash-6.7.1
    [sqczm@sqczm logstash-6.7.1]$ rm data/plugins/inputs/file/.sincedb_814435f84c5f13c338c4625fd2af163b 
    [sqczm@sqczm logstash-6.7.1]$ more demo/second/second.conf 
    input {
        file {
            path => ["/opt/logstash-6.7.1/demo/second/events.txt"]
            start_position => "beginning"
        }
    }
    filter {
        grok {
            match => { "message" => "%{TIMESTAMP_ISO8601:logdate} %{NUMBER:bytes} by
    tes from %{IP:ip}: icmp_seq=%{NUMBER:icmp_seq} ttl=%{NUMBER:ttl} time=%{NUMBER:t
    ime} ms" }
        }
        date {
            match => [ "logdate", "yyyy-MM-dd HH:mm:ss"]
        }
    }
    output {
        stdout {}
    }
    [sqczm@sqczm logstash-6.7.1]$ bin/logstash -f demo/second/second.conf 
    ……        ……
    {
           "message" => "2019-04-20 20:21:01 64 bytes from 8.8.8.8: icmp_seq=2 ttl=64 time=2.197 ms",
          "icmp_seq" => "2",
              "host" => "sqczm",
             "bytes" => "64",
                "ip" => "8.8.8.8",
              "time" => "2.197",
              "path" => "/opt/logstash-6.7.1/demo/second/events.txt",
          "@version" => "1",
           "logdate" => "2019-04-20 20:21:01",
               "ttl" => "64",
        "@timestamp" => 2019-04-20T12:21:01.000Z
    }
    {
           "message" => "2019-04-20 20:21:00 64 bytes from 8.8.8.8: icmp_seq=1 ttl=64 time=1.720 ms",
          "icmp_seq" => "1",
              "host" => "sqczm",
             "bytes" => "64",
                "ip" => "8.8.8.8",
              "time" => "1.720",
              "path" => "/opt/logstash-6.7.1/demo/second/events.txt",
          "@version" => "1",
           "logdate" => "2019-04-20 20:21:00",
               "ttl" => "64",
        "@timestamp" => 2019-04-20T12:21:00.000Z
    }
    

    이로써 우리의 기능은 이미 실현되었다. 플러그인에서 비교적 번거로운 것은grok 부분이다. 사실 이 플러그인은 우리에게 많은 정규를 제공했다. 공식 문서에서 설명한 바와 같이 이러한 정규는 아래의 사이트에서 내장된 정규를 찾을 수 있다. 물론 당신이 직접 정규를 쓰면 아래의 사이트를 사용하여 Grok 정규 검증을 할 수 있다.

    좋은 웹페이지 즐겨찾기