无法使用来自 grok 匹配正则表达式的变量创建字段
Can't create a field with a variable from a grok match regex
我目前正在使用 logstash、elasticsearch 和 kibana 6.3.0
我的日志是在唯一 ID 路径生成的:/tmp/USER_DATA/FactoryContainer/images/(我的唯一 ID)/oar/oar_image_job(我的唯一 ID).stdout
我想做的是匹配这个唯一的id,并用这个id创建一个字段。
我对 logstash 过滤器有点新手,但我不知道为什么它不想使用我的 uid 并且总是 return 我 %{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"]
}
}
}
data_source字段是为了避免这个问题:当你将多个配置文件放在一个目录中供Logstash使用时,它们都会被串联起来
在 grok 调试器 %{UNIXPATH}%{NUMBER:uid}%{UNIXPATH} 我的路径 return 我的好值
正确的过滤器:
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" => [ "/tmp/USER_DATA/FactoryContainer/images/%{DATA:unique_id}/oar/oar_image_job%{DATA}.stdout" ] }
}
}
output {
if [data_source] == "oar-image-job" {
elasticsearch {
index => "oar-image-job-%{+YYYY.MM.dd}"
hosts => ["localhost:9200"]
}
}
}
我目前正在使用 logstash、elasticsearch 和 kibana 6.3.0
我的日志是在唯一 ID 路径生成的:/tmp/USER_DATA/FactoryContainer/images/(我的唯一 ID)/oar/oar_image_job(我的唯一 ID).stdout
我想做的是匹配这个唯一的id,并用这个id创建一个字段。
我对 logstash 过滤器有点新手,但我不知道为什么它不想使用我的 uid 并且总是 return 我 %{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"]
}
}
}
data_source字段是为了避免这个问题:当你将多个配置文件放在一个目录中供Logstash使用时,它们都会被串联起来
在 grok 调试器 %{UNIXPATH}%{NUMBER:uid}%{UNIXPATH} 我的路径 return 我的好值
正确的过滤器:
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" => [ "/tmp/USER_DATA/FactoryContainer/images/%{DATA:unique_id}/oar/oar_image_job%{DATA}.stdout" ] }
}
}
output {
if [data_source] == "oar-image-job" {
elasticsearch {
index => "oar-image-job-%{+YYYY.MM.dd}"
hosts => ["localhost:9200"]
}
}
}