Helm Chart安装EFK并验证功能

这篇具有很好参考价值的文章主要介绍了Helm Chart安装EFK并验证功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Helm Chart安装EFK并验证功能

本文介绍如何通过Helm Chart方式快速在Kubernetes环境中搭建EFK(Elasticsearch,Filebeat,Kibana)V8.5.1 日志收集系统并验证其功能。如果仅对安装有兴趣请直接食用“EFK(Elasticsearch,Filebeat,Kibana)V8.5.1 安装”章节。

日志收集系统背景需求

随着现在各种软件系统的复杂度越来越高,特别是部署到云上之后,再想登录各个节点上查看各个模块的log,基本是不可行了。因为不仅效率低下,而且有时由于安全性,不可能让工程师直接访问各个物理节点。而且现在大规模的软件系统基本都采用集群的部署方式,意味着对每个service,会启动多个完全一样的POD对外提供服务,每个container都会产生自己的log,仅从产生的log来看,你根本不知道是哪个POD产生的,这样对查看分布式的日志更加困难。

所以在云时代,需要一个收集并分析log的解决方案。首先需要将分布在各个角落的log收集到一个集中的地方,方便查看。

几种主流的方案对比

  • ELK(Elasticsearch,Logstash,Kibana)
  • EFK(Elasticsearch,Filebeat,Kibana)
  • EFK(Elasticsearch,Fluentd,Kibana)

这几种日志收集系统的优劣及适用场景网上有很多相关的介绍,我这里只做简单的比较。
a.ELK(Elasticsearch,Logstash,Kibana)对比 EFK(Elasticsearch,Fluentd,Kibana)

架构和适用性:
EFK:EFK架构是以Fluentd为中心的,通过Fluentd收集和传输日志数据到Elasticsearch,然后使用Kibana进行可视化和分析。EFK适用于复杂的日志收集和分析需求,尤其擅长处理大规模的日志数据。
ELK:ELK架构是以Logstash为中心的,通过Logstash收集、转换和传输日志数据到Elasticsearch,然后使用Kibana进行可视化和分析。ELK适用于中等规模的日志收集和分析需求,可以处理多种来源的数据。

组件和技术:
EFK:EFK代表Elasticsearch、Fluentd和Kibana。Elasticsearch是一个分布式搜索和分析引擎,用于存储和索引日志数据。Fluentd是一个开源的日志收集和传输工具,用于从不同来源收集和传输日志数据到Elasticsearch。Kibana是一个可视化工具,用于搜索、分析和可视化存储在Elasticsearch中的数据。
ELK:ELK代表Elasticsearch、Logstash和Kibana。Elasticsearch和Kibana的作用与EFK中相同。Logstash是一个开源的数据收集、转换和传输工具,用于收集、过滤和转换各种来源的数据,并将其发送到Elasticsearch。

配置和插件生态系统:
EFK:Fluentd拥有广泛的插件生态系统,可以方便地集成各种数据源和目标,并进行自定义插件开发。它的配置相对复杂,但也非常灵活。
ELK:Logstash也具有插件生态系统,但相对于Fluentd来说规模较小。Logstash的配置相对简单,主要通过配置文件进行配置。

性能和扩展性:
EFK:由于使用了Fluentd作为数据传输工具,EFK相对于ELK来说更轻量级、高性能和可扩展。Fluentd采用缓冲区机制来处理和缓存日志事件,具有更高的吞吐量和可扩展性。
ELK:由于使用了Logstash作为数据传输工具,ELK在处理大规模数据时可能会占用更多的资源,并且可能会对性能产生一定影响。但对于中等规模的日志收集和分析需求,ELK仍然能够提供良好的性能。

总结来说,当前EFK(Elasticsearch,Fluentd,Kibana)的性能&应用广泛度要高于ELK(Elasticsearch,Logstash,Kibana)

b.ELK(Elasticsearch,Filebeat,Kibana)对比 EFK(Elasticsearch,Fluentd,Kibana)

Fluentd 和 Filebeat 都是常用于日志收集的开源工具,它们可以帮助我们收集、处理和转发大量的日志数据。虽然它们都具有类似的功能,但是它们在设计理念和实现细节上有很大的不同。

Fluentd 是一个日志收集和聚合的工具,由 Treasure Data 公司开发和维护。它支持多种数据输入和输出,并提供了丰富的插件和过滤器来处理和转换数据。Fluentd 通过流水线的方式处理日志数据,可以灵活地构建复杂的数据处理流程。Fluentd 还提供了内置的缓存机制,可以减少数据丢失的风险。同时,Fluentd 是一个轻量级的工具,对系统资源的占用较小。

