[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 를 이용했습니다.