首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >腾讯云TKE-日志案例: 基于fluentbit、elasticsearch、kibana日志解决方案

腾讯云TKE-日志案例: 基于fluentbit、elasticsearch、kibana日志解决方案

原创
作者头像
朱瑞卿
发布于 2020-11-02 13:28:57
发布于 2020-11-02 13:28:57
2.2K0
举报

背景

本文介绍利用在腾讯云TKE应用市场中的三款软件 fluentbit,elasticsearch和kibana搭建一套适用于kubernetes环境的云原生一站式日志解决方案。

安装elasticsearch

如果用户已有elasticsearch集群,并且elasticsearch的网路与kubernetes集群网路互通,此步骤可略过。

  1. 单击左侧导航栏中的应用 > 应用市场,进入应用市场页面,点击“elasticsearch”。
image.png
image.png
  1. 点击“创建应用”,输入名称并选择地域、集群、namespace,点击“创建”。
image.png
image.png
  1. 在应用列表页面,点击上一步创建好的应用名,进入应用详情页面。
image.png
image.png
image.png
image.png

在上面的例子中,elasticsearch应用在kubernetes集群中的服务名称为“elasticsearch-master”

安装kibana

  1. 单击左侧导航栏中的应用 > 应用市场,进入应用市场页面,点击“kibana”。
image.png
image.png
  1. 点击“创建应用”,输入名称并选择地域、集群、namespace,点击“创建”。
image.png
image.png
  1. 在应用列表页面,点击上一步创建好的应用名,进入应用详情页面。
image.png
image.png
image.png
image.png
  1. 根据上一步安装的elasticsearch应用的服务名和端口,修改上图中的ConfigMap。
image.png
image.png
  1. 销毁重建kibana的Pod,使新配置生效。
  2. 修改kibana service的类型类型为“LoadBalancer”,等待绑定负载均衡器,并生成公网IP。
image.png
image.png
image.png
image.png

安装fluentbit

  1. 单击左侧导航栏中的应用 > 应用市场,进入应用市场页面,点击“fluentbit”。
image.png
image.png
  1. 点击“创建应用”,输入名称并选择地域、集群、namespace,点击“创建”。
image.png
image.png
  1. 在应用列表页面,点击上一步创建好的应用名,进入应用详情页面。
image.png
image.png
image.png
image.png

可以看到fluentbit是以DaemonSet的方式部署到集群的每个节点(Node)上;并且它的配置信息存储在一个ComfigMap中。

  1. 修改ConfigMap
