首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >kubernetes荚名的RegExp

kubernetes荚名的RegExp
EN

Stack Overflow用户
提问于 2018-04-17 05:20:37
回答 1查看 6.8K关注 0票数 0

我使用Fluentd作为我在kubernetes中的日志发货人,带有一个使用RegExp提取插件元数据。该插件目前使用以下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

我试图修改regexp,这样它就可以将pod_name值分成2部分-

  1. 派生自部署名称/由.yaml配置显式提供的pod名称
  2. 附加到pod_name的散列(由两个连字符与pod_name分隔)

我本可以使用连字符作为分隔符,并且使用它很容易,但是由于pod_name本身可能包含连字符,这是不可能的。

因此,我必须找到一个模式,它将捕获一个将包含模式的组,而不包含最后两个连字符分隔的部分。

我已经构建了这个regexp,并对它进行了操作,但它的行为并不像预期的那样。会很乐意帮忙的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-17 06:18:09

如果名为"pod_name“的组只应包含从部署名称派生的pod名称,请尝试如下:

代码语言:javascript
运行
AI代码解释
复制
kubernetes\.var\.log\.containers\.(?:(?<pod_name>[a-z0-9]+(?:-[a-z0-9]+)*))-(?<=-)[a-z0-9]+-(?:(?<=-)[a-z0-9]+(?=_))_(?<namespace>[^_]+)_(?<container_name>.+)-(?<docker_id>[a-z0-9]{64})\.log

如果名为"pod_name“的组应包含两个部分,即从部署名称派生的pod名称及其附加的散列,请尝试如下:

代码语言:javascript
运行
AI代码解释
复制
kubernetes\.var\.log\.containers\.(?:(?<pod_name>[a-z0-9]+(?:-[a-z0-9]+)*-(?<=-)[a-z0-9]+-(?:(?<=-)[a-z0-9]+(?=_))))_(?<namespace>[^_]+)_(?<container_name>.+)-(?<docker_id>[a-z0-9]{64})\.log
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49879264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档