예를 들어 <key>:<value>-<key>:<value>.log
과 같은 형식의 파일 이름이 있습니다. pr:64-author:mxinden-platform:aws.log
은 테스트 실행의 로그를 포함합니다.Logstash : 파일 이름을 기반으로 한 동적 필드 이름
나는 파일의 각 라인을 logstash를 통해 elasticsearch로 스트리밍하려고합니다. 각 줄은 별도의 문서로 취급되어야합니다. 각 문서는 파일 이름에 따라 필드를 가져와야합니다. 그래서 예. 위의 예에서 로그 라인 17-12-07 foo something happened bar
은 pr
값이 64
이고 author
값이 mxinden
이고 platform
값이 aws
인 경우를 가정 해 봅시다.
logstash 구성을 작성한 시점에서 필드의 이름을 모른다 ().
파일 이름에 포함 된 필드를 기반으로 각 행에 필드를 어떻게 동적으로 추가합니까?
정적 접근 방식은 지금까지입니다 : 파일 이름 구조에
filter {
mutate { add_field => { "file" => "%{[@metadata][s3][key]}"} }
else {
grok { match => { "file" => "pr:%{NUMBER:pr}-" } }
grok { match => { "file" => "author:%{USERNAME:author}-" } }
grok { match => { "file" => "platform:%{USERNAME:platform}-" } }
}
}
변경이 괜찮
.
귀하의 질문을 이해한다면 100 % 확신 할 수는 없지만 [여기] (https://stackoverflow.com/questions/22916200/logstash-how-to-add)에 설명 된대로 파일 경로와 일치시킬 수는 없습니다. -file-name-as-a-field? rq = 1). % {WORD : author} - % {WORD} : {{{{경로}, % {GREEDYDATA} % {단어} : % {번호 : pr} - % {단어} : % {WORD : platform} .log "] } }'당신을 위해 일할 수 있습니다. ... – Phonolog
@Phonolog하지만 그건 내가 알기에 파일 이름에있는 키를 의미합니다. 나는 예를 들어 키를 모른다. 'author','platform','pr', ..., 그 시점에서. 나는 열쇠를 동적으로 결정하고 싶다. 사용 사례는 Logstash 구성을 변경하지 않고 파일 이름에 새 필드를 추가 할 수 있기를 원합니다. – mxinden
내가 할 방법은 전체 파일 이름을 필드 (.log 제외)로 가져온 다음 kv 필터를 사용하여 해당 필드에서 split = "-"필드와 split = ":"로 분할하는 것입니다. –