好的我除了其他东西之外,还有一个带有grok过滤器的日志行中的唯一ID的第一段,就像这样(它只是我关心的第一段,扔掉其余部分)。这个段是十六进制的,我希望它是二进制的。
该行:
Transaction: 000178ec-XXXX-XXXX-XXXX-XXXXXXXXXXXX
过滤器就像:
Transaction: %{BASE16NUM:transaction_id}-%{GREEDYDATA:otherpartsidontcareabout}
但它只是给了我这个结果:
{
"transaction_id": [
[
"000178ec"
],
"otherpartsidontcareabout":
[
"XXXX-XXXX-XXXX-XXXXXXXXXXXX"
]]
}
我曾预计它会被转换为十进制:
{
"transaction_id": [
[
"96492"
],
"otherpartsidontcareabout":
[
"XXXX-XXXX-XXXX-XXXXXXXXXXXX"
]]
}
我这样做错了吗?我真的卡住了。
答案 0 :(得分:4)
BASE16NUM
只是表明文本的模式。要将其转换为整数,您必须执行以下操作:
filter {
ruby {
code => "event['transaction_id'] = event['transaction_id'].hex"
}
}
或用于logstash 5
filter {
ruby {
code => "event.set('transaction_id', event.get('transaction_id').hex)"
}
}