我目前正在使用Logstash、ElasticSearch和Kibana 6.3.0
我的日志是在一个唯一的ID路径上生成的:tmp/user_data/factorycontainer/images/(my unique id)/oar/oar_image_job(my unique id).stdout
我要做的是匹配这个唯一的ID并用这个ID创建一个字段。
我对logstash过滤器有点新手,但我不知道为什么它不想使用我的uid,并且总是在我的字段中返回我的%uid,或者这无法执行操作错误。
我的筛选器:
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"]
}
}
}
数据源字段是为了避免这个问题:当您将多个配置文件放在一个目录中供logstash使用时,它们都将被连接起来。
在grok调试器中,%unixpath%编号:uid%unixpath my path返回良好值