childe / gohangout

使用 golang 模仿的 Logstash。用于消费 Kafka 数据,处理后写入 ES、Clickhouse 等。
MIT License
1.01k stars 234 forks source link

配置decorate_events: true后,按topic过滤不成功(gohangout-input-confluent-kafka-go) #175

Closed bj1116 closed 2 years ago

bj1116 commented 2 years ago

https://github.com/arterhuo/gohangout-input-confluent-kafka-go 配置如下: inputs:

没有数据输出,去掉if正常,其他kafka input正常。

childe commented 2 years ago

这个Input看起来并没有 decorate_events 参数。

bj1116 commented 2 years ago

代码里有该参数的,并且不加if条件也能输出meta的相关值; image

childe commented 2 years ago

测下来功能正常,如下。 你把 不加if条件也能输出meta的相关值 这个数据发出来看一下。

inputs:
  - Stdin:
      codec: json

outputs:
  - Stdout:
      if:
        - 'EQ(@metadata,kafka,topic,"abcd")'
# cat i |  gohangout --config a.yml -exit-when-nil
gohangout version
{"@metadata":{"kafka":{"topic":"abcd"}},"@timestamp":"2022-05-04T22:45:32.050106+08:00"}

# cat i
{"@metadata":{"kafka":{"topic":"abcd"}}}
{"@metadata":{"kafka":{"topic":"abc"}}}
bj1116 commented 2 years ago

{"@metadata":{"kafka":{"offset":73063389,"partition":0,"topic":"kd_agent_source_topic"}},"@timestamp":"2022-05-05T11:51:14.893134709+08:00","hostname":"cyber-oradb","in":8921088,"ip_address":"192.168.100.55","kd_type":"metric","meta_class":"linux","metric_class":"swap","out":9134080,"timestamp":1651722670} 感觉是ckafka插件的问题,别的input(kafka,samara等)都可以;是不是ckafka输出的在上下文的时候字节序不一样?

childe commented 2 years ago

看你最上面写的配置,topic名字和这个数据不匹配。

发自我的iPhone

------------------ 原始邮件 ------------------ 发件人: Jeff.Ran @.> 发送时间: 2022年5月5日 11:53 收件人: childe/gohangout @.> 抄送: childe @.>, State change @.> 主题: Re: [childe/gohangout] 配置decorate_events: true后,按topic过滤不成功(gohangout-input-confluent-kafka-go) (Issue #175)

@.**@.":"2022-05-05T11:51:14.893134709+08:00","hostname":"cyber-oradb","in":8921088,"ip_address":"192.168.100.55","kd_type":"metric","meta_class":"linux","metric_class":"swap","out":9134080,"timestamp":1651722670}

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you modified the open/close state.Message ID: @.***>

bj1116 commented 2 years ago

是一致的,上面的是写的一个测试topic,下面是真实的,if语句里面也是真实的 ` inputs:

bj1116 commented 2 years ago

再次测试结果,不支持多层的,单层这样是可以的; Stdout: if:

childe commented 2 years ago

再次测试结果,不支持多层的,单层这样是可以的; Stdout: if:

  • 'EQ(kd_type,"metric")'

看我上面给的测试结果,多层是可以的。

我还是怀疑你配置或者是数据没有对应起来,或者是哪里写错了。 建议你使用 stdin stdout 来测试一下。如果还不符合预期,把测试数据包括配置发出来看下。

bj1116 commented 2 years ago

Topic 配置(换成- 'EQ(kd_type,"metric")'这个正常输出): `inputs:

bj1116 commented 2 years ago

解决了,https://github.com/arterhuo/gohangout-input-confluent-kafka-go/pull/2 多谢@yandd