为 Google Kubernetes Engine 自定义 Cloud Logging 日志

作者:MeshCloud脉时云公有云架构师 陈满

一、概述:

1、Cloud logging是什么?

Google Cloud Platform 提供的日志分析服务。它使您可以收集、存储、搜索和分析来自 Google Cloud Platform 资源和其他系统的日志数据。

Cloud Logging 提供以下功能:

  • 从各种来源收集日志数据,包括 Google Cloud Platform 资源、本地系统、第三方系统等。
  • 存储日志与检索日志数据,以便您可以随时访问和您可以快速找到所需的日志信息。
  • 分析日志数据,以便您可以识别模式和趋势。

Cloud Logging 可用于各种场景,包括:

  • 故障排除和问题解决:使用 Cloud Logging,您可以查看日志数据以了解您的系统或服务发生了什么。
  • 安全监控:使用 Cloud Logging,您可以监控您的系统日志以查找安全事件。
  • 合规性:使用 Cloud Logging,您可以存储和分析日志数据以满足合规性要求。

2、GKE 是什么?

Google Kubernetes Engine (GKE) 是 Google Cloud Platform 提供的完全托管的 Kubernetes 服务。它使您可以快速和轻松地在云中编排运行容器化应用。

GKE 提供以下功能:

  • 完全托管:GKE 会自动管理 Kubernetes 集群的所有基础设施。
  • 易于使用:GKE 提供了一个简单的界面,使您可以轻松地部署、管理和扩展容器化应用。
  • 可扩展性:GKE 可扩展到满足您的需求。

GKE 适用于各种场景,包括:

  • 微服务:GKE 是部署微服务的理想选择。
  • 数据分析:GKE 可用于运行大规模数据分析工作负载。
  • 机器学习:GKE 可用于训练和部署机器学习模型。
  • 游戏:GKE 可用于运行游戏服务器。

3、Fluent Bit 是什么?

Fluent Bit 是一个开源的日志处理器和转发器,它可以从不同来源收集任何数据,如指标和日志,用过滤器处理它们并将它们发送到多个目的地。 它是 Kubernetes 等容器化环境的首选。 Fluent Bit 的设计考虑到了性能:高吞吐量、低 CPU 和内存使用率。

Fluent Bit 的核心功能包括:

  • 从各种来源收集数据,包括文件、网络、容器、设备等。
  • 使用过滤器来处理数据,例如过滤、转换、聚合等。
  • 将数据发送到多个目的地,例如 Elasticsearch、Logstash、S3、Kafka 等。

Fluent Bit 的优势包括:

  • 高性能:Fluent Bit 采用了高性能的设计,可以处理高吞吐量的日志数据。
  • 低资源消耗:Fluent Bit 的资源消耗非常低,可以运行在嵌入式设备上。
  • 可扩展性:Fluent Bit 支持多种插件,可以扩展其功能。
  • 社区支持:Fluent Bit 拥有活跃的社区,提供丰富的文档和资源。

Fluent Bit 在 Kubernetes 环境中很受欢迎,因为它可以轻松地与 Kubernetes 集成。 Fluent Bit 可以通过 Helm Chart 部署到 Kubernetes 中,并可以使用 Kubernetes 的资源管理功能来管理 Fluent Bit 的资源使用。

二、默认GKE Cluster Logging配置下,使用可配置的Fluent Bit 将GKE log发送到Cloud Logging中,进一步优化日志性能与成本

2.1 创建GKE 集群:

gcloud container clusters create gke-with-custom-fluentd 
  --zone us-east1-b 
  --logging=SYSTEM 
  --network=default 
  --tags=gke-cluster-with-customized-fluentd 
  --scopes=logging-write,storage-

2.2 将 test-logger 应用部署到 GKE 集群::

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-logger
spec:
  replicas: 3
  selector:
    matchLabels:
      component: test-logger
  template:
    metadata:
      labels:
        component: test-logger
    spec:
      containers:
        - name: test-logger
          image: gcr.io/yunion-test-xxxxxx/test-logger
####
kubectl apply -f kubernetes/test-logger-deploy.yaml

查看 test-logger pod 的状态:

为 Google Kubernetes Engine 自定义 Cloud Logging 日志

三、将Fluent Bit 部署到GKE 集群:

3.1 创建Fluent Bit configMap ,fluentbit-configmap.yaml

kubectl apply -f kubernetes/fluentd-configmap.yaml

3.2 通过Daemonset 部署Fluent Bit 进程自定义收集log:

kubectl apply -f kubernetes/fluentd-daemonset.yaml[2]

3.3 查看检查 Fluent bit pod 是否已启动

kubectl get pods –namespace=kube-system

为 Google Kubernetes Engine 自定义 Cloud Logging 日志

3.4 在Cloud Logging中,验证是否看到日志。在控制台的左侧,选择 Logging > 日志浏览器,然后在资源列表中选择 Kubernetes 容器作为资源类型:

为 Google Kubernetes Engine 自定义 Cloud Logging 日志

3.5 过滤日志文件中的敏感信息如账号、电子邮件信息

  1. 编辑 kubernetes/fluentbit-configmap.yaml
  2. 取消 ### sample log scrubbing filters 和### end sample log scrubbing filters 之间的注释.
  3. 重新改变 configmap 文件fluent-bit-config 为 fluent-bit-config-filtered 的metadata.name.
  4. 重新部署Fluent-bit ,并在Logging中验证,filter 后的结果,如下:

kubectl apply -f
kubernetes/fluentd-configmap.yaml // 部署filter 敏感数据的configMap

kubectl apply -f
kubernetes/fluentd-daemonset.yaml //部署新的Fluent bit

kubectl rollout status ds/fluentd-gcp –namespace=kube-system // 滚动更新Fluent bit pod

为 Google Kubernetes Engine 自定义 Cloud Logging 日志

[1] https://fluentbit.io/

[2] [fluentd-daemonset.yaml](https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-customize-fluentd/cf30d2409f591b885673378d70691bcf98a43ff6/kubernetes/fluentd-daemonset.yaml)

[3] [fluentbit-configmap.yaml](<https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-customize-fluentd/cf30d2409f591b885673378d70691bcf98a43ff6/kubernetes/fluentd-configmap.yaml>)

[4] https://cloud.google.com/architecture/customizing-stackdriver-logs-fluentd?hl=zh-cn

发表评论

您的电子邮箱地址不会被公开。