目前我正在使用 Path_Key 添加文件路径。我正在尝试获取 Path_key 中存在的多个变量。
/var/log/containers/**Application_Name**-**Application_Version**.log
是否可以从现有字段映射中提取这些值?
目前我正在使用 Path_Key 添加文件路径。我正在尝试获取 Path_key 中存在的多个变量。
/var/log/containers/**Application_Name**-**Application_Version**.log
是否可以从现有字段映射中提取这些值?
要提取用于Tag
其中的值非常简单,您将有如下输入:
[INPUT]
Name tail
Path /var/log/containers/*-*.log
Path_Key filename
Tag <appname>.<appversion>
Tag_Regex /(?<appname>[^-]+)-(?<appversion>[^.]+).log$
Tag_Regex
用于设置<appname>
和可用于设置的<appversion>
变量Tag
。
至于在日志条目的字段中设置这些类型的值,我找不到任何“本机”方法来做到这一点。但是,我能够通过使用Lua 过滤器来实现类似的效果:
[INPUT]
Name tail
Path /var/log/containers/*-*.log
Path_Key filename
[FILTER]
Name lua
Match *
script helper.lua
call extract_app_fields
它调用文件中的extract_app_fields
函数helper.lua
:
function extract_app_fields(tag, timestamp, record)
retcode = 0
filename = record['filename']
if filename ~= nil then
appname = filename('/([^-]+)-[^.]+\.log')
appversion = filename('/[^-]+-([^.]+)\.log')
if appname ~= nil then
record['appname'] = appname
retcode = 2
end
if appversion ~= nil then
record['appversion'] = appversion
retcode = 2
end
end
return retcode, timestamp, record
end
该extract_app_fields
函数从 中提取appname
和并更新 中的字段,如果它们可以确定的话。appversion
filename
record
注意:我是 Lua 新手,所以使用 Lua 可能有更好的方法。