首页 > 其他分享 >在K8S中,如何使用 EFK 实现日志的统一管理?

在K8S中,如何使用 EFK 实现日志的统一管理?

时间:2024-03-02 19:22:15浏览次数:23  
标签:Fluentd name Kibana EFK Elasticsearch elasticsearch 日志 K8S

在Kubernetes(K8s)中,EFK(Elasticsearch, Fluentd, Kibana)是一种常见的日志统一管理方案。EFK堆栈允许你收集、存储、搜索、分析和可视化容器化应用程序的日志。下面是如何在Kubernetes中使用EFK实现日志统一管理的详细步骤:

1. 部署Elasticsearch

Elasticsearch是一个分布式、RESTful风格的搜索和分析引擎,能够解决越来越多用例的查询语言,它通常用于日志和事件数据分析。

首先,你需要在Kubernetes集群中部署Elasticsearch。这可以通过使用官方的Elasticsearch Helm chart或自定义YAML配置文件来完成。确保你的Elasticsearch集群有足够的资源,并且已经正确配置以满足你的日志存储和查询需求。

2. 部署Fluentd

Fluentd是一个开源的数据收集器,用于统一日志管理。在Kubernetes中,Fluentd通常作为DaemonSet运行,在每个节点上收集容器日志。

部署Fluentd涉及到创建一个DaemonSet资源对象,该对象会在每个节点上运行一个Fluentd实例。Fluentd的配置文件定义了日志的来源、过滤和处理方式,以及日志发送到Elasticsearch的方式。

下面是一个Fluentd的DaemonSet示例配置:

apiVersion: apps/v1  
kind: DaemonSet  
metadata:  
  name: fluentd-elasticsearch  
  namespace: kube-system  
  labels:  
    k8s-app: fluentd-logging  
spec:  
  selector:  
    matchLabels:  
      name: fluentd-elasticsearch  
  template:  
    metadata:  
      labels:  
        name: fluentd-elasticsearch  
    spec:  
      containers:  
      - name: fluentd-elasticsearch  
        image: fluent/fluentd-kubernetes-daemonset:v1.11-debian-elasticsearch-1.0  
        env:  
          - name:  FLUENTD_ELASTICSEARCH_HOST  
            value: "elasticsearch-master.kube-system.svc:9200"  
          - name:  FLUENTD_ELASTICSEARCH_SCHEME  
            value: "http"  
        volumeMounts:  
        - name: varlog  
          mountPath: /var/log  
        - name: varlibdockercontainers  
          mountPath: /var/lib/docker/containers  
          readOnly: true  
      terminationGracePeriodSeconds: 30  
      volumes:  
      - name: varlog  
        hostPath:  
          path: /var/log  
      - name: varlibdockercontainers  
        hostPath:  
          path: /var/lib/docker/containers

在上面的配置中,Fluentd容器被配置为从主机的/var/log/var/lib/docker/containers路径收集日志,并将它们发送到Elasticsearch集群。

3. 部署Kibana

Kibana是一个Web应用程序,用于搜索、查看和交互存储在Elasticsearch索引中的日志数据。

部署Kibana可以通过使用官方的Kibana Helm chart或自定义YAML配置文件来完成。Kibana的配置通常很简单,主要是指定它要连接的Elasticsearch实例。

下面是一个Kibana的Deployment示例配置:

apiVersion: apps/v1  
kind: Deployment  
metadata:  
  name: kibana  
  namespace: kube-system  
spec:  
  replicas: 1  
  selector:  
    matchLabels:  
      app: kibana  
  template:  
    metadata:  
      labels:  
        app: kibana  
    spec:  
      containers:  
      - name: kibana  
        image: docker.elastic.co/kibana/kibana:7.10.0  
        ports:  
        - containerPort: 5601  
        env:  
        - name: ELASTICSEARCH_URL  
          value: http://elasticsearch-master.kube-system.svc:9200  
        - name: ELASTICSEARCH_HOSTS  
          value: http://elasticsearch-master.kube-system.svc:9200

在这个配置中,Kibana容器被配置为连接到名为elasticsearch-master的Elasticsearch服务。

4. 验证和使用

