[elasticsearch] logstash 간단 테스트.

Elastic/Elasticsearch 2014. 1. 22. 17:25

참고 URL : http://www.elasticsearch.org/overview/logstash/


data.json 파일에 라인 단위로 로그가 쌓이게 되면 이벤트를 받아서 elasticsearch 로 저장 하게 됩니다.

json format 이기 떄문에 당연히 field:value 형태로 저장됩니다.


[실행]

java -jar logstash-1.3.3-flatjar.jar agent -f logstash-elasticsearch.conf -v


[실행 + 웹UI]

java -jar logstash-1.3.3-flatjar.jar agent -f logstash-elasticsearch.conf -v -- web

※ 이렇게 실행 하면 kibana 를 별도로 설치 하지 않으셔도 됩니다.

※ 샘플 데쉬보드 : http://192.168.0.120:9292/index.html#/dashboard/file/guided.json


[logstash-elasticsearch.conf]


input {
    file {
        path => "/server/app/logstash/log/data.json"
        codec => json
        start_position => "beginning"
    }
}

output {
    stdout { debug => true debug_format => "json"}

    elasticsearch_http {
        host => "192.168.0.120"
        port => 9200
    }
}


※ output 부분에서 stdout 에 설정된 값은 -v 옵션 주고 실행시켰을 때 디버그 메시지를 찍기 위해서 설정 된 것입니다.


[input file]

http://logstash.net/docs/1.3.3/inputs/file

input {
  file {
    add_field => ... # hash (optional), default: {}
    codec => ... # codec (optional), default: "plain"
    debug => ... # boolean (optional), default: false
    discover_interval => ... # number (optional), default: 15
    exclude => ... # array (optional)
    path => ... # array (required)
    sincedb_path => ... # string (optional)
    sincedb_write_interval => ... # number (optional), default: 15
    start_position => ... # string, one of ["beginning", "end"] (optional), default: "end"
    stat_interval => ... # number (optional), default: 1
    tags => ... # array (optional)
    type => ... # string (optional)
}

}


[output elasticsearch_http]

http://logstash.net/docs/13.3/outputs/elasticsearch_http

output {
  elasticsearch_http {
    codec => ... # codec (optional), default: "plain"
    document_id => ... # string (optional), default: nil
    flush_size => ... # number (optional), default: 100
    host => ... # string (required)
    idle_flush_time => ... # number (optional), default: 1
    index => ... # string (optional), default: "logstash-%{+YYYY.MM.dd}"
    index_type => ... # string (optional)
    manage_template => ... # boolean (optional), default: true
    password => ... # password (optional), default: nil
    port => ... # number (optional), default: 9200
    replication => ... # string, one of ["async", "sync"] (optional), default: "sync"
    template => ... # a valid filesystem path (optional)
    template_name => ... # string (optional), default: "logstash"
    template_overwrite => ... # boolean (optional), default: false
    user => ... # string (optional), default: nil
    workers => ... # number (optional), default: 1
}

}


output plugin 에 보면 elasticsearch 도 있는데 이건 테스트 해보니 이미 설치되어 실행 중인 elasticsearch 와 연동하는데 문제가 있는 것 같습니다.

문서 보면 되는 것 처럼 나와 있는데 일단 실패해서 elasticsearch_http 를 이용했습니다.


: