GKE on VMware 提供多种集群日志记录和监控选项,包括云端代管式服务、开源工具,以及经过验证的与第三方商业解决方案的兼容性。本文档介绍了这些选项,并为您选择适合自己环境的正确解决方案提供了一些基本指导。
GKE on VMware 的选项
您可以为 GKE on VMware 提供多种日志记录和监控选项:
- Cloud Logging 和 Cloud Monitoring
- Google Cloud Managed Service for Prometheus(预览版)
- Prometheus 和 Grafana
- 经过验证且适用于第三方解决方案的配置。
Cloud Logging 和 Cloud Monitoring
Google Cloud Observability(原 Stackdriver)是 Google Cloud 的内置可观测性解决方案。它提供了全代管式日志记录解决方案、指标收集、监控、信息中心和提醒。Cloud Monitoring 监控 GKE on VMware 集群的方式与云端 GKE 集群类似。
您可以为集群内代理配置监控和日志记录范围,以及收集的指标级别:
- 日志记录和监控范围可以仅设置为系统组件(默认值)或者针对系统组件和应用进行设置
- 可以为优化的指标集或者针对所有指标配置所收集的指标级别
如需了解详情,请参阅本文档中的为 Anthos clusters on VMware 配置 Logging 和 Monitoring 代理。
Cloud Logging 和 Cloud Monitoring 为需要单一、易于配置且基于云的强大可观测性解决方案的客户提供了理想的解决方案。如果仅在 GKE on VMware 上运行工作负载,或在 GKE 和 GKE on VMware 上运行工作负载,我们强烈建议使用 Logging 和 Monitoring。对于组件在 GKE on VMware 和传统本地基础架构上运行的应用,您可以考虑采用其他解决方案来端到端地查看这些应用。
如需详细了解架构、配置以及默认将哪些数据复制到 GKE on VMware 的 Google Cloud 项目,请参阅 GKE on VMware 的日志记录和监控的工作原理部分。
如需详细了解 Cloud Logging,请参阅 Cloud Logging 文档。
如需详细了解 Cloud Monitoring,请参阅 Cloud Monitoring 文档。
Prometheus 和 Grafana
Prometheus 和 Grafana 是两种热门的开源监控产品:
Prometheus 会收集应用和系统指标。
Alertmanager 使用多种不同的提醒机制来发出提醒。
Grafana 是一种信息中心工具。
您可以在每个管理员集群和用户集群上启用 Prometheus 和 Grafana。建议使用 Prometheus 和 Grafana 的对象:之前使用过这些产品的应用团队,或者希望在集群内保留应用指标的运营团队,以及网络连接断开时排查问题的团队。
第三方解决方案
Google 与多个第三方日志记录和监控解决方案提供商合作,帮助他们的产品与 GKE on VMware 完美配合。这些提供方包括 Datadog、Elastic 和 Splunk。将来我们会添加经过验证的其他第三方。
如需详细了解如何将第三方解决方案与 GKE on VMware 配合使用,请参阅以下内容:
GKE on VMware 日志记录和监控的工作原理
当您创建新管理员集群或用户集群时,系统会在每个集群中安装并激活 Logging 和 Monitoring 代理。代理会收集系统组件的相关数据,您可以配置这些组件的范围。
如需在 Google Cloud 控制台上查看收集的数据,您必须配置存储要查看的日志和指标的 Google Cloud 项目。
每个集群上的 Logging 和 Monitoring 代理包括:
GKE 指标代理 (
gke-metrics-agent
)。将指标发送到 Cloud Monitoring API 的 DaemonSet。Log Forwarder (
stackdriver-log-forwarder
)。一个 Fluent Bit DaemonSet,用于将日志从每台机器转发到 Cloud Logging。Log Forwarder 会将节点上的日志条目在本地进行缓冲,并在 4 小时内将其重新发送出去。如果缓冲区已满,或者 Log Forwarder 无法访问 Cloud Logging API 的时间超过 4 小时,日志会被丢弃。全局 GKE 指标代理 (
gke-metrics-agent-global
)。一个 Deployment,用于将指标发送到 Cloud Monitoring API。Metadata 代理 (
stackdriver-metadata-agent
)。一个 Deployment,用于将 Pod、部署或节点等 Kubernetes 资源的元数据发送到 Stackdriver Resource Metadata API;这些数据用于通过部署名称、节点名称甚至 Kubernetes 服务名称进行查询来丰富指标查询。
您可以运行以下命令来查看所有 Deployment 代理:
kubectl --kubeconfig CLUSTER_KUBECONFIG get deployments -l "managed-by=stackdriver" --all-namespaces
其中,CLUSTER_KUBECONFIG 是集群的 kubeconfig 文件的路径。
此命令的输出类似如下所示:
gke-metrics-agent-global 1/1 Running 0 4h31m stackdriver-metadata-agent-cluster-level 1/1 Running 0 4h31m
您可以运行以下命令来查看所有 DaemonSet 代理:
kubectl --kubeconfig CLUSTER_KUBECONFIG get daemonsets -l "managed-by=stackdriver" --all-namespaces
此命令的输出类似以下内容:
gke-metrics-agent 1/1 Running 0 4h31m stackdriver-log-forwarder 1/1 Running 0 4h31m
为 GKE on VMware 配置日志记录和监控代理
随 GKE on VMware 安装的代理会根据您的设置和配置收集有关系统组件的数据,用于维护和排查集群问题。
仅限系统组件(默认范围)
安装后,代理会收集 Google 所提供系统组件的日志和指标,包括性能详情(如 CPU 和内存利用率)和类似元数据。这些组件包括管理员集群中的所有工作负载,以及用户集群的 kube-system、gke-system、gke-connect、istio-system、config-management-system 命名空间中的工作负载。您可以按照以下各部分所述配置或停用代理。
您还可以扩展收集的日志和指标的范围,使其也包括应用。有关启用应用日志记录和监控功能的说明,请参阅为用户应用启用 Logging 和 Monitoring。
优化指标(默认指标)
默认情况下,集群中运行的指标代理会收集一组经过优化的容器、kubelet 和 kube-state-metrics 指标并报告给 Google Cloud Observability(以前称为 Stackdriver)。
收集这组优化的指标需要较少资源,可以提高整体性能和可伸缩性。这对于容器级和 kube 级指标尤为重要,因为需要监控大量对象。
如需停用优化的 kube-state-metrics 指标(不推荐),请在 Stackdriver 自定义资源中将 optimizedMetrics
字段设置为 false
。如需详细了解如何更改 Stackdriver 自定义资源,请参阅配置 Stackdriver 组件资源。GKE Enterprise 指标中介绍了所有 GKE on VMware 指标(包括默认排除的指标)。
启用和停用 Stackdriver
您可以通过启用或停用 Stackdriver 自定义资源来完全启用或停用 Logging 和 Monitoring 代理。此功能处于预览阶段。
在停用 Logging 和 Monitoring 代理之前,请参阅支持页面,详细了解停用代理会如何影响 Google Cloud 支持的服务等级协议 (SLA)。
Logging 和 Monitoring 代理会根据您的存储和保留配置捕获本地存储的数据。通过使用有权将数据写入安装时指定的 Google Cloud 项目的服务账号,系统会将数据复制到该项目。 如前所述,您可以随时停用这些代理。
您还可以管理和删除 Logging 和 Monitoring 代理发送到 Cloud Logging 和 Cloud Monitoring 的数据。如需了解详情,请参阅 Cloud Monitoring 文档。
Logging 和 Monitoring 的配置要求
如需查看 Cloud Logging 和 Cloud Monitoring 数据,您必须配置用于存储要查看的日志和指标的 Google Cloud 项目。此 Google Cloud 项目被称为日志记录和监控项目。
在日志记录和监控项目中启用以下 API:
向日志记录和监控服务账号授予日志记录和监控项目上的以下 IAM 角色。
logging.logWriter
monitoring.metricWriter
stackdriver.resourceMetadata.writer
monitoring.dashboardEditor
opsconfigmonitoring.resourceMetadata.writer
价格
GKE Enterprise 系统日志和指标是免费的。 对于 Google Cloud 上的 GKE 集群,在启用 GKE Enterprise 的项目中注册集群时,系统会默认启用控制平面日志、控制平面指标和一部分精选 Kube 状态指标。控制平面日志会产生 Cloud Logging 费用,而默认开启的指标也包含在内,无需额外付费。
如需查看所包含的 GKE 日志和指标的列表,请参阅 可用日志和 可用指标。
在 GKE on VMware 集群中,GKE Enterprise 系统日志和指标包括以下内容:
- 管理员集群中所有组件的日志和指标
- 用户集群的以下命名空间中组件的日志和指标:
kube-system
、gke-system
、gke-connect
、knative-serving
、istio-system
、monitoring-system
、config-management-system
、gatekeeper-system
、cnrm-system
如需了解详情,请参阅 Google Cloud 可观测性价格。
如需了解 Cloud Logging 指标的赠送金额,请与销售人员联系了解价格。
适用于 GKE on VMware 的 Prometheus 和 Grafana 的工作原理
每个 GKE on VMware 集群在创建时默认停用 Prometheus 和 Grafana。您可以按照安装指南启用它们。
Prometheus Server 采用高可用性配置,该配置有两个副本在两个单独的节点上运行。资源要求已调整,以支持运行多达 5 个节点的集群,其中每个节点最多可处理 30 个提供自定义指标的 Pod。Prometheus 有一个专用的 PersistentVolume,其磁盘空间已预先分配以保存保留期限为 4 天的数据,另外还有一个额外的安全缓冲区。
管理员控制层面以及每个用户集群都有一个专用的监控堆栈,您可以单独配置该堆栈。每个管理员集群和用户集群都包含一个监控堆栈,该堆栈提供一系列功能:用于监控的 Prometheus Server、用于实现可观测性的 Grafana,以及用于提醒的 Prometheus Alertmanager。
所有监控端点、传输的指标数据和监控 API 均使用 mTLS 和 RBAC 规则通过 Istio 组件进行保护。只有集群管理员可以访问监控数据。
Prometheus 收集的指标
Prometheus 从管理员控制层面和用户集群中收集以下指标和元数据:
- 资源使用情况,例如 Pod 和节点上的 CPU 利用率。
- Kubernetes 控制层面指标。
- 在节点上运行的插件和 Kubernetes 系统组件(例如 kubelet)的指标。
- 集群状态,例如某个 Deployment 中的 Pod 运行状况。
- 应用指标。
- 机器指标,例如网络、熵和 inode。
多集群监控
管理员集群上安装的 Prometheus 和 Grafana 实例经过专门配置,可提供整个 GKE on VMware 实例(包括管理员集群和每个用户集群)的数据分析。这将允许您:
- 使用 Grafana 信息中心访问所有用户集群和管理员集群中的指标。
- 在 Grafana 信息中心查看各个用户集群的指标;这些指标可用于以全分辨率显示的直接查询。
- 访问用户集群的节点级层和工作负载指标(工作负载指标仅限于在 kube-system 命名空间中运行的工作负载),以查看汇总查询、信息中心和提醒。
- 为特定集群配置提醒。