前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云TKE-日志案例: 基于fluentbit、elasticsearch、kibana日志解决方案

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

原创
作者头像
朱瑞卿
发布2020-11-02 21:28:57
2K0
发布2020-11-02 21:28:57
举报
文章被收录于专栏:腾讯云容器专家服务的专栏

背景

本文介绍利用在腾讯云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
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 安装elasticsearch
  • 安装kibana
  • 安装fluentbit
  • 总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档