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 集群

2.2 直接采集日志到 es 集群

2.1 copy values.yaml 文件为 values-dev-es.yaml2.2 修改配置文件 values-dev-es.yaml 输出到 es 集群
在 output 中配置es信息,如下所示:## https://docs.fluentbit.io/manual/pipeline/outputsoutputs: |[OUTPUT]Name esMatch kube.*Host 192.xx.xx.71Port 9200Type _docHTTP_User your_es_userHTTP_Passwd your_es_pwdLogstash_Format OffRetry_Limit FalseIndex fluent-bit2.3 部署到集群
helm -n lens-metrics upgrade --install fluent-bit fluent/fluent-bit -f values-dev-es.yaml2.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

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

2.3 直接采集日志到 kafka 集群

3.1 copy values.yaml 文件为 values-dev-kafka.yaml3.2 修改配置文件 values-dev-kafka.yaml 输出到 kafka 集群
在 output 中配置es信息,如下所示:## https://docs.fluentbit.io/manual/pipeline/outputsoutputs: |[OUTPUT]Name        kafkaMatch       *Brokers     192.168.2.11:9092Topics      k8s-log3.3 部署到集群
helm -n lens-metrics upgrade --install fluent-bit fluent/fluent-bit -f values-dev-kafka.yaml3.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

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
    
  4. fluent-bit 添加字段
    如果需要加入字段,可以通过 FILTER 的modify 模块来添加字段,例如给不同的集群加上对应的 cluster 信息,那么可以用如下方式

    [FILTER]Name modifyMatch kube.*Add cluster cbbfe1db71b324387ab4fc47d4f208301
    

    加入成功后 kafka 里面的数据如下:

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

      inputs: |[INPUT]Name tailPath /var/log/containers/*.logExclude_Path /var/log/containers/*_monitoring_*.log,/var/log/containers/*_kube-system_*.logmultiline.parser docker, criTag kube.*Mem_Buf_Limit 50MBSkip_Long_Lines On
    

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的日志收集方案

k8s笔记22--使用fluent-bit采集集群日志相关推荐

  1. 最新版Kubernetes(k8s)-v1.22.3版本高可用集群

    目录 一.环境准备 二.安装Docker 三.配置环境变量 四.所有master节点安装keepalived和haproxy服务 五.部署集群 六.部署k8s的dashboard 本文采用的是etcd ...

  2. 【Kubernetes】K8s笔记(十一):Ingress 集群进出流量总管

  3. k8s:概念以及搭建高可用集群

    一.k8s概念和架构 1.k8s概述 k8s是谷歌在2014年开源的容器化集群管理系统 使用k8s进行容器化应用部署 使用k8s利于应用扩展 k8s目标实施让容器化应用程序更加简洁高效 2.特性 (1 ...

  4. Kubernetes集群日志详解

    服务器和应用程序日志记录是开发人员.运维人员和安全团队了解应用程序在其生产环境中运行状态的重要工具.日志记录使运维人员能够确定应用程序和所需组件是否运行平稳,并检测是否发生了异常情况,以便他们能够对这 ...

  5. OpenShift 4 - 配置OpenShift集群日志环境EFK

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.6环境中验证 文章目录 安装Elastic Search Operator 安装Cluster Lo ...

  6. 12c集群日志位置_关于Oracle 12c的集群监控(CHM)

    正常情况下,我们有很多工具来监控oracle集群,但是Oracle更建议使用OEM来监视Oracle集群的日常运维工作,使用Cluster Health Monitor (CHM)来监控完整的技术架构 ...

  7. 12c集群日志位置_Oracle 19C RAC 集群日志位置变化

    作者 | JiekeXu 来源 | JiekeXu之路(ID: JiekeXu_IT) 转载请联系授权 | (微信ID:xxq1426321293) 大家好,我是 JiekeXu,很高兴又和大家见面了 ...

  8. ORACLE集群日志收集,【RAC】Oracle RAC集群环境下日志文件结构

    在Oracle RAC环境中,对集群中的日志的定期检查是必不可少的.通过查看集群日志,可以早期定位集群环境中出现的问题,以便将问题消灭在萌芽状态.简单介绍一下有关Oracle集群环境中日志的结构,方便 ...

  9. oracle数据库报300006,Oracle归档日志所在目录时间不对Oracle集群日志时间显示错误...

    Oracle归档日志所在目录时间不对&&Oracle集群日志时间显示错误 Oracle归档日志所在目录时间不对&&Oracle集群日志时间显示错误 前言 这个问题在18 ...

最新文章

  1. 一个资深技术人的转型之路
  2. 网络风行者(KSpider)的规则体系结构
  3. 【转载】FckEditor 2.6.3 for Java 2.4 配置
  4. 企业组网安全如何保障?SDWAN提供怎样的安全服务?
  5. 【论文解读】通过知识蒸馏促进轻量级深度估计
  6. 卷积Strassen算法
  7. BZOJ 3231: [Sdoi2008]递归数列 (JZYZOJ 1353) 矩阵快速幂
  8. linux下cat命令详解
  9. Python中list(列表)、tuple(元组)、dict(字典)的基本操作快速入门
  10. docker安装redis,使用jedis轻松操作redis
  11. .NET开发人员应该下载的十个必备工具(1)
  12. 阿里云ECS云服务器通过SAP HANA认证 海量数据处理技术助力企业数字化转型
  13. wps表格宏被禁用如何解禁_宏被禁用怎么办?excel/word宏已被禁用解决方法
  14. Android深入源码分析理解Aidl整体调用流程(雷惊风)
  15. xmind 8破解方法
  16. idea使用docker-mave插件打包镜像并部署到harbor私服仓库
  17. 通过Hook进行游戏的全局加速
  18. 电脑怎么图片转文字?建议收藏这几个方法
  19. 航顺HK32F030MF4P6 RST作GPIO SWCLK作EXTI5 SWDIO作ADC_AIN0
  20. 如何在Word中创建和打印标签

热门文章

  1. 《乔布斯传》英文原著重点词汇笔记(十一)【 chapter nine】
  2. Macbook电池健康管理工具—AlDente
  3. 8910DM:FOTA 升级指导
  4. c语言共用体类型变量在程序执行期间,2003年10月甘肃省高等教育自学考试C语言程序设计试卷...
  5. 多源数据坐标转换软件(CoordTrans)
  6. 百度云HTML5倍速播放视频方法(Microsoft Edge网页播放)
  7. SAP 针式打印机纸型设置
  8. 卡尔曼滤波 - 匀变速直线运动
  9. 空间(虚拟主机)与服务器的区别
  10. linux在grub命令行窗口引导windows