【发布时间】:2018-04-17 13:20:37
【问题描述】:
我在 kubernetes 中使用 Fluentd 作为我的日志传送器,plugin extracting metadata using a RegExp。
该插件目前使用以下正则表达式 -'var\.log\.containers\.(?<pod_name>[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)_(?<namespace>[^_]+)_(?<container_name>.+)-(?<docker_id>[a-z0-9]{64})\.log$'
用于解析结构如下的记录 -kubernetes.soluto.var.log.containers.my-nice-api-67459fc4f6-g9vk7_namespace-name_container-name-1e1eeab6b6ce257cf6a7a03057159f3b0873dcd5c0cc713cd8c43ed66c5b6b03.log
我正在尝试更改正则表达式,以便它将pod_name 值分成两部分 -
从部署名称派生的 pod 名称/由 .yaml 配置明确给出
附加到 pod_name 的哈希(与 pod_name 用 2 个连字符分隔)
我本可以使用连字符作为分隔符并轻松完成,但由于 pod_name 本身可能包含连字符,这是不可能的。
因此,我必须找到一个模式来捕获一个组,该组将包含没有最后两个连字符分隔部分的模式。
我已经构建了this regexp 并使用了它,但它的表现不如预期。希望对此有任何帮助。
【问题讨论】:
标签: regex logging kubernetes fluentd