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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 在K8S中,如何使用 EFK 实现日志的统一管理?

在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之间的通信以提高安全性。
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
280 3
|
8月前
|
弹性计算 运维 Kubernetes
使用ACK Edge统一管理多地域的ECS资源
本文介绍如何使用ACK Edge来管理分布在多个地域的ECS资源。
|
7月前
|
弹性计算 运维 Kubernetes
使用ACK Edge统一管理多地域的ECS资源
使用ACK Edge统一管理多地域的ECS资源
|
Kubernetes API Docker
跟着iLogtail学习容器运行时与K8s下日志采集方案
iLogtail 作为开源可观测数据采集器,对 Kubernetes 环境下日志采集有着非常好的支持,本文跟随 iLogtail 的脚步,了解容器运行时与 K8s 下日志数据采集原理。
|
消息中间件 Kubernetes API
在K8S中,如何收集k8s集群日志?
在K8S中,如何收集k8s集群日志?
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
1382 0
|
消息中间件 Kubernetes Kafka
微服务从代码到k8s部署应有尽有系列(十一、日志收集)
微服务从代码到k8s部署应有尽有系列(十一、日志收集)
|
Kubernetes Shell 网络安全
【Azure K8S】记录AKS VMSS实例日志收集方式
【Azure K8S】记录AKS VMSS实例日志收集方式
115 0
|
存储 Prometheus Kubernetes
在K8S中,如何收集K8S日志?有哪些方案?
在K8S中,如何收集K8S日志?有哪些方案?
|
存储 监控 Kubernetes
Kubernetes基于EFK进行统一的日志管理方案
1、统一日志管理的整体方案 通过应用和系统日志可以了解Kubernetes集群内所发生的事情,对于调试问题和监视集群活动来说日志非常有用。对于大部分的应用来说,都会具有某种日志机制。因此,大多数容器引擎同样被设计成支持某种日志机制。
2959 0

推荐镜像

更多