Logstash grok过滤器帮助 - 十六进制?

时间:2014-09-11 15:20:20

标签: hex logstash logstash-grok

好的我除了其他东西之外,还有一个带有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"
  ]]
}

我这样做错了吗?我真的卡住了。

1 个答案:

答案 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)" 
  } 
}