Filebeat 是 Elastic 公司开源的一款轻量级日志数据采集器,旨在收集、解析和转发各种类型的日志数据。它支持多种数据源,并且能够自动发现新的日志文件。Filebeat 具有较低的资源消耗,并且支持高可用性和故障转移。Filebeat 可以将日志数据转发到多个输出目的地,如 Elasticsearch、Logstash 或 Kafka 等。

两者在设计理念上的区别主要在于 Fluentd 更侧重于数据处理和转换,而 Filebeat 更侧重于数据采集和传输。因此,在选择使用哪种工具时,需要根据具体的场景和需求来考虑。

总体来说,Fluentd 更适用于需要进行复杂数据处理和转换的场景,而 Filebeat 则更适用于简单的日志数据采集和转发场景。如果你需要一个轻量级的工具来处理海量日志数据,Fluentd 可能会更合适;如果你只需要一个简单的日志采集器来快速收集和转发日志数据,那么 Filebeat 可能会更适合你的需求。

1. EFK(Elasticsearch,Filebeat,Kibana)V8.5.1 安装

1.1 前提条件

a. Helm版本>=v3.2.0,其中 Helm 的安装请参考:Helm Install

b.需要有默认的StorageClass,具体准备流程参考:Kubernetes安装StorageClass

c.(非必须)建议有默认的IngressClasses,具体准备流程参考:Kubernetes安装IngressClass 其中第4步“设置为默认Ingress Class”是必须的,同时Ingress的NodePort端口最好设置为80、443

1.2 安装流程

a.创建安装目录

#切换到当前用户根目录并建立logging文件夹
cd ~ && mkdir logging

cd logging

b.创建logging名字空间,独立的名字空间有助于资源管理

kubectl create ns logging

c.添加elastic官方repo仓库

helm repo add elastic https://helm.elastic.co

d.安装elasticsearch
如果需要做某些定制化需求请参考官方 values.yaml 文件,其中每个参数都会有详细描述: 官网参考

helm pull elastic/elasticsearch --version 8.5.1

tar -xvf elasticsearch-8.5.1.tgz

cd elasticsearch

#(非必要)以下的操作主要是修改elasticsearch服务暴露方式以及ingress设置
vi values.yaml
#搜索ClusterIP关键字
service:
  enabled: true
  labels: {}
  labelsHeadless: {}
  type: ClusterIP #将此处改为NodePort
  # Consider that all endpoints are considered "ready" even if the Pods themselves are not
  # https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/#ServiceSpec
  publishNotReadyAddresses: false
  nodePort: ""
  annotations: {}
  httpPortName: http
  transportPortName: transport
  loadBalancerIP: ""
  loadBalancerSourceRanges: []
  externalTrafficPolicy: ""
#搜索ingress关键字
ingress:
  enabled: false #改为true
  annotations: {}
  # kubernetes.io/ingress.class: nginx #取消注释
  # kubernetes.io/tls-acme: "true" #取消注释
  className: "nginx"
  pathtype: ImplementationSpecific
  hosts:
    - host: chart-example.local
      paths:
        - path: /

执行安装命令

cd ~/logging

helm install elasticsearch ./elasticsearch -n logging

#成功后看到如下提示
NAME: elasticsearch
LAST DEPLOYED: Wed May 31 02:37:03 2023
NAMESPACE: logging
STATUS: deployed
REVISION: 1
NOTES:
1. Watch all cluster members come up.
  $ kubectl get pods --namespace=logging -l app=elasticsearch-master -w
2. Retrieve elastic user's password.
  $ kubectl get secrets --namespace=logging elasticsearch-master-credentials -ojsonpath='{.data.password}' | base64 -d
3. Test cluster health using Helm test.
  $ helm --namespace=logging test elasticsearch

#通过如下命令检测&确保Pod正确运行
kubectl get pods --namespace=logging -l app=elasticsearch-master -w
NAME                     READY   STATUS    RESTARTS   AGE
elasticsearch-master-0   1/1     Running   0          3h10m
elasticsearch-master-1   1/1     Running   0          3h10m
elasticsearch-master-2   1/1     Running   0          3h10m

e.安装Filebeat
官网参考

cd ~/logging

helm pull elastic/filebeat --version 8.5.1

tar -xvf filebeat-8.5.1.tgz
执行安装命令
helm install filebeat ./filebeat -n logging

#成功后看到如下提示
NAME: filebeat
LAST DEPLOYED: Wed May 31 02:55:52 2023
NAMESPACE: logging
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Watch all containers come up.
  $ kubectl get pods --namespace=logging -l app=filebeat-filebeat -w

