当前位置: 首页 > news >正文

[单master节点k8s部署]22.构建EFK日志收集平台(一)

数据收集传输

FileBeat

fileBeat是一个轻量级的日志采集的工具,占用资源极少,可靠性高。虽然具备一定的过滤能力,但是能力有限,所以需要搭配其他的工具进行数据传输和分析。

Fluentd

Fluentd是一个用于日志收集、传输和聚合的工具根据,而且在传输过程中,Fluentd能对日志进行格式化、解析和过滤,他的优势是尽可能的用JSON作为日志输出,所以传输工具以及下游的传输线不需要猜测字符串里面的各个字段的类型。

Fluentd的灵活性并不好,资源消耗也不小,在一些小的嵌入式设备上可以安装Fluent Bit。 

Fluentd

FileBeat

日志收集、处理和传输框架日志收集和传输
基于插件的架构,支持多种输入、过滤和输出插件轻量级,专注于日志收集和传输
支持复杂的日志处理、过滤、解析和格式化处理能力有限
插件生态丰富插件较少,主要依赖于Elasticsearch
由于支持插件和处理功能,所以资源占用较高资源占用较少
适合复杂的日志管道和需要进行实时处理的场景适合轻量日志收集
是CNCF的项目,集成了很多云原生工具

是Elastic Stack的一部分,与elasticsearch、kibana集成

Logagent

是一个性能介于FLuentd和FileBeat之间的一个日志收集工具,适合容器和服务器环境,插件有限,与Sematext平台深度集成。

Logstash

数据收集与数据解析过滤,通过强大的额过滤插件,用户可以对原始数据进行结构化处理,例如提取字段、格式化时间戳、删除或添加字段。它适合处理大量数据的场景。Logstash与Elasticsearch紧密结合,适合ELK Stack。

它的致命缺点是性能以及资源消耗,尽管性能在近几年已经提升很多,但是比其他替代者还是慢很多,它的优势是使用Grok工具将非结构化数据解析为结构化和可查的结构数据。另一个痛点是 不支持缓存,有可能造成数据丢失,因此替代方案是将Redis或Kafka作为中心缓冲池。

数据分析

ElasticSearch

免费的分布式开源搜索和分析引擎,是Elastic Stack中的核心组件。

Beats工具:

fileBeat:日志文件收集

packetBeat: 网络数据收集

MetricBeat: 指标收集

WinlogBeat: windows事件收集

AuditBeat: 审计数据收集

HeartBeat: 运行时间监控

搭建

  • 创建命名空间:

创建一个叫kube-logging的命名空间

  • 创建headless-service:

headless service不会像普通service一样进行负载均衡,而是直接将pod的IP地址暴露给dns。假设我们有三个后端的pod(防止裂脑问题),有一个名为elasticsearch的Headless Service,那么DNS表为:

elasticsearch.default.svc.cluster.local -> es-node-0.default.svc.cluster.local-> es-node-1.default.svc.cluster.local-> es-node-2.default.svc.cluster.local

这个可以方便我们创建statefulset的一个elasticsearch的服务。 

我们通过如下的yaml文件创建一个headless service,则我们有了一个域名:elastic31.kube-logging31.svc.cluster.local

kind: Service
apiVersion: v1
metadata:name: elasticsearch31namespace: kube-logging31labels:app: elasticsearch
spec:selector:app: elasticsearchclusterIP: Noneports:- port: 9200name: rest- port: 9300name: inter-node
  • 创建nfs空间:

在master节点创建一个目录。

 mkdir /data/v1 -p 
[root@xomaster ~]# vim /etc/exports 
/data/v1 192.168.244.128/24(rw,no_root_squash) #加载配置,使配置生效 
[root@master ~]# exportfs -arv 
[root@master ~]# systemctl restart nfs
  • 创建nfs作为存储供应商

首先进行serviceaccount创建和rbac授权:

