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日
    浏览(40)
  • k8s--基础--24.3--efk--安装efk组件

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

    2024年02月14日
    浏览(40)
  • 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日
    浏览(23)
  • 容器化安装环境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日
    浏览(33)
  • 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日
    浏览(32)
  • 【云原生】【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日
    浏览(36)
  • EFK实战Kibana之查询语法、导出CSV文件、安装插件(持续更新中)

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

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

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

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

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

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

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

    2024年02月13日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包