#通过如下命令检测&确保Pod正确运行
kubectl get pods --namespace=logging -l app=filebeat-filebeat -w
NAME                      READY   STATUS    RESTARTS   AGE
filebeat-filebeat-asdn6   1/1     Running   0          3h6m
filebeat-filebeat-sdab4   1/1     Running   0          3h6m
filebeat-filebeat-asbvg   1/1     Running   0          175m

f.安装kibana
官网参考

cd ~/logging

helm pull elastic/kibana --version 8.5.1

tar -xvf kibana-8.5.1.tgz

cd kibana

vi values.yaml
#对外暴露方式设置为NodePort,搜索ClusterIP关键字
service:
  type: ClusterIP #此处修改为NodePort
  loadBalancerIP: ""
  port: 5601
  nodePort: ""
  labels: {}
  annotations: {}
  # cloud.google.com/load-balancer-type: "Internal"
  # service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
  # service.beta.kubernetes.io/azure-load-balancer-internal: "true"
  # service.beta.kubernetes.io/openstack-internal-load-balancer: "true"
  # service.beta.kubernetes.io/cce-load-balancer-internal-vpc: "true"
  loadBalancerSourceRanges: []
  # 0.0.0.0/0
  httpPortName: http

#(非必须)设置ingress地址,搜索ingress关键字
ingress:
  enabled: false #修改为true
  className: "nginx"
  pathtype: ImplementationSpecific
  annotations: {}
  # kubernetes.io/ingress.class: nginx #取消注释
  # kubernetes.io/tls-acme: "true" #取消注释
  hosts:
    - host: kibana-example.local
      paths:
        - path: /

执行安装命令

cd cd ~/logging

helm install kibana ./kibana -n logging

#成功后看到如下提示
NAME: kibana
LAST DEPLOYED: Wed May 31 03:16:37 2023
NAMESPACE: logging
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Watch all containers come up.
  $ kubectl get pods --namespace=logging -l release=kibana -w
2. Retrieve the elastic user's password.
  $ kubectl get secrets --namespace=logging elasticsearch-master-credentials -ojsonpath='{.data.password}' | base64 -d
3. Retrieve the kibana service account token.
  $ kubectl get secrets --namespace=logging kibana-kibana-es-token -ojsonpath='{.data.token}' | base64 -d

#通过如下命令检测&确保Pod正确运行
kubectl get pods --namespace=logging -l release=kibana -w
NAME                             READY   STATUS    RESTARTS   AGE
kibana-kibana-234897xx1c-h38ncj   1/1     Running   0          177m

2. 功能验证

2.1 图形化界面登陆

a.获取 kibana service NodePort 端口号

kubectl get svc -n logging | grep kibana
kibana-kibana                   NodePort    172.16.67.29     <none>        5601:30239/TCP                  3h3m

看到端口号为19812

b.获取 kibana 界面登录密码
在通过Helm Chart成功安装kibana后可以看到提示:
Retrieve the elastic user’s password.
$ kubectl get secrets --namespace=logging elasticsearch-master-credentials -ojsonpath=‘{.data.password}’ | base64 -d

kubectl get secrets --namespace=logging elasticsearch-master-credentials -ojsonpath='{.data.password}' | base64 -d
54iEaxD2AFE838H

c. 图形话界面登录,默认的用户名为“elastic”
Helm Chart安装EFK并验证功能
进入 Index Management 中的 Data Streams 中可以看到 filebeat-8.5.1 已被列为数据索引项目
Helm Chart安装EFK并验证功能

2.2 日志收集验证

a.创建一个生产日志的Pod

cd ~/logging

vi test-logging-pod.yaml
#写入如下内容
apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
  - name: count
    image: busybox
    args: [/bin/sh, -c,
            'i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done']

b.界面中查看 Observability->Logs->Stream 栏位下
Helm Chart安装EFK并验证功能文章来源地址https://www.toymoban.com/news/detail-490609.html

