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

问题描述 投票:2回答:1

好吧我除了其他东西,从带有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"
  ]]
}

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

hex logstash logstash-grok
1个回答
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)" 
  } 
}
© www.soinside.com 2019 - 2024. All rights reserved.