使用ELK命名空间下的Filebeat收集特定Pod日志 - 以 mynginx 为例

本指南详细介绍如何使用ELK命名空间下的Filebeat收集特定Pod(以mynginx为例)的日志,并将其发送到Elasticsearch。

前提条件:

  • 已经在ELK命名空间中部署了Elasticsearch和Kibana。
  • 已经创建了名为 mynginx 的Pod,并运行在 default 命名空间。

步骤:

  1. 部署Filebeat

    • 创建一个名为 filebeat-config 的ConfigMap,并将以下配置保存到 filebeat-config.yaml 文件中:
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: filebeat-config
    data:
      filebeat.yml: |
        filebeat.inputs:
        - type: container
          paths:
            - /var/log/containers/*.log
          processors:
            - add_kubernetes_metadata:
                in_cluster: true
        output.elasticsearch:
          hosts: ['elasticsearch:9200']
    
    • 使用以下命令创建ConfigMap:
    kubectl create configmap filebeat-config --from-file=filebeat.yml=filebeat-config.yaml -n elk
    
    • 创建Filebeat的Deployment和Service:
    kubectl apply -f https://raw.githubusercontent.com/elastic/beats/7.15/deploy/kubernetes/filebeat-kubernetes.yaml -n elk
    
  2. 修改Filebeat配置以仅收集特定Pod的日志

    • 编辑 filebeat-config.yaml 文件,找到 filebeat.inputs 部分,将其修改为:
    filebeat.inputs:
    - type: container
      paths:
        - /var/log/containers/*mynginx*.log
      processors:
        - add_kubernetes_metadata:
            in_cluster: true
    
    • 这将仅收集名称包含 'mynginx' 的Pod的日志。
  3. 部署修改后的Filebeat配置

    • 使用以下命令更新ConfigMap:
    kubectl create configmap filebeat-config --from-file=filebeat.yml=filebeat-config.yaml -n elk --dry-run=client -o yaml | kubectl replace -f -
    
    • 重启Filebeat的Deployment:
    kubectl rollout restart deployment/filebeat -n elk
    

现在,Filebeat将仅收集名称包含'mynginx'的Pod的日志,并将其发送到Elasticsearch中。

注意:

  • 如果您的Pod日志路径不同,请将 filebeat.inputs.paths 中的路径修改为您的实际日志路径。
  • 您可以在Kibana中使用搜索查询 kubernetes.pod.name: mynginx 来查看来自 mynginx Pod的日志。

示例:

假设您要收集 kubectl logs -f mynginx-59b5d86b7b-hp82z -n default 命令的日志,您需要将 filebeat.inputs.paths 修改为以下内容:

filebeat.inputs:
- type: container
  paths:
    - /var/log/containers/mynginx-59b5d86b7b-hp82z*.log
  processors:
    - add_kubernetes_metadata:
        in_cluster: true

这样,Filebeat将仅收集名为 mynginx-59b5d86b7b-hp82z 的Pod的日志。

更多信息:

使用ELK命名空间下的Filebeat收集特定Pod日志 - 以 mynginx 为例

原文地址: https://www.cveoy.top/t/topic/ol0L 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录