在 Kubernetes 属性上使用 Fluent Bit 修改过滤器
Using Fluent Bit Modify Filter on Kubernetes properties
我正在使用 Fluent Bit (1.3.11) 从 k8s 上的容器 运行 收集日志。我想做的是使用 Fluent Bit Modify 过滤器进行一些基本处理(即标准化日志级别名称)。
我添加了两个修改过滤器(见下文)。第一个只是验证修改过滤器是否有效。它检查 log
键是否存在,如果找到则设置 属性。这样可行。
第二个修改过滤器是我实际想要做的。它应该将 log_processed.Level
值从 ERR
重写为 Error
但我无法让它真正起作用。经过一些试验后,我认为 none 的过滤器具有取决于 log_processed.*
或 kubernetes.*
属性(由 kubernetes 过滤器添加)的条件。
是否有 recommended/working 修改来自 Kubernetes 的日志的方法?
[FILTER]
Name kubernetes
Match kube.*
Kube_URL https://kubernetes.default.svc:443
Kube_CA_File /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
Kube_Token_File /var/run/secrets/kubernetes.io/serviceaccount/token
Kube_Tag_Prefix kube.var.log.containers.
Merge_Log On
Merge_Log_Key log_processed
K8S-Logging.Parser On
K8S-Logging.Exclude Off
[FILTER]
Name modify
Match kube.*
Condition Key_exists log
Set my.custom.prop modify-filter-applied
[FILTER]
NAME modify
Match kube.*
Condition Key_value_equals log_processed.Level ERR
Set log_processed.Level Error
我设法利用 Lua filter 修改记录。
[FILTER]
Name lua
Match kube.*
script levelRewrite.lua
call level_rewrite
function level_rewrite(tag, timestamp, record)
for key, val in pairs(record) do
if key == "log_processed" then
if val["level"] == "I" then
val["level"] = "Info"
-- return code 2 is supported in Fluent Bit v.1.4.3+
return 2, timestamp, record
end
end
end
return 0, 0, 0
end
我正在使用 Fluent Bit (1.3.11) 从 k8s 上的容器 运行 收集日志。我想做的是使用 Fluent Bit Modify 过滤器进行一些基本处理(即标准化日志级别名称)。
我添加了两个修改过滤器(见下文)。第一个只是验证修改过滤器是否有效。它检查 log
键是否存在,如果找到则设置 属性。这样可行。
第二个修改过滤器是我实际想要做的。它应该将 log_processed.Level
值从 ERR
重写为 Error
但我无法让它真正起作用。经过一些试验后,我认为 none 的过滤器具有取决于 log_processed.*
或 kubernetes.*
属性(由 kubernetes 过滤器添加)的条件。
是否有 recommended/working 修改来自 Kubernetes 的日志的方法?
[FILTER]
Name kubernetes
Match kube.*
Kube_URL https://kubernetes.default.svc:443
Kube_CA_File /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
Kube_Token_File /var/run/secrets/kubernetes.io/serviceaccount/token
Kube_Tag_Prefix kube.var.log.containers.
Merge_Log On
Merge_Log_Key log_processed
K8S-Logging.Parser On
K8S-Logging.Exclude Off
[FILTER]
Name modify
Match kube.*
Condition Key_exists log
Set my.custom.prop modify-filter-applied
[FILTER]
NAME modify
Match kube.*
Condition Key_value_equals log_processed.Level ERR
Set log_processed.Level Error
我设法利用 Lua filter 修改记录。
[FILTER]
Name lua
Match kube.*
script levelRewrite.lua
call level_rewrite
function level_rewrite(tag, timestamp, record)
for key, val in pairs(record) do
if key == "log_processed" then
if val["level"] == "I" then
val["level"] = "Info"
-- return code 2 is supported in Fluent Bit v.1.4.3+
return 2, timestamp, record
end
end
end
return 0, 0, 0
end