В настоящее время я использую logstash, elasticsearch и kibana 6.3.0
Мой журнал создается по уникальному пути идентификатора: / tmp / USER_DATA / FactoryContainer / images / (мой уникальный идентификатор) / oar / oar_image_job (мой уникальный идентификатор) .stdout
Я хочу сопоставить этот уникальный идентификатор и создать поле с этим идентификатором.
Я немного новичок в использовании фильтра logstash, но я не знаю, почему он не хочет использовать мой uid и всегда возвращает мне% {uid} в моем поле или это ошибка Failed to execute action.
мой фильтр:
input {
file {
path => "/tmp/USER_DATA/FactoryContainer/images/*/oar/oar_image_job*.stdout"
start_position => "beginning"
add_field => { "data_source" => "oar-image-job" }
}
}
filter {
grok {
match => ["path","%{UNIXPATH}%{NUMBER:uid}%{UNIXPATH}"]
}
mutate {
add_field => [ "unique_id" => "%{uid}" ]
}
}
output {
if [data_source] == "oar-image-job" {
elasticsearch {
index => "oar-image-job-%{+YYYY.MM.dd}"
hosts => ["localhost:9200"]
}
}
}
поле data_source предназначено для предотвращения этой проблемы: когда вы помещаете несколько файлов конфигурации в каталог для использования Logstash, все они будут объединены
в отладчике Grok% {UNIXPATH}% {NUMBER: uid}% {UNIXPATH} мой путь вернет мне хорошее значение