码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • k8s笔记22--使用fluent-bit采集集群日志


    k8s笔记22--使用fluent-bit采集集群日志

    • 1 介绍
    • 2 部署 & 测试
      • 2.1 获取安装 fluent-bit
      • 2.2 直接采集日志到 es 集群
      • 2.3 直接采集日志到 kafka 集群
    • 3 注意事项
    • 4 说明

    1 介绍

    k8s笔记11–基于fluentd-kafka-es的日志收集方案 介绍了使用 fluentd 采集 k8s 集群日志的方法,但 fluentd 使用 CPU & Memory 效率相对较低,因此考虑采用更加轻量级的 fluent-bit 采集集群日志。本文介绍 fluent-bit 的安装,以及写入日志到 es 和 kafka 的具体方法。

    2 部署 & 测试

    2.1 获取安装 fluent-bit

    helm repo add fluent https://fluent.github.io/helm-charts
    helm fetch fluent/fluent-bit
    tar -zxvf fluent-bit-0.20.5.tgz
    解压后可以修改默认的 values.yaml 文件, 按需输出到 es 或者 kafka 集群
    
    • 1
    • 2
    • 3
    • 4

    2.2 直接采集日志到 es 集群

    2.1 copy values.yaml 文件为 values-dev-es.yaml
    
    2.2 修改配置文件 values-dev-es.yaml 输出到 es 集群
    在 output 中配置es信息,如下所示:
      ## https://docs.fluentbit.io/manual/pipeline/outputs
      outputs: |
        [OUTPUT]
            Name es
            Match kube.*
            Host 192.xx.xx.71
            Port 9200
            Type _doc
            HTTP_User your_es_user
            HTTP_Passwd your_es_pwd
            Logstash_Format Off
            Retry_Limit False
            Index fluent-bit
    
    2.3 部署到集群
    helm -n lens-metrics upgrade --install fluent-bit fluent/fluent-bit -f values-dev-es.yaml
    
    2.4 查看fluent-bit 相关信息
    xghome:~$ kubectl -n lens-metrics get ds|grep fluent-bit
    fluent-bit      1         1         1       1            1           <none>          5d4h
    xghome:~$ kubectl -n lens-metrics get cm|grep fluent-bit
    fluent-bit                 2      5d4h
    xghome:~$ helm -n lens-metrics list
    NAME      	NAMESPACE   	REVISION	UPDATED                                	STATUS  	CHART            	APP VERSION
    fluent-bit	lens-metrics	6       	2022-08-16 14:23:55.372423789 +0800 CST	deployed	fluent-bit-0.20.5	1.9.7   
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    2.5 测试
    服务部署完成后,过一段时间就可以在 es 中看到采集的日志,如下所示:
    在这里插入图片描述

    2.3 直接采集日志到 kafka 集群

    3.1 copy values.yaml 文件为 values-dev-kafka.yaml
    
    3.2 修改配置文件 values-dev-kafka.yaml 输出到 kafka 集群
    在 output 中配置es信息,如下所示:
      ## https://docs.fluentbit.io/manual/pipeline/outputs
      outputs: |
        [OUTPUT]
            Name        kafka
            Match       *
            Brokers     192.168.2.11:9092
            Topics      k8s-log
    
    
    3.3 部署到集群
    helm -n lens-metrics upgrade --install fluent-bit fluent/fluent-bit -f values-dev-kafka.yaml
    
    3.4 查看 fluent-bit 信息
    xghome:~$ kubectl -n lens-metrics get ds|grep fluent-bit
    fluent-bit      1         1         0       1            0           <none>          28s
    xghome:~$ kubectl -n lens-metrics get cm|grep fluent-bit
    fluent-bit                 2      38s
    xghome:~$ helm -n lens-metrics list
    NAME      	NAMESPACE   	REVISION	UPDATED                                	STATUS  	CHART            	APP VERSION
    fluent-bit	lens-metrics	1       	2022-08-21 17:49:01.985449435 +0800 CST	deployed	fluent-bit-0.20.5	1.9.7
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    3.5 查看 kafka 中 topic 信息
    服务部署完成后,过一段时间就可以在 kafka 中看到采集的日志,如下所示:
    在这里插入图片描述
    当日志采集到 kafka 集群后,我们可以使用 logstash 或者 gohangout 将日志进一步写入到es 集群。具体可以参考如下博文:
    elk笔记24–用gohangout替代logstash消费日志
    elk笔记5.1–logstash使用

    3 注意事项

    1. 若直接向 es 写入数据,需要设置 Logstash_Format Off ,否则会自动生成 logstash-2022.08.16 格式的索引

    2. 默认会采集很多不必要的pod 字段,因此需要 filter,例如 Labels Off 和 Annotations Off 会去掉Label 和 Annotation 信息, 更多内容可以参考 docs.fluentbit.io/manual/pipeline/filters/kubernetes

    3. 使用DaemonSet 部署的agent 默认不会部署在有污点的节点上,例如master节点和用户加污点的节点。为了让这类节点能正常部署上agent,需要在 DaemonSet 中加如下参数(允许任何污点):

      spec:
        template:
          spec:
            tolerations:
              - operator: Exists
      
      • 1
      • 2
      • 3
      • 4
      • 5
    4. fluent-bit 添加字段
      如果需要加入字段,可以通过 FILTER 的modify 模块来添加字段,例如给不同的集群加上对应的 cluster 信息,那么可以用如下方式

      [FILTER]
          Name modify
          Match kube.*
          Add cluster cbbfe1db71b324387ab4fc47d4f208301
      
      • 1
      • 2
      • 3
      • 4

      加入成功后 kafka 里面的数据如下:
      在这里插入图片描述

    5. fluent-bit 过滤掉指定命名空间日志
      如果需要过滤掉某些命名空间日志,只需要在INPUT中增加 Exclude_Path即可,如下过滤掉 monitoring 和 kube-system 命名空间的日志

        inputs: |
          [INPUT]
              Name tail
              Path /var/log/containers/*.log
              Exclude_Path /var/log/containers/*_monitoring_*.log,/var/log/containers/*_kube-system_*.log
              multiline.parser docker, cri
              Tag kube.*
              Mem_Buf_Limit 50MB
              Skip_Long_Lines On
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9

    4 说明

    软件环境:
    elk 7.15.2
    kafka 7.15.2
    k8s 1.23.6
    fluent-bit 0.20.5
    参考文档:
    fluent-bit 官方文档 installation/Kubernetes
    fluent-bit 官方文档 outputs/elasticsearch
    elk笔记24–用gohangout替代logstash消费日志
    elk笔记5.1–logstash使用
    k8s笔记11–基于fluentd-kafka-es的日志收集方案

  • 相关阅读:
    《安卓逆向》Magisk的编译踩坑记录-安装方法-分享魔改后的Magisk过root检测方法
    03 | 更换ubuntu 的内核
    【C++编程语言】之STL常用算法之 排序算法 sort()函数 random_shuffle()函数 merge()函数 reverse()函数
    [ubuntu]OpenFOAM国内源码满速下载地址
    作为资深Mac用户,那些相见恨晚的软件
    如何部署 Git 实现多人协同开发
    JavaWeb 初始cookie与session
    【免费】两阶段鲁棒优化matlab实现——C&CG和benders
    请问Graph Kernel Fusion(图算融合)在mindspore1.7.0下会生成融合后的mindIR的.dot文件吗
    mysql 常见锁的类型
  • 原文地址:https://blog.csdn.net/u011127242/article/details/126452828
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号