use*_*411 3 hex logstash logstash-grok
好吧,我用 grok 过滤器从日志行中找出唯一 ID 的第一段,就像这样(这只是我关心的第一段,扔掉其余的)。该段是十六进制的,我想要它是二进制的。
该行:
Transaction: 000178ec-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)
过滤器就像:
Transaction: %{BASE16NUM:transaction_id}-%{GREEDYDATA:otherpartsidontcareabout}
Run Code Online (Sandbox Code Playgroud)
但它只是给了我这个结果:
{
"transaction_id": [
[
"000178ec"
],
"otherpartsidontcareabout":
[
"XXXX-XXXX-XXXX-XXXXXXXXXXXX"
]]
}
Run Code Online (Sandbox Code Playgroud)
我原以为它会被转换成十进制:
{
"transaction_id": [
[
"96492"
],
"otherpartsidontcareabout":
[
"XXXX-XXXX-XXXX-XXXXXXXXXXXX"
]]
}
Run Code Online (Sandbox Code Playgroud)
我这样做错了吗?我真的被困住了。
BASE16NUM仅指示文本的模式。要将其转换为整数,您必须执行以下操作:
filter {
ruby {
code => "event['transaction_id'] = event['transaction_id'].hex"
}
}
Run Code Online (Sandbox Code Playgroud)
或对于logstash 5
filter {
ruby {
code => "event.set('transaction_id', event.get('transaction_id').hex)"
}
}
Run Code Online (Sandbox Code Playgroud)