apiVersion: v1
kind: ServiceAccount
metadata:name: nfs-provisioner31
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: nfs-provisioner-runner31
rules:- apiGroups: [""]resources: ["persistentvolumes"]verbs: ["get", "list", "watch", "create", "delete"]- apiGroups: [""]resources: ["persistentvolumeclaims"]verbs: ["get", "list", "watch", "update"]- apiGroups: ["storage.k8s.io"]resources: ["storageclasses"]verbs: ["get", "list", "watch"]- apiGroups: [""]resources: ["events"]verbs: ["create", "update", "patch"]- apiGroups: [""]resources: ["services", "endpoints"]verbs: ["get"]- apiGroups: ["extensions"]resources: ["podsecuritypolicies"]resourceNames: ["nfs-provisioner31"]verbs: ["use"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: run-nfs-provisioner31
subjects:- kind: ServiceAccountname: nfs-provisioner31namespace: default
roleRef:kind: ClusterRolename: nfs-provisioner-runner31apiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-provisioner
rules:- apiGroups: [""]resources: ["endpoints"]verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-provisioner31
subjects:- kind: ServiceAccountname: nfs-provisioner31namespace: default
roleRef:kind: Rolename: leader-locking-nfs-provisioner31apiGroup: rbac.authorization.k8s.io

修改/etc/kubernetes/manifests/kube-apiserver.yaml的内容,添加

- --feature-gates=RemoveSelfLink=false 。

可以看到在修改之前,提供api服务的pod名叫api-server-master,当修改后,发现多了一个api-server的pod,而且是pending状态,因此删除这个pod。

[root@master 31efk]# kubectl get pods -n kube-system
NAME                                       READY   STATUS    RESTARTS          AGE
calico-kube-controllers-677cd97c8d-bqrpr   1/1     Running   0                 65d
calico-node-27c2l                          1/1     Running   176 (7h9m ago)    65d
calico-node-55kpl                          1/1     Running   185 (7h10m ago)   65d
calico-node-flv9r                          1/1     Running   178 (7h9m ago)    65d
coredns-6d8c4cb4d-c7qcr                    1/1     Running   0                 65d
coredns-6d8c4cb4d-vc77w                    1/1     Running   0                 65d
deamonset26-9psp2                          1/1     Running   0                 53d
deamonset26-c967m                          1/1     Running   0                 53d
deamonset26-pq6ns                          1/1     Running   0                 53d
etcd-master                                1/1     Running   0                 65d
kube-apiserver-master                      1/1     Running   1 (58d ago)       65d
kube-controller-manager-master             1/1     Running   10 (5d14h ago)    65d
kube-proxy-2v8x6                           1/1     Running   0                 51d
kube-proxy-45db5                           1/1     Running   0                 51d
kube-proxy-8q8rq                           1/1     Running   0                 51d
kube-scheduler-master                      1/1     Running   3 (5d14h ago)     51d
kube-state-metrics-57794dcf65-wcjkx        1/1     Running   0                 52d
monitoring-grafana-7948df75d9-jrj45        1/1     Running   0                 52d
[root@master 31efk]# vim /etc/kubernetes/manifests/kube-apiserver.yaml 
[root@master 31efk]# vim /etc/kubernetes/manifests/kube-apiserver.yaml 
[root@master 31efk]# kubectl apply -f  /etc/kubernetes/manifests/kube-apiserver.yaml 
pod/kube-apiserver created
[root@master 31efk]# kubectl get pods -n kube-system
NAME                                       READY   STATUS    RESTARTS          AGE
calico-kube-controllers-677cd97c8d-bqrpr   1/1     Running   0                 65d
calico-node-27c2l                          1/1     Running   176 (7h16m ago)   65d
calico-node-55kpl                          1/1     Running   185 (7h17m ago)   65d
calico-node-flv9r                          1/1     Running   178 (7h16m ago)   65d
coredns-6d8c4cb4d-c7qcr                    1/1     Running   0                 65d
coredns-6d8c4cb4d-vc77w                    1/1     Running   0                 65d
deamonset26-9psp2                          1/1     Running   0                 53d
deamonset26-c967m                          1/1     Running   0                 53d
deamonset26-pq6ns                          1/1     Running   0                 53d
etcd-master                                1/1     Running   0                 65d
kube-apiserver                             0/1     Pending   0                 26s
kube-apiserver-master                      1/1     Running   1 (53s ago)       30s
kube-controller-manager-master             1/1     Running   11 (113s ago)     65d
kube-proxy-2v8x6                           1/1     Running   0                 51d
kube-proxy-45db5                           1/1     Running   0                 51d
kube-proxy-8q8rq                           1/1     Running   0                 51d
kube-scheduler-master                      1/1     Running   4 (113s ago)      51d
kube-state-metrics-57794dcf65-wcjkx        1/1     Running   0                 52d
monitoring-grafana-7948df75d9-jrj45        1/1     Running   0                 52d
  • 安装nfs服务:

解压nfs镜像,并且进行deployment配置

kind: Deployment
apiVersion: apps/v1
metadata:name: nfs-provisioner31
spec:selector:matchLabels:app: nfs-provisioner31replicas: 1strategy:type: Recreatetemplate:metadata:labels:app: nfs-provisioner31spec:serviceAccount: nfs-provisioner31volumes:- name: nfs-client-rootnfs:server: 192.168.244.128path: /data/v1containers:- name: nfs-provisionerimage: registry.cn-hangzhou.aliyuncs.com/open-ali/xianchao/nfs-client-provisioner:v1imagePullPolicy: IfNotPresentvolumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAMEvalue: example.com/nfs- name: NFS_SERVERvalue: 92.168.244.128- name: NFS_PATHvalue: /data/v1

成功创建了nfs服务:

[root@master 31efk]# kubectl get pods | grep nfs
nfs-provisioner31-648f6c98ff-4qfs8   1/1     Running   0          9m27s
nfs-provisioner31-648f6c98ff-hcx6k   1/1     Running   0          9m27s
  • 创建storageClass

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:name: do-block-storage
provisioner: example.com/nfs

相关文章:

  • 河南人社厅:注册满两年可按条件认定副高
  • 【Python报错已解决】TypeError: object of type ‘complex‘ has no len()
  • 红绿灯倒计时读秒数字识别系统源码分享
  • VisualGLM-6B——原理与部署
  • 【题解】Codeforces Round 975 (Div. 2) A~E
  • ENV | VUE3 的安装使用并跑通第一个项目(高效实操版)
  • CSDN 账号已经恢复,后续可能会把专栏内容整理成纸质书出版
  • wordpress Contact form 7发件人邮箱设置
  • navate 清理注册列表
  • VS Code、Git与自动化脚本的效能之旅
  • 与大勇谈修复bug的感想
  • 技术速递|Python in Visual Studio Code 2024年9月发布
  • Tomcat系列漏洞复现
  • EasyCVR智慧公园视频智能管理方案:赋能公园安全管理新高度
  • d3.js 基础学习
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Angular数据绑定机制
  • jQuery(一)
  • Linux各目录及每个目录的详细介绍
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • node和express搭建代理服务器(源码)
  • Otto开发初探——微服务依赖管理新利器
  • python学习笔记-类对象的信息
  • windows下使用nginx调试简介
  • XForms - 更强大的Form
  • Yeoman_Bower_Grunt
  • 分享一份非常强势的Android面试题
  • 类orAPI - 收藏集 - 掘金
  • 聊聊sentinel的DegradeSlot
  • 前嗅ForeSpider教程:创建模板
  • 三分钟教你同步 Visual Studio Code 设置
  • 山寨一个 Promise
  • 数据科学 第 3 章 11 字符串处理
  • 白色的风信子
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • # Maven错误Error executing Maven
  • #window11设置系统变量#
  • (19)夹钳(用于送货)
  • (2.2w字)前端单元测试之Jest详解篇
  • (3)选择元素——(17)练习(Exercises)
  • (30)数组元素和与数字和的绝对差
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (十八)Flink CEP 详解
  • (五)MySQL的备份及恢复
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)C#调用WebService 基础
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .Net core 6.0 升8.0
  • .net 流——流的类型体系简单介绍