MiniKube EFK日志监控平台

2023-10-21 23:58

本文主要是介绍MiniKube EFK日志监控平台,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MiniKube EFK日志监控平台

  • EFK日志监控平台部署架构
  • DaemonSet - Fluentd
  • EFK安装
    • YAML 文件准备
  • 发布顺序及命令

参考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: elasticsearchnamespace: logging
spec:selector:matchLabels:component: elasticsearchtemplate:metadata:labels:component: elasticsearchspec:containers:- name: elasticsearchimage: docker.elastic.co/elasticsearch/elasticsearch:6.8.13env:- name: discovery.typevalue: single-nodeports:- containerPort: 9200name: httpprotocol: TCPresources:limits:cpu: 500mmemory: 2Girequests:cpu: 500mmemory: 2Gi
---
apiVersion: v1
kind: Service
metadata:name: elasticsearchnamespace: logginglabels:service: elasticsearch
spec:type: NodePortselector:component: elasticsearchports:- port: 9200targetPort: 9200nodePort: 31200

文件:kibana.yml

apiVersion: apps/v1
kind: Deployment
metadata:name: kibananamespace: logging
spec:selector:matchLabels:run: kibanatemplate:metadata:labels:run: kibanaspec:containers:- name: kibanaimage: docker.elastic.co/kibana/kibana:6.8.13env:- name: ELASTICSEARCH_URLvalue: http://elasticsearch:9200- name: XPACK_SECURITY_ENABLEDvalue: "false"ports:- containerPort: 5601name: httpprotocol: TCP
---
apiVersion: v1
kind: Service
metadata:name: kibananamespace: logginglabels:service: kibana
spec:type: NodePortselector:run: kibanaports:- port: 5601targetPort: 5601nodePort: 31601

文件:fluentd-daemonset.yml

apiVersion: apps/v1
kind: DaemonSet
metadata:name: fluentdnamespace: kube-systemlabels:k8s-app: fluentd-loggingversion: v1kubernetes.io/cluster-service: "true"
spec:selector:matchLabels:k8s-app: fluentd-loggingversion: v1template:metadata:labels:k8s-app: fluentd-loggingversion: v1kubernetes.io/cluster-service: "true"spec:serviceAccount: fluentdserviceAccountName: fluentdtolerations:- key: node-role.kubernetes.io/mastereffect: NoSchedulecontainers:- name: fluentdimage: fluent/fluentd-kubernetes-daemonset:v1-debian-elasticsearchenv:- name: FLUENT_ELASTICSEARCH_HOSTvalue: "elasticsearch.logging"- name: FLUENT_ELASTICSEARCH_PORTvalue: "9200"- name: FLUENT_ELASTICSEARCH_SCHEMEvalue: "http"- name: FLUENT_UIDvalue: "0"- name: FLUENTD_SYSTEMD_CONFvalue: disableresources:limits:memory: 200Mirequests:cpu: 100mmemory: 200MivolumeMounts:- name: varlogmountPath: /var/log- name: varlibdockercontainersmountPath: /var/lib/docker/containersreadOnly: trueterminationGracePeriodSeconds: 30volumes:- name: varloghostPath:path: /var/log- name: varlibdockercontainershostPath:path: /var/lib/docker/containers

文件:fluentd-rbac.yml

rbac: role based access control

apiVersion: v1
kind: ServiceAccount
metadata:name: fluentdnamespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: fluentdnamespace: kube-system
rules:- apiGroups:- ""resources:- pods- namespacesverbs:- get- list- watch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: fluentd
roleRef:kind: ClusterRolename: fluentdapiGroup: rbac.authorization.k8s.io
subjects:- kind: ServiceAccountname: fluentdnamespace: kube-system

准备好5个文件之后,准备发布。

[ryan@lab3 efk_deploy]$ ll
total 20
-rw-rw-r--. 1 ryan ryan  964 Jan  6 01:48 elastic.yml
-rw-rw-r--. 1 ryan ryan 1657 Jan  6 01:50 fluentd-daemonset.yml
-rw-rw-r--. 1 ryan ryan  600 Jan  6 01:51 fluentd.rbac.yml
-rw-rw-r--. 1 ryan ryan  809 Jan  6 01:48 kibana.yml
-rw-rw-r--. 1 ryan ryan   57 Jan  6 01:47 ns.yml

发布顺序及命令

发布命名空间

kubectl apply -f ns.yml

