介绍
在Kubernetes(K8s)集群中,Ingress Nginx是一种常见的用于路由HTTP和HTTPS流量的解决方案。然而,当需要收集和分析Ingress Nginx的访问日志时,需要一种可靠的方式进行日志收集和展示。本文将介绍如何通过K8s Filebeat Sidecar模式来实现Ingress Nginx日志的收集,并使用可视化工具对其进行展示。
Filebeat Sidecar模式
Filebeat是一种轻量级的开源日志文件收集器,它可以用来收集Kubernetes容器的日志。Sidecar模式是一种常见的在Kubernetes中部署额外容器的方式,用于提供额外的功能。
在本示例中,我们将在与Ingress Nginx部署相同的Pod中添加一个Filebeat容器。Filebeat将收集Ingress Nginx的访问日志,并将其发送到一个目标位置,如Elasticsearch或Logstash。我们将使用Elasticsearch作为目标位置,并使用Kibana进行日志的可视化展示。
步骤
以下是将Filebeat作为Sidecar部署到Ingress Nginx中收集日志的步骤:
步骤1:创建Filebeat配置文件
首先,创建一个名为filebeat.yml
的文件,并添加以下内容:
filebeat.config:
modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
filebeat.inputs:
- type: log
paths:
- /var/log/nginx/access.log
fields:
logtype: ingress
output.elasticsearch:
hosts: ['elasticsearch:9200']
这个配置文件指定了Filebeat要收集的日志文件路径和要发送到的Elasticsearch的地址。
步骤2:创建Filebeat Sidecar容器
在Ingress Nginx的Deployment配置文件中,添加一个filebeat
容器,并将上述创建的filebeat.yml
作为配置文件挂载到容器中。示例配置如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: ingress-nginx
spec:
replicas: 1
selector:
matchLabels:
app: ingress-nginx
template:
metadata:
labels:
app: ingress-nginx
spec:
containers:
- name: ingress-nginx
image: nginx:latest
ports:
- containerPort: 80
protocol: TCP
# 省略其他配置
- name: filebeat
image: docker.elastic.co/beats/filebeat:7.9.2
volumeMounts:
- name: filebeat-config
mountPath: /usr/share/filebeat/filebeat.yml
subPath: filebeat.yml
readOnly: true
volumes:
- name: filebeat-config
configMap:
name: filebeat-config
items:
- key: filebeat.yml
path: filebeat.yml
步骤3:创建Filebeat配置文件ConfigMap
创建一个名为filebeat-config
的ConfigMap,并将之前创建的filebeat.yml
文件添加到其中。执行以下命令:
kubectl create configmap filebeat-config --from-file=filebeat.yml
步骤4:创建Elasticsearch和Kibana
在Kubernetes集群中,使用以下命令创建Elasticsearch和Kibana:
kubectl apply -f https://download.elastic.co/kubernetes/kubernetes-yml/elasticsearch.yaml
kubectl apply -f https://download.elastic.co/kubernetes/kubernetes-yml/kibana.yaml
步骤5:查看日志和可视化展示
使用Kibana来查看和可视化Ingress Nginx的访问日志。在浏览器中访问Kibana的URL,选择"Discover"选项卡,配置索引模式(如filebeat-*
),并选择需要展示的字段。通过在搜索框中输入查询条件,即可查看匹配条件的日志。
总结
通过将Filebeat作为Ingress Nginx的Sidecar容器,我们可以轻松地收集和展示Ingress Nginx的访问日志。使用Kubernetes的可扩展性和弹性,加上Elasticsearch和Kibana等工具的功能,我们可以灵活地对集群中的日志进行集中收集和展示。希望本文对您在收集和展示Ingress Nginx日志方面提供了帮助。
本文以Filebeat作为Sidecar模式收集Ingress Nginx日志并进行可视化展示为主题,介绍了相关的步骤和配置。通过这种方式,您可以更方便地了解Ingress Nginx的访问情况,并通过Kibana等工具进行分析和监控。希望对您有所帮助!
参考链接:
本文来自极简博客,作者:蔷薇花开,转载请注明原文链接:使用K8s Filebeat Sidecar模式收集Ingress Nginx日志并可视化展示