Kubernetes部署Filebeat

本文详细介绍了在Kubernetes集群中使用Filebeat进行日志收集的配置与实践,包括通过Helm安装Filebeat,自定义配置文件以适应Kubernetes环境,以及如何将日志输出至Kafka。此外,还提供了启动、更新和停止服务的具体命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集群均采用helm进行的安装部署,如果helm尚未部署,可参考helm安装

获取filebeat包

helm repo add elastic https://helm.elastic.co
helm fetch elastic/filebeat --version 7.2.0

若添加源失败,亦可通过https://helm.elastic.co直接获取对应的包

 

配置文件

在包同级目录下创建配置文件filebeat-settings.yaml,内容如下

filebeatConfig: 
  filebeat.yml: |-                       // filebeat主配置文件
    filebeat.inputs:
    - type: docker
      combine_partials: true
      containers.ids:
        - "*"                            // 收集的container-id,*代表所有
      encoding: plain
      fields_under_root: true            // 此项默认是false,设置为true后,field下的值为顶级变量
      ignore_older: 0
      close_older: 1h
      scan_frequency: 11s
      harvester_buffer_size: 16384
      max_bytes: 10485760
      tail_files: true
      backoff: 1s
      max_backoff: 10s
      backoff_factor: 2
​
​
    processors:
      - add_kubernetes_metadata:            // 添加k8s描述信息
          in_cluster: true
          default_indexers.enabled: true            // 7.0以后版本一定要开启这两项,默认为false
          default_matchers.enabled: true            // 表示能够添加额外的索引及匹配规则
          annotations.dedot: false
          include_annotations:              // 将Pod的annotation内容引入
            - "filebeat.harvest"
            - "filebeat.index"
      - drop_event:         // 匹配不包含预设的annotation,不等则丢弃该日志
          when:
            not:
              equals:
                kubernetes.annotations.filebeat.harvest: "true"
      - rename:         // 将annotation定义的index重命名为service
          fields:
            - from: "kubernetes.annotations.filebeat.index"
              to: "service"
      - drop_fields:    // 丢弃以下字段,一定要位于drop_event之后,程序自上而下执行
          fields:
            - "@metadata"
            - "beat"
            - "kubernetes.labels"
            - "kubernetes.container"
            - "kubernetes.annotations"
            - "host"
            - "prospector"
            - "input"
            - "offset"
            - "stream"
            - "source"
    output.kafka:   // 输出到kafka
      hosts:
        - kafka:9092
      version: 2.0.0
      topic: 'beat-%{[service]}'        // topic名称取决于于pod定义的annotation.index
      partition.round_robin:
        reachable_only: false
    spool_size: 2048
    idle_timeout: 5s

需要额外注意的点:

  • 默认docker类型的日志收集去默认路径"/var/lib/docker",由于我们的docker工作目录为/data/lib/docker/,所以我们需要将template/daemonset.yaml中挂载目录修改一下

  • 区分topic是基于kubernetes annotaions中预定义的值,所以需要在应用的yaml中预先定义好该两项

启动

helm  install --name filebeat -f filebeat-settings.yaml filebeat

 

更新配置

helm upgrade filebeat -f filebeat-settings.yaml filebeat

 

停止服务

helm delete filebeat --purge

上一篇《容器日志收集ELK+Filebeat+Kafka》  下一篇《Kubernetes部署Kafka

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值