k8s部署filebeat 采集应用程序日志

本文介绍了在Kubernetes环境中,如何使用filebeat进行日志采集,探讨了两种部署策略,并详细解析了filebeat的yaml配置。在实际应用中,为解决多副本服务日志区分问题,利用node_name进行标识。此外,文章还提到filebeat与Elasticsearch配合使用时,面临index生命周期管理的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公司的服务都部署在k8s上,日志采集成为必须要做的事;

filebeat采集日志有两种方案:
1.filebeat跟应用程序一同部署,放在一个pod内,filebeat作为sidecar监控应用程序的日志;
2.filebeat作为守护类pod采集每个节点上的应用程序日志;
由于每个节点上的应用程序还不是特别多,所以一个filebeat可以搞定,故放弃在每个应用程序的pod内添加filebeat的方案。

filebeat yaml

apiVersion: apps/v1
kind: DaemonSet
metadata:
  annotations:
    deprecated.daemonset.template.generation: '44'
  creationTimestamp: '2021-12-25T13:56:32Z'
  generation: 44
  labels:
    k8s-app: filebeat
  name: filebeat
  namespace: lzzk
spec:
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: filebeat
  template:
    metadata:
      labels:
        k8s-app: filebeat
    spec:
      containers:
        - args:
            - '-c'
            - /etc/filebeat.yml
            - '-e'
          env:
            - name: ELASTICSEARCH_HOST
              value: 172.17.12.2
            - name: ELASTICSEARCH_PORT
              value: '9967'
            - name: ELASTICSEARCH_USERNAME
            - name: ELASTICSEARCH_PASSWORD
            - name: ELASTIC_CLOUD_ID
            - name: ELASTIC_CLOUD_AUTH
          image: 'docker.elastic.co/beats/filebeat:6.6.2'
          imagePullPolicy: IfNotPresent
          name: filebeat
          resources:
            limits:
              cpu: 300m
              memory: 200Mi
            requests:
              cpu: 100m
              memory: 100Mi
          securityContext:
     
### 安装 FilebeatKubernetes 集群 为了在 Kubernetes部署 Filebeat,可以采用多种方法之一:使用 Helm 或者手动创建并应用必要的配置文件。 #### 使用 Helm 安装 Filebeat Helm 是一种用于管理 Kubernetes 应用程序包的工具。通过 Helm 可以简化复杂应用程序部署过程。对于想要快速设置 Filebeat 的用户来说,这是推荐的方式: ```bash helm repo add elastic https://helm.elastic.co helm install filebeat elastic/filebeat --namespace=kube-system \ --set kubeLogApi.enabled=true \ --set nodeSelector."beta\.kubernetes\.io/os"=linux ``` 上述命令首先添加了官方 Elastic 软件仓库到本地 Helm 客户端中;接着执行 `helm install` 来安装名为 `filebeat` 的实例,并指定了命名空间和其他一些参数来适应 Linux 系统上的节点日志采集需求[^2]。 #### 手动方式安装 Filebeat 如果偏好更细粒度控制,则可以选择不依赖 Helm 进行安装。这涉及到下载合适的 YAML 文件模板并对其进行适当修改后再提交给集群: 1. 下载最新的稳定版本的 Filebeat 发布页面中的 Kubernetes 清单文件; 2. 修改该清单文件内的各项设定项(如镜像标签、资源请求等),确保其适合当前环境; 3. 将调整后的文件上传至服务器并通过如下指令完成部署操作: ```bash kubectl apply -f path/to/your-modified-filebeat.yaml ``` 此法允许管理员完全掌控每一个细节,但也增加了工作量以及潜在错误的风险。 #### 关联组件和服务发现机制 当考虑如何让 Filebeat 正确找到目标 Pod 日志时,应该注意到 Kubernetes 提供的服务发现功能。特别是 Headless Service,在这种情况下不会分配 Cluster IP 地址而是直接返回 Endpoints 即实际 Pods 的地址列表[^3]。因此,合理利用这类特性可以帮助优化数据抓取路径设计。 #### 数据处理与转发策略 考虑到收集的数据最终可能需要发送到不同的目的地做进一步分析或存储,此时类似于 Fluentd 的解决方案就显得尤为重要。作为一款强大的日志聚合器,Fluentd 不仅支持多源输入还具备灵活的目标输出选项,非常适合用来构建完整的日志管道体系结构[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lixiaolinzq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值