使用K8s Filebeat Sidecar模式收集Ingress Nginx日志并可视化展示

蔷薇花开 2024-09-09 ⋅ 12 阅读

介绍

在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等工具进行分析和监控。希望对您有所帮助!

参考链接:


全部评论: 0

    我有话说: