현재 filebeat -> logstash -> elasticsearch 구조로 모두 6.6.2 버전을 사용하고 있는데
동일 서버 내 한 개의 서비스 로그를 내용 패턴과 생성 목적에 따라서
별도의 인덱스로 elasticsearch에 저장하고자 합니다.
"customs.log" -> 1. index "case1"
-> 2. index "case2"
현재는 서버의 filebeat에서 동일한 파일에 대하여 각각 input 설정을 하였고
원하는대로 인덱스 내 데이터들은 구성이 되고 있기는 하지만 필요없이 동일 로그를 두 번씩 logstash로 보내는 상황 입니다.
아래의 현재 filebeat 설정에서 각각을 별도 input으로 하지 않고
tags: [ "case1", "case2" ] 로 설정해 보았는데
filebeat의 output을 파일로 떨어뜨려서 확인해 보면 각각의 데이터마다 위 두개의 태그가 함께 설정된 것이 확인 되는데
filebeat나 logstash에서의 별다른 에러로그는 없어도 "case1" 인덱스나 "case2" 인덱스로 데이터가 들어오지 않았습니다.
방법 아시는 분 도움 좀 요청 드립니다.
[현재 filebeat 설정(filebeat의 중복 데이터 송신)]
filebeat.inputs:
- type: log
tags: [ "case1" ]
enabled: true
paths:
- /jb_log/custom.log
- type: log
tags: [ "case2" ]
enabled: true
paths:
- /jb_log/custom.log
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
output.logstash
hosts: [ "172.16.1.10:5044" ]
[현재 logstash 설정]
input {
beats {
port => 5044
}
}
filter {
if "case1" in [tags] {
`...`
}
else if "case2" in [tags] {
`...`
}
}
output {
if "case1" in [tags] {
elasticsearch {
action => "create"
hosts => ["localhost:9200"]
index => "case1"
document_id => "%{@timestamp}"
}
}
else if "case2" in [tags] {
elasticsearch {
action => "create"
hosts => ["localhost:9200"]
index => "case2"
document_id => "%{[computed_id]}"
}
}
}