作者: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 的状态:
三、将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
3.4 在Cloud Logging中,验证是否看到日志。在控制台的左侧,选择 Logging > 日志浏览器,然后在资源列表中选择 Kubernetes 容器作为资源类型:
3.5 过滤日志文件中的敏感信息如账号、电子邮件信息
- 编辑 kubernetes/fluentbit-configmap.yaml
- 取消 ### sample log scrubbing filters 和### end sample log scrubbing filters 之间的注释.
- 重新改变 configmap 文件fluent-bit-config 为 fluent-bit-config-filtered 的metadata.name.
- 重新部署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
[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