MiniKube EFK日志监控平台

本文介绍了如何在MiniKube上部署EFK日志监控平台,包括Elasticsearch、Fluentd和Kibana的组件作用。通过DaemonSet部署Fluentd以收集容器日志,利用ConfigMap动态更新配置。此外,讨论了实际生产环境中的优化,如使用Kafka作为缓冲以及如何通过Nginx进行远程访问。
摘要由CSDN通过智能技术生成

参考MiniKube安装准备环境。

EFK日志监控平台部署架构

EFK,集中式的日志监控平台。Elasticsearch, Fluentd, Kibana三个组件的首字母构成它的名字。

  • Elasticsearch,分布式的搜索引擎系统,简称ES。可以用于日志数据的集中存储和检索。
  • Fluentd,日志采集组件,可以实现日志数据的采集,装饰,转换和传输等功能。
  • Kibana,是基于ES的日志查询展示界面,也可以做基于ES的性能分析,或者大数据分析和展示。

在这里插入图片描述

如果要对K8S的Pod,容器采集日志,那么我们需要在K8S集群的每个节点上都部署一个fluentd的pod。发布形式为DaemonSet。

fluentd负责采集节点上所有容器产生的日志。具体要采集哪个日志,可以通过fluentd的配置文件进行配置。

fluentd采集好日志后,会定期传到elasticsearch集群的端点,elasticsearch会将日志集中存储并且根据配置建立反向索引。

然后开发,运维人员可以通过Kibana界面,集中的查询和分析日志。

如果要对fluentd的监控日志目标进行配置,可以通过configmap这种方式来实现,运维人员可以通过configmap可以定制fluentd的日志采集配置文件,然后发布到K8S环境。

fluentd的Pod可以通过持久卷的形式挂载configmap中的配置文件。就是说,可以通过configmap,运维人员可以动态发布和更新fluentd的配置文件。这种更新可以实时生效。需要重启fluentd的Pod。

实际企业生产环境,kibana和elasticsearch不会部署在K8S当中。另外,在实际生产环境中,企业级日志分析平台EFK架构中,在fluentd与elasticsearch之间,还有一套kafka队列来做缓冲,在数据量大的时候,可以解决ES性能跟不上的问题。ES建反向索引是比较耗资源的,而且比较慢,数据量大的时候,ES可能会跟不上。有了kafka缓冲之后,后台ES,Kibana升级维护就会比较容易。在这里插入图片描述

DaemonSet - Fluentd

DaemonSet是与ReplicaSet对应的概念。不同之处是daemonSet会在K8S所有节点上,都部署一个pod。

K8S DaemonSet机制会保证,每个节点上都有一个pod可用。如果一个Pod挂了,daemonSet会自动重启。

在这里插入图片描述

EFK安装

MiniKube本身是有EFK Addon的。但是本实验打算有发布文件的形式搞一搞。

可以用以下命令查看:

minikube addons list

[ryan@lab3 ~]$ minikube addons list
|-----------------------------|----------|--------------|
|         ADDON NAME          | PROFILE  |    STATUS    |
|-----------------------------|----------|--------------|
| ambassador                  | minikube | disabled     |
| csi-hostpath-driver         | minikube | disabled     |
| dashboard                   | minikube | enabled ?   |
| default-storageclass        | minikube | enabled ?   |
| efk                         | minikube | disabled     |
| freshpod                    | minikube | disabled     |
| gcp-auth                    | minikube | disabled     |

YAML 文件准备

  • ns.yml 创建一个新的namespace,名字叫logging。ES,Kibana会发布到logging namespace当中。
  • elastic.yml
  • kibana.yml
  • fluentd-rbac.yml, role based access control, 让fluentd有权限访问K8S的资源或者操作,获得容器的日志。
  • fluentd-daemonset.yml

文件:ns.yml

apiVersion: v1
kind: Namespace
metadata:
  name: logging

文件:elastic.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: elasticsearch
  namespace: logging
spec:
  selector:
    matchLabels:
      component: elasticsearch
  template:
    metadata:
      labels:
        component: elasticsearch
    spec:
      containers:
        - name: elasticsearch
          image: docker.elastic.co/elasticsearch/elasticsearch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值