查看命名空间

kubectl get ns

发布elasticsearch,需要等一段时间才能就绪。

kubectl apply -f elastic.yml

查看刚发布的pod,在命名空间logging里面

kubectl get all -n logging

发布成功,看到status running.

[ryan@lab3 efk_deploy]$ kubectl get all -n logging
NAME                                 READY   STATUS    RESTARTS   AGE
pod/elasticsearch-848b5b7585-dgh8l   1/1     Running   0          15mNAME                    TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
service/elasticsearch   NodePort   10.99.78.88   <none>        9200:31200/TCP   15mNAME                            READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/elasticsearch   1/1     1            1           15mNAME                                       DESIRED   CURRENT   READY   AGE
replicaset.apps/elasticsearch-848b5b7585   1         1         1       15m

可以用下面命令查看minikube的service list。

minikube service list

发布Kibana,需要等一段时间才能就绪。

kubectl apply -f kibana.yml

查看成功:

[ryan@lab3 efk_deploy]$ kubectl get all -n logging
NAME                                 READY   STATUS    RESTARTS   AGE
pod/elasticsearch-848b5b7585-dgh8l   1/1     Running   0          36m
pod/kibana-5c7df47d47-dpjbc          1/1     Running   0          7m18sNAME                    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
service/elasticsearch   NodePort   10.99.78.88     <none>        9200:31200/TCP   36m
service/kibana          NodePort   10.99.146.170   <none>        5601:31601/TCP   7m18sNAME                            READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/elasticsearch   1/1     1            1           36m
deployment.apps/kibana          1/1     1            1           7m18sNAME                                       DESIRED   CURRENT   READY   AGE
replicaset.apps/elasticsearch-848b5b7585   1         1         1       36m
replicaset.apps/kibana-5c7df47d47          1         1         1       7m18s

发布fluentd K8S角色权限绑定

kubectl apply -f fluentd-rbac.yml

继续发布fluentd-daemonset

kubectl apply -f fluentd-daemonset.yml

查看POD状态:

kubectl get po -n kube-system

[ryan@lab3 efk_deploy]$ kubectl get po -n kube-system
NAME                               READY   STATUS    RESTARTS   AGE
coredns-54d67798b7-2rdv2           1/1     Running   0          12h
etcd-minikube                      1/1     Running   0          12h
fluentd-6jrkj                      1/1     Running   0          2m19s
kube-apiserver-minikube            1/1     Running   0          12h
kube-controller-manager-minikube   1/1     Running   0          12h
kube-proxy-qwd7c                   1/1     Running   0          12h
kube-scheduler-minikube            1/1     Running   0          12h
storage-provisioner                1/1     Running   1          12h

minikube查看minikube node开启的服务端口:
可以发现,minikube node已经在监听服务端口了,kibana应该是可以访问了,但是centos没有装桌面gui怎么办。

minikube service list

[ryan@lab3 conf]$ minikube service list
|----------------------|---------------------------|--------------|---------------------------|
|      NAMESPACE       |           NAME            | TARGET PORT  |            URL            |
|----------------------|---------------------------|--------------|---------------------------|
| default              | kubernetes                | No node port |
| kube-system          | kube-dns                  | No node port |
| kubernetes-dashboard | dashboard-metrics-scraper | No node port |
| kubernetes-dashboard | kubernetes-dashboard      | No node port |
| logging              | elasticsearch             |         9200 | http://192.168.49.2:31200 |
| logging              | kibana                    |         5601 | http://192.168.49.2:31601 |

筛选日志:
在这里插入图片描述

结构化:
在这里插入图片描述
我的centos虚拟机的IP是192.168.44.133。
centos上面装的minikube node的IP是192.168.49.2。
我们发布了nodeport service给kibana,ES容器,是为了将容器的服务端口映射到node上,所以在centos上应该是可以访问,192.168.49.2:31601的。但是由于centos没有桌面,你验证不了。:)如下图所示。

如果想要远程访问,需要配置nginx。不然在centos上装桌面,往下看看吧。:)
由于当前的环境太虚拟了,如下图所示:在这里插入图片描述
我用nginx做了代理,然后在笔记本上可以访问了。请参考我下面的笔记,不用谢。
Nginx安装
Nginx配置

成功后,如下图所示。

在这里插入图片描述

这篇关于MiniKube EFK日志监控平台的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/257770

相关文章

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0