kubernetes-filebeat自动发现容器日志

4 篇文章 0 订阅

version: filebeat 7.0.0

自动发现
在容器上运行应用程序时,它们会成为监视系统的移动目标。自动发现允许您跟踪它们并在发生变化时调整设置。通过定义配置模板,自动发现子系统可以在服务开始运行时对其进行监控。

您可以filebeat.autodiscover在filebeat.yml 配置文件的部分中定义自动发现设置 。要启用自动发现,请指定提供程序列表。

提供商
自动发现提供程序通过观察系统上的事件并将这些事件转换为具有通用格式的内部自动发现事件来工作。配置提供程序时,您可以选择使用自动发现事件中的字段来设置满足条件时启动特定配置的条件。

一开始,Filebeat将扫描现有容器并为它们启动适当的配置。然后它将观察新的开始/停止事件。这可以确保您不必担心状态,而只需定义您想要的配置。

Docker
Docker自动发现提供程序监视Docker容器的启动和停止。这些是每个事件的可用字段:

  • host
  • port
  • docker.container.id
  • docker.container.image
  • docker.container.name
  • docker.container.labels

例如:

# cat autodiscover-docker.yaml 
filebeat.autodiscover:
  providers:
    - type: docker
      labels.dedot: true
      templates:
        - condition:
            contains:
              docker.container.name: echo2
          config:
            - type: docker
              containers.ids:
                - "${data.docker.container.id}"
                stream: "stderr" #读入指定的流:all, stdout or stderr. The default is all
              #include_lines: ["^ERROR"]  # 只包括的行
              #exclude_lines: ["^\\s+[\\-`('.|_]"]  # 排除的行


output.file:
  path: "/tmp/filebeat"
  filename: autodiscover-docker.log

注:容器往终端输出日志,最好区分类型:一般日志输出到stdout中,错误日志输出到stderr中。这样的好处是:当我们需要过滤错误日志的时候,只要设置:stream: "stderr" ,就可以过滤出所有错误日志;这样比include_lines更加准确。


Kubernetes
Kubernetes自动发现提供商监视Kubernetes pods的启动,更新和停止。这些是每个事件的可用字段:

  • host
  • port (if exposed)
  • kubernetes.container.id
  • kubernetes.container.image
  • kubernetes.container.name
  • kubernetes.labels
  • kubernetes.namespace
  • kubernetes.node.name
  • kubernetes.pod.name
  • kubernetes.pod.uid

例如:

filebeat.autodiscover:
  providers:
    - type: kubernetes
      templates:
        - condition:
            equals:
              kubernetes.namespace: kube-system
          config:
            - type: docker
              containers.ids:
                - "${data.kubernetes.container.id}"
              exclude_lines: ["^\\s+[\\-`('.|_]"]  # drop asciiart lines

Filebeat支持基于提供程序提示的自动发现:提示系统在Kubernetes Pod annotations 或具有前缀的Docker labels中查找提示co.elastic.logs。一旦容器启动,Filebeat将检查它是否包含任何提示并为其启动正确的配置。提示告诉Filebeat如何获取给定容器的日志。默认情况下,将使用docker输入从容器中检索日志。参考:Filebeat支持基于提供程序提示的自动发现

 

参考:
https://www.elastic.co/guide/en/beats/filebeat/master/configuration-autodiscover.html

建议以Docker或者k8s POD方法运行filebeat:

kubernetes: https://www.elastic.co/guide/en/beats/filebeat/7.0/running-on-kubernetes.html

Docker:https://www.elastic.co/guide/en/beats/filebeat/7.0/running-on-docker.html

在k8s以Pod方式运行filebeat: https://www.blog-wuchen.cn/2018/10/22/FileBeat-k8s.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值