ELK堆栈是Elasticsearch、Logstash和Kibana的缩写,提供以下功能:
- Elasticsearch:一个可扩展的搜索和分析引擎,配备日志分析工具和应用程序型数据库,非常适合数据驱动型应用。
- Logstash:一种日志处理工具,从多个来源收集日志,对其进行解析,并发送至Elasticsearch进行存储和分析。
- Kibana:一个强大的可视化工具,允许您通过交互式图表、图形和仪表板探索和分析存储在Elasticsearch中的数据。
Elasticsearch的基础架构
在深入部署ELK堆栈之前,我们先来了解Elasticsearch基础架构的关键组件:
- 节点:Elasticsearch运行在称为节点的专用服务器上,这些节点作为二进制文件执行搜索和分析任务。
- 分片:数据库空间逻辑上被划分为分片,以实现更快的数据访问和分布。
- 索引:Elasticsearch将存储的数据组织成索引,便于高效的数据管理。
- 配置ELK堆栈:您需要一个Kubernetes集群来在Kubernetes上部署ELK堆栈。如果您已有集群,可直接进行部署。或者,您可以使用提供的GitHub仓库中的Terraform文件来设置Kubernetes集群。
- 部署Elasticsearch: 利用Helm图表,我们可以高效地部署Elasticsearch。修改values文件以匹配您的特定需求,例如调整副本数量或开启/关闭某些功能。从Artifactory Hub下载这些文件。
values-elasticsearch.yaml
clusterName: "itsyndicateblog"
replicas: 1
minimumMasterNodes: 1
createCert: true
secret:
enabled: true
password: "" # generated randomly if not defined
image: "docker.elastic.co/elasticsearch/elasticsearch"
imageTag: "8.5.1"
resources:
requests:
cpu: "200m"
memory: "500Mi"
limits:
cpu: "300m"
memory: "1Gi"
ingress:
enabled: false # enable ingress only if you need external access to elasticsearch cluster
hosts:
- host: elastic.itsyndicate.org
paths:
- path: /
在定制完values后,使用Helm图表安装Elasticsearch:
helm install elasticsearch -f elasticsearch-values.yaml <chart-name>
注意:确保已为持久卷(EBS或EFS)配置了驱动程序。
部署Kibana
使用Helm图表部署Kibana非常简单。在values文件中,指定Elasticsearch服务的URL和端口:
values-kibana.yaml
elasticsearchHosts: "https://elasticsearch-master:9200"
enterpriseSearch:
host: "https://elasticsearch-master:9200"
helm install kibana -f kibana-values.yaml <chart-name>
检查Kibana是否正确安装,将容器的端口转发到本地网络(我使用的是K8s Lens)
部署Logstash和Filebeat
为了有效管理日志,我们使用Logstash和Filebeat。Filebeat从各种来源收集记录,Logstash处理并将它们发送到Elasticsearch。
部署Logstash
- 克隆配置所在的仓库:logstash-k8s
- 移动到tf-modules/eks/manifests/logstash-k8s
- 编辑 configmap.yaml 文件
- 添加 Elasticsearch 主机、用户和密码(可从 Kubernetes 资源“Secrets”中获取)
- 应用模板:
kubectl apply -f logstash-k8s -n $CHANGE_TO_ELASTIC_NS
部署 Filebeat
- 确保 Filebeat 配置指向节点上正确的日志文件。通常在 EKS 中,路径是 /var/log/containers。为验证这一点,登录到任一节点并转到 /var/log/containers 目录;如果没有文件,尝试更改目录。
- 一切正确后,应用 Kubernetes 模板:
kubectl apply -f filebeat-k8s
部署一个简单应用以检查日志如何流入 Elasticsearch
- 从克隆的仓库进入 eks/manifests 文件夹。
- 执行命令:
kubeclt apply -f app -n default
安装完成后,重新访问 Kibana 并创建一个 Elasticsearch 索引。
创建索引:
创建 logstash 索引模式:logstash-[namespace]*
现在,您应该能看到来自部署应用的日志。如果没有,对该应用发起一些请求并尝试解决问题;如有需要,可参考视频指南获取帮助。
结论
您已成功在Kubernetes上部署了ELK Stack,为您的应用赋予了强大的日志分析能力和数据驱动的洞察力。Elasticsearch、Logstash和Kibana无缝处理大数据流,并提供有意义的可视化。
现在,您拥有了一个强大的日志解决方案,可以高效管理日志并获得宝贵见解。祝分析愉快!
感谢您阅读本指南关于部署ELK Stack的内容。如有任何疑问或需要进一步帮助,请随时联系。祝编码愉快!
Source:
https://dzone.com/articles/how-to-deploy-the-elk-stack-on-kubernetes