一旦所有组件都部署完成,你可以通过访问Kibana的Web界面(通常是http://<Kibana-Pod-IP>:5601)来验证日志统一管理是否工作正常。在Kibana中,你可以创建索引模式、搜索日志、创建可视化图表等。

5.注意事项
  • 确保Elasticsearch、Fluentd和Kibana之间的网络连通性。
  • 根据你的日志量和存储需求,合理配置Elasticsearch集群的存储和性能。
  • 监控Elasticsearch和Fluentd的性能和资源使用情况,确保它们不会成为集群的瓶颈。
  • 定期备份Elasticsearch数据以防止数据丢失。
  • 考虑使用TLS/SSL加密Fluentd和Elasticsearch之间的通信以提高安全性。

标签:Fluentd,name,Kibana,EFK,Elasticsearch,elasticsearch,日志,K8S
From: https://www.cnblogs.com/huangjiabobk/p/18049104

相关文章

  • 在K8S中,如果后端nfs存储的ip发生变化如何解决?
    在Kubernetes(K8S)中,如果后端NFS(NetworkFileSystem)存储的IP地址发生了变化,你需要更新与之相关的PersistentVolume(PV)或PersistentVolumeClaim(PVC)以及StorageClass中关于NFS服务器IP的配置信息,确保K8S集群内的Pod能够正确连接到新的NFS存储位置......
  • 在K8S中,业务Pod数据如何存储?
    在Kubernetes(K8S)中,业务Pod的数据存储及具体方法通常涉及多种存储选项,这些选项根据业务需求和场景的不同而有所不同。以下是关于业务Pod数据如何存储及其具体方法的详细说明:1.临时存储(EmptyDir)描述:EmptyDir是最简单的存储类型,它会在Pod被分配到Node时创建一个空目录,并挂载到Pod......
  • k8s master不可以被调度,修改deploy配置让这个可以单独调度上去
    给两个节点添加标签,让pod调度上去,但是kubectldescribepod 发现报错了,因为master不可以被调度,kube002也是设置了污点禁止被调度了WarningFailedScheduling4m33s(x2over9m34s)default-scheduler0/4nodesareavailable:1node(s)haduntoleratedtaint{key:k......
  • 在K8S中,"lsof" 作用有哪些?
    在Kubernetes(K8s)中,虽然lsof命令不是专门为Kubernetes设计的工具,但它仍然可以在单个Pod或节点级别的Linux环境中提供重要信息。lsof(ListOpenFiles)命令主要用于列出系统当前打开的所有文件,这对于在Kubernetes环境中进行问题排查同样具有价值,尤其是在以下几个方面:查看Pod进......
  • k8s
     如何查看该节点是否可以被调度要查看一个节点是否可以被调度,你可以使用Kubernetes的命令行工具kubectl来检查节点的状态、标签和可调度性。以下是一些步骤和命令,可以帮助你确认节点是否可以被调度:检查节点状态:使用kubectlgetnodes命令可以查看集群中所有节点的状态。节点......
  • centos安装单机k8s
    为了在CentOS上搭建单机版的Kubernetes,您可以按照以下步骤进行操作:安装Docker:Kubernetes使用Docker作为容器运行时。您可以通过以下命令安装Docker:sudoyuminstalldocker-ysudosystemctlenabledockersudosystemctlstartdocker配置Kubernetes的yum仓库:执行以下命......
  • Python日志logging模块
    Python日志logging模块logging---Python的日志记录工具—Python3.12.2文档Pythonlogging模块的基本使用、进阶使用详解_python中logging模块详解-CSDN博客logging模块架构日志级别默认的级别是“WARNING“,意味着只会追踪该级别及以上的事件。级别何时使用......
  • 第二十八:日志服务管理
    一、系统日志介绍在现实生活中,记录日志非常重要﹐比如:银行转账时会有转账记录﹔飞机飞行过程中的黑盒子(飞行数据记录器)记录着飞机的飞行过程.那么将系统和应用发生的事件记录至日志中,也很意义,常可以助于排错和分析使用日志记录的内容包括:历史事件:时间,地点,人物,事件......
  • (笔记)Linux下glog日志库的详细使用方法
     Glog是一个开源的C++日志库,它提供了非常方便的日志记录功能。下面是使用Glog的详细步骤: 一、安装Glog库您可以从Glog的官方网站(https://github.com/google/glog)下载Glog的源代码,然后进行编译和安装。在Linux系统下,您可以使用以下命令安装Glog库:sudoapt-getinstalllibg......
  • 浮木云学习日志(9)---模块统计设计
    ​在SaaS系统中,统计模块是非常重要的一个功能。对于C端产品,可能会展示用户个人使用数据,比如Keep中的锻炼时长统计。虽然这些数据只是供用户了解自己的使用情况,并非必需。然而,在B端的SaaS系统中,由于用户众多且业务复杂,公司管理层需要查看全公司数据和员工绩效情况。因此,SaaS系统必......