到了这里,关于Helm Chart安装EFK并验证功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • EFK 部署(一次成功)并且验证测试

    在创建 Elasticsearch 集群之前,我们先创建一个命名空间,我们将在其中安装所有日志相关的资源对象。 新建一个namespace-logging.yaml 文件 然后通过 kubectl 创建该资源清单,创建一个名为 es的 namespace 接下来可以部署 EFK 相关组件,首先开始部署一个3节点的 Elasticsearch 集群。 一个

    2024年02月04日
    浏览(13)
  • k8s--基础--24.3--efk--安装efk组件

    k8s--基础--24.3--efk--安装efk组件

    下面的步骤在k8s集群的master1节点操作 创建一个名称空间,将EFK组件安装到该名称空间中。 名称空间:kube-logging 内容 通过上面步骤已经创建了一个名称空间kube-logging,在这个名称空间下去安装日志收集组件efk 我们将部署一个3节点的Elasticsearch集群,我们使用3个Elasticsearch P

    2024年02月14日
    浏览(14)
  • docker安装efk

    [root@elk elfk]# cat docker-compose.yml version: \\\'3\\\' services:   elasticsearch:     image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2     container_name: elasticsearch     volumes:       - ./elasticsearch:/usr/share/elasticsearch     ports:       - \\\"9200:9200\\\"       - \\\"9300:9300\\\"     restart: always   kibana:     image: docke

    2024年04月29日
    浏览(6)
  • 容器化安装环境EFK搭建

    容器化安装环境EFK搭建

    前置配置 第一步:在宿主机上执行echo “net.ipv4.ip_forward=1” /usr/lib/sysctl.d/00-system.conf 2.第二步:重启network和docker服务 [root@localhost /]# systemctl restart network systemctl restart docker 安装ElasticSearch 1.下载镜像 2.创建挂载的目录 3.创建容器并启动 chmod -R 777 /mydata/elasticsearch/data /mydata/ela

    2024年02月15日
    浏览(12)
  • CentOS yum 安装 EFK 7.17

    软件 说明 elasticsearch 分布式、高扩展、高实时的搜索与数据分析引擎 kibana 一个基于浏览器的Elasticsearch分析和搜索仪表板 filebeat 收集文件数据 文档 文档链接 elasticsearch 7.17 yum 文档 https://www.elastic.co/guide/en/elasticsearch/reference/7.17/rpm.html kibana 7.17 yum 文档 https://www.elastic.co/guide

    2024年02月02日
    浏览(10)
  • 【云原生】【k8s】Kubernetes+EFK构建日志分析安装部署

    【云原生】【k8s】Kubernetes+EFK构建日志分析安装部署

    目录 EFK安装部署 一、环境准备(所有主机) 1、主机初始化配置 2、配置主机名并绑定hosts,不同主机名称不同 3、主机配置初始化 4、部署docker环境 二、部署kubernetes集群 1、组件介绍 2、配置阿里云yum源 3、安装kubelet kubeadm kubectl 4、配置init-config.yaml init-config.yaml配置 5、安装

    2024年02月12日
    浏览(18)
  • EFK实战Kibana之查询语法、导出CSV文件、安装插件(持续更新中)

    EFK实战Kibana之查询语法、导出CSV文件、安装插件(持续更新中)

    EFK,是ELK即ElasticSearch + Logstash + Kibana的升级版,把Logstash替换成Fluentd。 选择日志索引后 搜索,可以简单的使用 Lucene通用的语法,或使用基于JSON格式QueryDSL(DSL:领域特定语言)来构造搜索各种请求(更加灵活,方便构造复杂查询)。 搜索ERROR级别的日志: level: error 搜索某

    2024年02月15日
    浏览(12)
  • k8s学习-第4部分Helm(Helm安装MySQL集群)

    Helm简介 Helm 是一个 Kubernetes 应用的包管理工具,类似于 Ubuntu 的 APT 和 CentOS 中的 YUM。 Helm使用chart 来封装kubernetes应用的 YAML 文件,我们只需要设置自己的参数,就可以实现自动化的快速部署应用。 三大概念 Chart 代表着 Helm 包。 它包含运行应用程序需要的所有资源定义和依

    2024年02月08日
    浏览(46)
  • helm安装

    helm安装

    Helm 是 Kubernetes 的包管理器,类似于yum是Redhat/Centos包管理工具,利用Helm可以简化一些软件的安装 官网 GitHub项目 官网给我们提供了很多安装方法,包括二进制文件安装,脚本安装和yum/apt安装等等,但是实际上因为一些众所周知的原因,下载其实是一件比较困难的事情 脚本安

    2024年02月04日
    浏览(9)
  • k8s helm安装使用

    k8s helm安装使用

    1.前言 Helm 是一个 Kubernetes 包管理工具,它的作用是简化 Kubernetes 应用程序的部署和管理。Helm 允许您将 Kubernetes 应用程序打包为 chart,chart 是一组预定义的 Kubernetes 对象模板,包括 Deployment、Service、Ingress 等。使用 Helm,您可以轻松地将 chart 安装到 Kubernetes 集群中,并在需要

    2024年02月13日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包