基础概念
- Elasticsearch 是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档。
- Beats 是数据采集的得力工具。将 Beats 和您的容器一起置于服务器上,或者将 Beats 作为函数加以部署,然后便可在 Elastisearch 中集中处理数据。如果需要更加强大的处理性能,Beats 还能将数据输送到 Logstash 进行转换和解析。
- Kibana 核心产品搭载了一批经典功能:柱状图、线状图、饼图、旭日图,等等。不仅如此,您还可以使用 Vega 语法来设计独属于您自己的可视化图形。所有这些都利用 Elasticsearch 的完整聚合功能。
Elasticsearch 通常与 Kibana一起部署,Kibana 是 Elasticsearch 的一个功能强大的数据可视化 Dashboard,Kibana 允许你通过 web 界面来浏览 Elasticsearch 日志数据。
安装部署
这里我们利用Helm进行部署,所以我们需要先安装Helm。
wget -O helm.tgz https://get.helm.sh/helm-v3.1.1-linux-amd64.tar.gz tar -zxvf helm.tgz cd linux-amd64mv helm /usr/local/bin && chmod a+x /usr/local/bin helm version
详情参考:Kubernetes实战总结 - Helm部署(v3.1.1)
然后我们下载Helm仓库源码
wget -O helm-charts.tgz https://github.com/elastic/helm-charts/archive/7.6.2.tar.gz tar -zxvf helm-charts.tgzcd helm-charts-7.6.2
创建PV供elasticsearch使用,这里采用NFS,你也可以采用其他方式。
# es-pv.yamlapiVersion: v1 kind: PersistentVolume metadata: name: elasticsearch spec: capacity: storage: 30Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain nfs: path: /nfsdata/elasticsearch server: *.*.*.* kubectl create -f es-pv.yaml
部署elasticsearch
vim elasticsearch/values.yaml # 根据自己节点数进行更改 replicas: 1 minimumMasterNodes: 1 ....... # 更改镜像源及版本 image: "registry.cn-shanghai.aliyuncs.com/leozhanggg/elastic/elasticsearch" imageTag: "7.6.0" imagePullPolicy: "IfNotPresent" ...... # 自行调整资源大小 resources: requests: cpu: "1000m" memory: "2Gi" limits: cpu: "1000m" memory: "2Gi" ...... # 存在对应PV volumeClaimTemplate: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 30Gi helm install es --namespace=efk ./elasticsearch
部署filebeat
vim filebeat/values.yaml # 日志收集目录 hostPathRoot: /var/lib hostNetworking: false # 更改镜像源及版本 image: "registry.cn-shanghai.aliyuncs.com/leozhanggg/elastic/filebeat" imageTag: "7.6.0" imagePullPolicy: "IfNotPresent" helm install fb --namespace=efk ./filebeat
部署kibana
vim kibana/values.yaml # 更改镜像源及版本 image: "registry.cn-shanghai.aliyuncs.com/leozhanggg/elastic/kibana" imageTag: "7.6.0" imagePullPolicy: "IfNotPresent" ...... # 更改为NodePort模式 service: type: NodePort port: 5601 nodePort: "30005" helm install kb --namespace=efk ./kibana
等待部署完成
[root~ ]# kubectl get pod -n efk NAME READY STATUS RESTARTS AGE elasticsearch-master-0 1/1 Running 0 28h filebeat-filebeat-967m2 1/1 Running 0 28h filebeat-filebeat-lr79k 1/1 Running 0 28h kibana-kibana-64f5869d86-qrkrq 1/1 Running 0 28h
访问masterip:port,即可查看日志
当然,这并不是最佳实现,在该架构中,根据业务特点,还可以加入某些中间件,如Redis、Kafak等。
更多详情参考>>> 如何监控K8S集群日志 EFK(Elasticsearch+Filebeat+Kibana)收集容器日志
作者:Leozhanggg
出处:https://www.cnblogs.com/leozhanggg/p/12700363.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/leozhanggg/p/12700363.html
时间: 2024-10-13 14:18:54