代码语言:txt
AI代码解释
复制
data: 
  fluent-bit.conf: |
    [SERVICE]
        Flush         1
        Log_Level     info
        Daemon        off
        Parsers_File  parsers.conf
        HTTP_Server   On
        HTTP_Listen   0.0.0.0
        HTTP_Port     2020

    [INPUT]
        Name              tail
        Tag               kube.*
        Path              /var/log/containers/*.log  # 采集所有的容器日志
        Parser            docker
        DB                /var/log/flb_kube.db
        Mem_Buf_Limit     5MB
        Skip_Long_Lines   On
        Refresh_Interval  10

    [FILTER]
        Name                kubernetes
        Match               kube.*
        Kube_URL            https://kubernetes.default.svc:443
        Kube_CA_File        /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        Kube_Token_File     /var/run/secrets/kubernetes.io/serviceaccount/token
        Kube_Tag_Prefix     kube.var.log.containers.
        Merge_Log           On
        Merge_Log_Key       log_processed
        K8S-Logging.Parser  On
        K8S-Logging.Exclude Off

    [OUTPUT]
        Name            es
        Match           *
        Host            elasticsearch-master
        Port            9200
        Logstash_Format On
        Replace_Dots    On
        Retry_Limit     False

在上面的配置中:

INPUT部分表示采集所有Pod的日志。

如果想要采集指定Pod的日志,可以根据pod的日志文件名的格式(<podname><podnamespace><container_name>-<container_id>.log),通过设置文件通配符的方式实现,例如:

Path /var/log/containers/*_default_*-*.log # 采集default命名空间下的pod日志

Path /var/log/containers/nginx*_prod_*-*.log # 采集prod命名空间下的nginx日志

FILTER部分会在日志上添加容器相关的元信息,包括:

  • Pod Name
  • Pod ID
  • Container Name
  • Container ID
  • Labels
  • Annotations

OUTPUT部分指定了Elasticsearch的地址,其中Host和Port分别为之前配置的elasticsearch的服务名和端。

关于fluentbit的详细配置,请参考官方文档

  1. 销毁重建所有fluentbit的Pod,使新配置生效。
image.png
image.png
  1. 在浏览器中,访问“http://<kibana lb的公网IP>:443/status”,点击左侧导航栏“Discover”,可以看到容器的日志已经被采集到elasticsearch中。
image.png
image.png

总结

我们看到,通过腾讯云应用市场,只需要少量的操作和配置,就可以快速的搭建出一套纯云原生的kubernetes日志解决方案。这个方案足以应对一般的开发测试集群,以及小规模的生成集群对于日志能力的需求。

但这个方案存也在一些缺陷:

  • 后期运维成本较高——比如:需要手动管理fluentbit配置,需要时刻关注ES底层CBS的存储空间......
  • 某些功能缺失——比如:无法采集容器内的文件,无法处理containerd容器......
  • 没法应对大日志量或大规模集群——fluentbit采集以及ES接收日志的能力有限。

因而对于一定规模的生产环境,我们推荐您使用TKE基于CLS(腾讯云日志服务)的日志采集组件(https://cloud.tencent.com/document/product/614/17415 ) ,可以帮助您以极低的运维成本,应对超大规模、海量日志处理的需求;并且可以方便地集成到基于kubernetes的CICD流水线中,提升开发交付效率,保证业务持续高效运行。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
fluent-bit 按 pod 名生成不同索引
EFK 版本:es 7.12, fluent-bit 1.7.5, kibana 7.12
逝兮诚
2021/12/06
1.4K0
VictoriaLogs初体验
前面我们介绍了 VictoriaMetrics 发布了其日志解决方案 VictoriaLogs,只是简单介绍了其特性,但是并没有介绍其使用方法,本文我们就来体验下 VictoriaLogs。
我是阳明
2023/08/21
1.4K0
VictoriaLogs初体验
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
随着时间的积累,日志数据会越来越多,当你需要查看并分析庞杂的日志数据时,可通过 Filebeat+Kafka+Logstash+Elasticsearch 采集日志数据到Elasticsearch(简称ES)中,并通过 Kibana 进行可视化展示与分析。
高楼Zee
2021/09/23
2.5K1
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
Kubernetes-基于EFK进行统一的日志管理
通过应用和系统日志可以了解Kubernetes集群内所发生的事情,对于调试问题和监视集群活动来说日志非常有用。对于大部分的应用来说,都会具有某种日志机制。因此,大多数容器引擎同样被设计成支持某种日志机制。对于容器化应用程序来说,最简单和最易接受的日志记录方法是将日志内容写入到标准输出和标准错误流。 但是,容器引擎或运行时提供的本地功能通常不足以支撑完整的日志记录解决方案。例如,如果一个容器崩溃、一个Pod被驱逐、或者一个Node死亡,应用相关者可能仍然需要访问应用程序的日志。因此,日志应该具有独立于Node、Pod或者容器的单独存储和生命周期,这个概念被称为群集级日志记录。群集级日志记录需要一个独立的后端来存储、分析和查询日志。Kubernetes本身并没有为日志数据提供原生的存储解决方案,但可以将许多现有的日志记录解决方案集成到Kubernetes集群中。在Kubernetes中,有三个层次的日志:
菲宇
2019/06/12
1.4K0
Kubernetes-基于EFK进行统一的日志管理
Kubernetes中部署ELK Stack日志收集平台
ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称。市面上也被称为Elastic Stack。其中Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,可见Elasticsearch提供的搜索能力确实强大,市面上很多时候我们简称Elasticsearch为es。Logstash是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等)。Kibana可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。
没有故事的陈师傅
2021/07/21
1.9K6
Helm部署Filebeat + ELK
官方chart地址:https://github.com/elastic/helm-charts/tree/master/elasticsearch
院长技术
2021/02/19
2.8K0
Helm部署Filebeat + ELK
EFK日志平台部署
日志收集方案是采用 Elasticsearch、Fluentd、Filebeat 和 Kibana(EFK)技术栈。 Fluented主要用来收集k8s组件和docker容器日志,Filebeat主要用来收集应用日志,主要因为目前项目中应用日志并未全部通过stdout方式输出到docker日志驱动中,导致flunted收集日志并不全面,需要通过Filebeat来将应用日志收集到es中,再由kibana来展示。
mikelLam
2022/10/31
1.3K0
EFK日志平台部署
部署 Kubernetes 集群日志插件 Fluentd、Elasticsearch、Kibana
哎_小羊
2018/01/02
7.6K0
部署 Kubernetes 集群日志插件 Fluentd、Elasticsearch、Kibana
云原生架构下的日志平台方案
Ford, 云原生布道师,云原生实验室(CloudnativeLab.COM)创始人 专注于云计算领域数年,目前主要从事容器云平台的建设,推进各类基础设施服务的云原生化,乐于研发效能建设、产品驱动模式探索和敏捷高效的产品研发团队打造,ServiceMesh拥护者,持续交付、敏捷实践者。
云原生实验室
2020/12/08
2.7K0
在 Kubernetes 上搭建 EFK 日志收集系统
上节课和大家介绍了 Kubernetes 集群中的几种日志收集方案,Kubernetes 中比较流行的日志收集解决方案是 Elasticsearch、Fluentd 和 Kibana(EFK)技术栈,也是官方现在比较推荐的一种方案。
我是阳明
2020/06/13
5.4K0
在 Kubernetes 上搭建 EFK 日志收集系统
使用 EFKLK 搭建 Kubernetes 日志收集工具栈
前面大家介绍了 Kubernetes 集群中的几种日志收集方案,Kubernetes 中比较流行的日志收集解决方案是 Elasticsearch、Fluentd 和 Kibana(EFK)技术栈,也是官方现在比较推荐的一种方案。
CNCF
2021/05/07
2.2K0
使用 EFKLK 搭建 Kubernetes 日志收集工具栈
Kubernetes 集群日志监控 EFK 安装
Kubernetes 集群中会编排非常多的服务,各个服务不可能保证服务一定能稳定的运行,于是每个服务都会打印出各自的日志信息方便调试。由于服务的众多,每个服务挨个查看日志显然是一件非常复杂的事情,故而日志的统一收集、整理显得尤为重要。
高楼Zee
2021/03/16
1.8K0
Kubernetes实战之部署ELK Stack收集平台日志
ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称。市面上也被成为Elastic Stack。其中Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,可见Elasticsearch提供的搜索能力确实强大,市面上很多时候我们简称Elasticsearch为es。Logstash是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等)。Kibana可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。
没有故事的陈师傅
2019/12/11
5.8K0
kubernetes系列教程(十二)详解DaemonSet控制器
上章节中介绍了Deployment,ReplicaSet,ReplicationController等副本控制器的使用和场景,接下来介绍kubernetes系列教程控制器DaemonSet使用。
HappyLau谈云计算
2019/10/31
7.6K0
kubernetes系列教程(十二)详解DaemonSet控制器
TKE中部署EFK日志收集
通过DaemonSet在每一台Node节点上跑一个Filebeat或fluentd,然后通过挂载的形式将容器日志与该Pod关联,从而处理发送至后端存储;
蒋经纬
2020/06/19
6240
TKE上搭建EFK日志采集系统
需要创建一个SC,用来后续ES创建时候动态挂载PVC,在腾讯云中,如果挂载了卷,又起了多个pod,可以采用自动动态挂载PVC
聂伟星
2020/06/10
9370
如何将TKE/EKS集群事件日志持久化
腾讯云上的tke集群和eks集群的事件日志默认只会保留一个小时,有的时候,服务出现了问题,需要根据历史事件日志来进行排查下,因为历史事件日志只有1个小时,这样给我们排查带来了极大不便。腾讯云上默认是支持将集群的事件日志采集到cls,但是cls是需要收费的,而且很多人习惯用Elasticsearch来查询日志。 下面我们通过开源的eventrouter来将日志采集到Elasticsearch,然后通过kibana来查询事件日志。 eventrouter介绍说明:https://github.com/heptiolabs/eventrouter
聂伟星
2022/04/30
1.3K9
051.Kubernetes集群管理-日志管理
在Kubernetes集群环境中,一个完整的应用或服务都会涉及为数众多的组件运行,各组件所在的Node及实例数量都是可变的。日志子系统如果不做集中化管理,则会给系统的运维支撑造成很大的困难,因此建议在集群层面对日志进行统一收集和检索等工作。
木二
2020/04/13
7440
Elasticsearch+Filebeat+Kibana+Metricbeat)搭建K8s集群统一日志管理平台Demo
我所渴求的,無非是將心中脫穎語出的本性付諸生活,為何竟如此艱難呢 ------赫尔曼·黑塞《德米安》
山河已无恙
2023/01/30
1.3K0
《TKE学习》TKE服务中的日志采集 (九)
日志采集功能是容器服务为用户提供的集群内日志采集工具,可以将集群内服务或集群节点特定路径文件的日志发送至 Kafka、Elasticsearch或者腾讯云日志服务(CLS)。日志采集功能适用于需要对 Kubernetes 集群内服务日志进行存储和分析的用户。
baron
2019/11/27
2.1K0
《TKE学习》TKE服务中的日志采集 (九)
推荐阅读
相关推荐
fluent-bit 按 pod 名生成不同索引
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档