好吧我除了其他东西,从带有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"
]]
}
我做错了吗?我真的卡住了。
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)"
}
}