Skip to content
This repository has been archived by the owner on Oct 30, 2022. It is now read-only.

请问有没有类似logstash的metadata的功能 #161

Open
mad1230 opened this issue Jul 8, 2020 · 5 comments
Open

请问有没有类似logstash的metadata的功能 #161

mad1230 opened this issue Jul 8, 2020 · 5 comments

Comments

@mad1230
Copy link

mad1230 commented Jul 8, 2020

可以使用metadata做判断依据,写入的时候metadata是丢弃的,翻了一遍没看到

@childe
Copy link
Owner

childe commented Jul 8, 2020

对Kafka 消息的数据加 Topic 等信息? gohangout 有这个功能. 考虑使用 Gohangout 吗?

@mad1230
Copy link
Author

mad1230 commented Jul 8, 2020

go不太熟悉,可以研究一下,不懂的地方请多指教

@mad1230
Copy link
Author

mad1230 commented Jul 8, 2020

假设有一条报文(logstash版本),[2017-04-01 22:21:21] production.INFO: this is a test log message by leon
通过 grok {
match => { "message" => "[%{TIMESTAMP_ISO8601:timestamp}] %{DATA:env}.%{DATA:log_level}: %{DATA:content}" }
}
得到
{
"env" => "production",
"timestamp" => "2017-04-01 22:21:21",
"log_level" => "INFO",
"content" => "{"message":"[2017-04-01 22:21:21] production.INFO: this is a test log message by leon"}"
}
在filter的过程中,我希望remove掉 env字段,但是在写入es的时候,我希望引用 到env这个字段,但是在前面我已经用remove把env字段给去掉了,output的时候就没办法引用到这个字段,hangout有没有办法实现
logstash是这么处理的
grok {
match => { "message" => "[%{TIMESTAMP_ISO8601:timestamp}] %{DATA:[@metadata][env]}.%{DATA:[@metadata][log_level]}: %{DATA:content}" }
}

if [@metadata][log_level] == "INFO"{
drop{}
}

output{
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "%{[@metadata][env]}-log-%{+YYYY.MM}"
document_type => "_doc"
}
}
把env字段放入metadata里面,metadata在整个输入--》filter--》输出 过程中,只作为一些判断条件使用,在最后写入的时候,metadata是不会写到输入源

@childe
Copy link
Owner

childe commented Jul 8, 2020

明白了, 目前没这个功能, 在写 ES 的时候, 会把所有字段都写进来. 可以考虑给用户配置, 可以过滤掉一些字段.

@kalcc
Copy link

kalcc commented Dec 24, 2020

Being scammed by your app

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants