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

3

好的,我正在使用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个回答

5

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

谢谢,我明天早上试试看。 - user49411

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接