使用ELK命名空间下的Filebeat收集特定Pod日志 - 以 mynginx 为例
使用ELK命名空间下的Filebeat收集特定Pod日志 - 以 mynginx 为例
本指南详细介绍如何使用ELK命名空间下的Filebeat收集特定Pod(以mynginx为例)的日志,并将其发送到Elasticsearch。
前提条件:
- 已经在ELK命名空间中部署了Elasticsearch和Kibana。
- 已经创建了名为
mynginx的Pod,并运行在default命名空间。
步骤:
-
部署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 - 创建一个名为
-
修改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的日志。
- 编辑
-
部署修改后的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来查看来自mynginxPod的日志。
示例:
假设您要收集 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的日志。
更多信息:
原文地址: https://www.cveoy.top/t/topic/ol0L 著作权归作者所有。请勿转载和采集!