在 logstash 中使用 KV 时,我得到的密钥带有转义字符,如何在 Ruby 中读取此值?

When using KV in logstash, I am getting my key with escaped character, how do i read this value in the Ruby?

我有来自 Kafka 的数据,数据将如下所示:

   "x-vcap-request-id":"smitshah",
   "x-cf-applicationid":"test",
   "x-cf-instanceid":"test2",
   "sec-ch-ua":"\"something\";\"willwork\""

它类似于 JSON 但它不是。所以我想到了使用KV过滤器,

kv {
 source => "header_v1"
value_split => ":"
field_split => ","
}

但现在我是这样获取密钥的:

所以当我这样做时 event.get('\"x-vcap-request-id\"') 我得到的结果是空的。

我该如何解决这个问题?

对 Kafka 一无所知,但你的屏幕截图显示在 Ruby 哈希(地图)中,尽管图像上只有键可见。 在 Ruby 中,如果哈希的名称是事件(我在这里猜测),那么您可以像这样 event["x-vcap-request-id"]

获得 x-vcap-request-id 键的值

我使用字符串作为键,因为你的屏幕截图表明它是,但在 Ruby 键大多数时候是符号(一种独特的固定字符串)所以它也可以是 event[:x-vcap-request-id]

解决方案要么很简单,要么我可能忽略了,这是我的解决方案:

添加了 remove_char_key 并转义了 \ 字符,并解决了问题:

kv {
        remove_char_key => "\""
}