使用 ELK 监控 Kubernetes (k8s) 中的容器日志,需要将容器的日志输出到一个 ELK 可以收集的地方。以下是实现这一目标的步骤:

步骤 1: 确保 ELK 环境运行

确保你的 ELK 环境已经搭建并运行。你需要 Elasticsearch 来存储日志数据,Logstash 来处理和转发日志,以及 Kibana 来查看和分析日志。

步骤 2: 配置 Filebeat

  1. 安装 Filebeat:在所有运行容器的 Kubernetes 节点上安装 Filebeat。你可以使用 DaemonSet 来在每个节点上自动部署 Filebeat。

  2. 配置 Filebeat:修改 Filebeat 的配置文件(通常位于 /etc/filebeat/filebeat.yml),指定日志文件的位置和输出目标。

filebeat.inputs:
- type: container
  paths:
    - "/var/log/containers/*.log"

output.logstash:
  hosts: ["<logstash-service>:<port>"]

这里,<logstash-service> 是 Logstash 服务的 DNS 名称,<port> 是 Logstash 监听的端口。

  1. 部署 Filebeat:使用 DaemonSet 将 Filebeat 部署到 Kubernetes 集群中。
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: filebeat
  namespace: kube-system
spec:
  selector:
    matchLabels:
      app: filebeat
  updateStrategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: filebeat
    spec:
      serviceAccountName: filebeat
      containers:
      - name: filebeat
        image: docker.elastic.co/beats/filebeat:7.x
        command: ["/usr/local/bin/filebeat", "-c", "/etc/filebeat/filebeat.yml"]
        volumeMounts:
        - name: log
          mountPath: /var/log
        - name: config
          mountPath: /etc/filebeat
      volumes:
      - name: log
        hostPath:
          path: /var/log
      - name: config
        configMap:
          name: filebeat-config
  1. 创建 ConfigMap:如果你需要自定义 Filebeat 配置,可以创建一个 ConfigMap 并挂载到 Filebeat 的 Pod 中。

步骤 3: 配置 Logstash (可选)

如果你使用 Logstash 作为中间处理层,确保 Logstash 配置正确,以便从 Filebeat 接收日志并发送到 Elasticsearch。

步骤 4: 配置 Kibana

在 Kibana 中,创建索引模式以匹配 Logstash 发送到 Elasticsearch 的日志索引。

步骤 5: 验证日志收集

  1. 检查 Filebeat 状态:确保 Filebeat 正在运行,并且没有错误日志。

  2. 查看 Elasticsearch:在 Elasticsearch 中查看日志数据是否正在流入。

  3. 使用 Kibana:在 Kibana 中查看和分析日志数据。

注意事项

  • 确保 Kubernetes 节点上的日志文件路径与 Filebeat 配置中指定的路径相匹配。
  • 如果你的 Kubernetes 集群使用的是 containerd 作为容器运行时,日志路径可能与 Docker 不同,确保 Filebeat 配置正确。
  • 根据你的具体需求,可能需要调整 Filebeat 和 Logstash 的配置,以正确处理和转发日志。
  • 考虑到安全性,确保 ELK 组件之间的通信是加密的,并且访问控制得当。

通过这些步骤,你可以实现使用 ELK 监控 Kubernetes 集群中容器的日志。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