gpt4 book ai didi

parsing - 如何在HEKA的PayloadRegexDecoder中使用整数类型

转载 作者:行者123 更新时间:2023-12-02 22:40:58 26 4
gpt4 key购买 nike

我正在尝试使用HEKA(而不是logstash)进行日志解析器插入Elasticsearch。
这时,我使用PayloadRegexDecoder拆分每个字段。

除整数类型外,大多数配置都按预期运行。

输入日志字符串

May 4 13:01:04 db1 monitoring: 2015-05-04T13:01:01Z 174.35.6.22 aaaa bbbb 111

这是我的HEKA示例配置。
[fdb]
type = "PayloadRegexDecoder"
match_regex = '^(?P<month>.+?) (?P<day>.+?) (?P<time>.+?) (?P<remote_user>.+?) monitoring: (?P<Timestamp>.+?) (?P<ip>.+?) (?P<a>.+?) (?P<b>.+?) (?P<int_test>\d+)'

[fdb.message_fields]
Type = "f_monitoring"
month = "%month%"
day = "%day%"
time = "%time%"
remote_user = "%remote_user%"
ip|ipv4 = "%ip%"
a = "%a%"
b = "%b%"
int_test|B = "%int_test%"`

这是此设置的结果。
:Timestamp: 2015-05-04 13:01:01 +0000 UTC
:Type: f_monitoring
:Hostname:
:Pid: 0
:Uuid: b824d53c-7d7e-4424-a123-780aa37bf879
:Logger: UdpInput
:Payload: May 4 13:01:04 db1 monitoring: 2015-05-04T13:01:01Z 174.35.6.22 aaaa bbbb 111
:EnvVersion:
:Severity: 7
:Fields:
| name:"int_test" type:string value:"111" representation:"B"
| name:"a" type:string value:"aaaa"
| name:"time" type:string value:"13:01:04"
| name:"b" type:string value:"bbbb"
| name:"ip" type:string value:"174.35.6.22" representation:"ipv4"
| name:"day" type:string value:"4"
| name:"remote_user" type:string value:"db1"
| name:"month" type:string value:"May"

我想知道如何将int_test的类型从字符串更改为整数或 double 型。

最佳答案

据我所知,你做不到。从它们的来源看,正则表达式匹配的值将始终是字符串。您可以更改表示形式,但我不知道那会改变任何内容。

但是,您可以做的是添加一个lua解码器。我认为您无法从邮件中删除字段。因此,您必须将消息的副本拉到lua中,转换字段,然后发送回变异的消息。

这是lua代码的概要(未经测试):

function process_message ()
local mutableMessageCopy = decode_message(read_message("raw"))
mutableMessageCopy.Fields.int_test = tonumber(mutableMessageCopy.Fields.int_test)
inject_message(msg)
return 0
end

如果您将lua文件命名为convertint.lua,这就是您要添加到配置中的内容。您还必须更新输入以使用“chain_fbp”而不是“fbp”:
[chain_fbp]
type = "MultiDecoder"
subs = ['fbp', 'convert_to_integer']
cascade_strategy = "all"

[convert_to_integer]
type = "SandboxDecoder"
filename = "/absolute/path/to/the/lua/code/convertint.lua"

关于parsing - 如何在HEKA的PayloadRegexDecoder中使用整数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30441264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com