首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes,Fluentd:匹配`stdout`日志

Kubernetes,Fluentd:匹配`stdout`日志
EN

Stack Overflow用户
提问于 2020-10-20 03:31:33
回答 2查看 758关注 0票数 0

在我的Kubernetes集群中,我有一个Fluentd作为DaemonSet运行。多个应用程序以微服务的形式部署在跨命名空间的集群上,其名称与微服务名称相同。

微服务(名为payments)将日志输出到stdout。我想解析微服务日志,并将其放到Fluentd中的某个目的地。问题是我只需要特定的微服务payments日志。如果我使用:

代码语言:javascript
复制
<source>
  @type tail
  @id in_tail_container_logs
  path /var/log/containers/*.log
  pos_file /var/log/fluentd-containers.log.pos
  tag kubernetes.*
  read_from_head true
  ....
</source>

它将扫描所有将日志输出到stdout的pod,以便过滤特定的微服务日志。我们有没有办法在Fluentd中做到这一点?谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-10-20 06:05:23

每个Pod在/var/lib/docker/containers的containers目录下创建一个日志文件

它在containers文件夹中应该有一个匹配日志文件,例如,如果您的部署以名称payments开始,我们可以通过提供以下内容来捕获特定服务的日志

代码语言:javascript
复制
path /var/log/containers/payments*.log

在……里面

代码语言:javascript
复制
<source>
  ....
  path /var/log/containers/payments*.log
  ....
</source>
票数 1
EN

Stack Overflow用户

发布于 2020-10-20 20:28:34

不要在文件级实现分离。取而代之的是使用kubernetes_metadata fluentd过滤器,它使用与pod相关的元数据来丰富每个日志记录。

示例配置:https://github.com/fluent/fluentd-kubernetes-daemonset/blob/e8cb994ae938be784a55dfada297a7f4192a411c/docker-image/v1.10/debian-papertrail/conf/kubernetes.conf#L191-L201

输入/输出示例:https://github.com/fabric8io/fluent-plugin-kubernetes_metadata_filter/tree/84f66a8f9e06ab5b5211053fcce4cd8ab4bd74ba#example-inputoutput

一旦你有了它,有几种方法可以过滤掉特定的服务:

  • 将所有日志发送到日志记录后端,例如elasticsearch,并按元数据进行筛选。
  • 使用filter @type grep通过fluentd中的元数据进行grep,并且只发送您的服务。
  • 使用filter @type rewrite_tag_filter将元数据转换为标记,然后使用fluentd匹配规则分隔日志。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64434009

复制
相关文章

相似问题

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