在 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 => "\""
}
我有来自 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"]
我使用字符串作为键,因为你的屏幕截图表明它是,但在 Ruby 键大多数时候是符号(一种独特的固定字符串)所以它也可以是 event[:x-vcap-request-id]
解决方案要么很简单,要么我可能忽略了,这是我的解决方案:
添加了 remove_char_key
并转义了 \
字符,并解决了问题:
kv {
remove_char_key => "\""
}