5.24 日志收集实战:ELK Stack在Kubernetes中的部署与应用

引言

ELK Stack(Elasticsearch、Logstash、Kibana)是流行的日志收集和分析方案。在Kubernetes中部署ELK Stack可以实现集中式日志管理。本文将详细介绍ELK Stack的部署方法。

一、ELK Stack概述

1.1 组件

  • Elasticsearch:日志存储和搜索
  • Logstash:日志处理和转发
  • Kibana:日志可视化

1.2 架构

应用 → Filebeat/Logstash → Elasticsearch → Kibana

二、部署Elasticsearch

2.1 使用Helm部署

helm repo add elastic https://helm.elastic.co
helm install elasticsearch elastic/elasticsearch \
  --namespace logging \
  --create-namespace \
  --set replicas=3

2.2 基本配置

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: elasticsearch
spec:
  serviceName: elasticsearch
  replicas: 3
  template:
    spec:
      containers:
      - name: elasticsearch
        image: docker.elastic.co/elasticsearch/elasticsearch:8.8.0
        env:
        - name: discovery.seed_hosts
          value: "elasticsearch-0,elasticsearch-1,elasticsearch-2"

三、部署Logstash

3.1 Logstash配置

apiVersion: v1
kind: ConfigMap
metadata:
  name: logstash-config
data:
  logstash.conf: |
    input {
      beats {
        port => 5044
      }
    }
    filter {
      grok {
        match => { "message" => "%{COMBINEDAPACHELOG}" }
      }
    }
    output {
      elasticsearch {
        hosts => ["elasticsearch:9200"]
      }
    }

四、部署Kibana

4.1 Kibana部署

helm install kibana elastic/kibana \
  --namespace logging \
  --set elasticsearchHosts=http://elasticsearch:9200

五、Filebeat配置

5.1 Filebeat DaemonSet

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: filebeat
spec:
  template:
    spec:
      containers:
      - name: filebeat
        image: docker.elastic.co/beats/filebeat:8.8.0
        volumeMounts:
        - name: varlog
          mountPath: /var/log
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
      volumes:
      - name: varlog
        hostPath:
          path: /var/log
      - name: varlibdockercontainers
        hostPath:
          path: /var/lib/docker/containers

六、最佳实践

6.1 配置建议

  • 使用StatefulSet部署Elasticsearch
  • 配置持久化存储
  • 设置资源限制
  • 监控集群健康

总结

通过本文,你学会了:

  1. ELK Stack部署:Elasticsearch、Logstash、Kibana
  2. Filebeat配置:DaemonSet部署
  3. 最佳实践:配置建议

下一步学习

  • 5.25 日志聚合与分析
  • 6.1 Bookinfo项目架构解析

思考题

  1. 如何部署高可用的Elasticsearch?
  2. 如何配置日志收集?
  3. 如何优化日志存储?

提示:ELK Stack是日志管理的标准方案。下一节我们将学习日志聚合方案对比。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