ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ELK Stack] [초보자] Logstash 시작하기
    ELK Stack 2020. 10. 18. 16:09
    반응형

    Elasticsearch 한국 official site의 logstash 동영상을 보고 공부하였고 그 내용을 정리하였습니다.

    저는 windows 10에 logstash를 설치하였습니다.

    www.elastic.co/kr/webinars/getting-started-logstash

     

    Getting Started with Logstash

    Logstash는 포맷이나 스키마에 관계 없이, 모든 데이터를 수집하고 강화 및 통합하기 위한 Elastic Stack의 중앙 데이터 플로우 엔진입니다. Logstash의 실시간 데이터 처리는 Elasticsearch, Kibana, Beats와 연�

    www.elastic.co

    1. logstash 실행하기

    logstash의 실행파일은 bin폴더의 logstash.bat입니다.

    그러나 Logstashconfiginput/output을 설정하지 않으면 실행되지 않습니다.

    (1). 명령어에 input/output을 지정하여 실행하기

    $ ./bin/logstash.bat -e 'input{stdin{}} output {stdout{}}'

    (2). conf파일을 생성후 -f 명령으로 실행하기

    simple.conf 파일
    
    input {
      stdin{
        codec => json
      }
    }
    
    output {
      stdout{
        codec => json
      }
    }
    
    $ ./bin/logstash.bat -f simple.conf
    
    codec을 json으로 설정하면 하기와 같이 input/output에서 json형식으로 사용할 수 있습니다.
    하기는 실행결과 입니다.
    
    {"name": "jichun", "age": "33"}
    {"@version":"1","host":"Admin","age":"33","@timestamp":"2020-10-18T06:38:25.241Z
    ","name":"jichun"}

    (3). lodash config 파일 수정하여 실행하기

    root 폴더에서 config 폴더에 진입하면 하기와 같은 파일이 있습니다..

    logstash.yml: logstash 설정파일

    pipelines.yml: pipeline 설정파일 

    하기와 같이 수정해 줍니다.

    logstash.yml 파일
    
    #logstash가 주기적으로 pipeline 설정파일을 다시 읽어와서 pipeline을 구축 함
    config.reload.automatic: true
    
    #logstash가 pipeline 설정파일을 읽어오는 주기를 설정(하기는 3초에 한번씩 읽어 옮)
    config.reload.interval: 3s
    pipelines.yml
    
    - pipeline.id: test
    # pipeline conf파일을 지정.
    # 하기는 위에서 정의한 simple.conf파일로 지정했음.
    # 여기서 root폴더는 logstash root임.
      path.config: "./config/simple.conf"
    ./bin/logstash.bat 실행
    
    {"name": "jichun", "age": "33"}
    {"age":"33","@version":"1","@timestamp":"2020-10-18T07:01:00.447Z","host":"Admin
    ","name":"jichun"}
    
    (2) 번과 동일하게 출력됨을 확인할 수 있음.

    주의할 점은 stdin을 사용시 logstash.reload가 실행되지 않습니다.

    수동으로 logstash를 reboot 해야 됩니다.

    동영상에서 apache log를 logstash를 통하여 elasticsearch에 저장하는 예제가 있었습니다.

    해당 예제를 stdin, stdout으로 변경하여 test 해보았습니다.

    simple.conf 파일
    
    input {
        stdin {}
    }
    
    filter {
        grok {
            match => {
                "message" => "%{COMBINEDAPACHELOG}"
                "remove_field" => "message"
            }
        }
    
        geoip {
            source => "clientip"
            fields => ["city_name", "country_name", "location", "region_name"]
        }
    
        date {
            match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
            remove_field => "timestamp"
        }
    }
    
    output {
        stdout {
            codec => rubydebug
        }
    }
    
    하기 string 입력
    14.49.42.25 - - [10/Nov/2017:01:24:06 +0000] "GET /articles/dynamic-dns-with-dhcp/ HTTP/1.1" 200 18848 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.0.2b1) Gecko/20091014 Filefox/3.6b1 GTB5"
    
    결과:
    {
               "host" => "Admin",
               "verb" => "GET",
         "@timestamp" => 2017-11-10T01:24:06.000Z,
        "httpversion" => "1.1",
               "auth" => "-",
           "response" => "200",
              "bytes" => "18848",
            "request" => "/articles/dynamic-dns-with-dhcp/",
              "agent" => "\"Mozilla/5.0 (Windows; U; Windows NT 6.
    1; en-US; rv:1.0.2b1) Gecko/20091014 Filefox/3.6b1 GTB5\"",
              "ident" => "-",
              "geoip" => {
                "location" => {
                "lon" => 126.97409999999999,
                "lat" => 37.5112
            },
            "country_name" => "South Korea"
        },
           "referrer" => "\"-\"",
           "clientip" => "14.49.42.25",
            "message" => "14.49.42.25 - - [10/Nov/2017:01:24:06 +0
    000] \"GET /articles/dynamic-dns-with-dhcp/ HTTP/1.1\" 200 18848 \"-\" \"Mozilla
    /5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.0.2b1) Gecko/20091014 Filefox/3.6b
    1 GTB5\"\r",
           "@version" => "1"
    }

     

    반응형

    댓글

Designed by Tistory.