GKE On-Prem 包含多种集群日志记录和监控选项,其中包括云端代管式服务、开放源代码工具,以及经过验证的与第三方商业解决方案的兼容性。本页介绍了这些选项,并为您选择适合您环境的正确解决方案提供了一些基本指导。
GKE On-Prem 的选项
您可以为 GKE On-Prem 集群提供多种日志记录和监控选项:
- Cloud Logging 和 Cloud Monitoring,由使用 GKE On-Prem 部署的集群内代理启用。
- Prometheus 和 Grafana,默认情况下处于停用状态。
- 经过验证且适用于第三方解决方案的配置。
Cloud Logging 和 Cloud Monitoring
Google Cloud 的运维套件是 Google Cloud 的内置可观测性解决方案。它提供了全代管式日志记录解决方案、指标收集、监控、信息中心和提醒。Cloud Monitoring 监控 GKE On-Prem 集群的方式与基于云的 GKE 集群的监控方式类似。
可以针对监控和日志记录范围以及所收集的指标级别配置集群内代理:
- 日志记录和监控范围可以仅设置为系统组件(默认值)或者针对系统组件和应用进行设置
- 可以为优化的指标集或者针对所有指标配置所收集的指标级别
如需了解详情,请参阅本页面上的为 Anthos clusters on VMware 配置 Stackdriver 代理。
Logging 和 Monitoring 为需要单一、易于配置且基于云的强大可观测性解决方案的客户提供了理想的解决方案。如果仅在 GKE On-Prem 上运行工作负载,或者在 GKE 和 GKE On-Prem 上运行工作负载,我们强烈建议使用 Logging 和 Monitoring。对于组件在 GKE On-Prem 和传统本地基础架构上运行的应用,您可以考虑采用其他解决方案来实现这些应用的端到端视图。
如需详细了解架构、配置以及默认复制到您的 Google Cloud 项目中 GKE On-Prem 的数据,请参阅适用于 GKE On-Prem 的 Logging 和 Monitoring 的工作原理。
如需详细了解 Logging,请参阅 Cloud Logging 文档。
如需详细了解 Monitoring,请参阅 Cloud Monitoring 文档。
Prometheus 和 Grafana
Prometheus 和 Grafana 是两种热门的开源监控产品:
Prometheus 会收集应用和系统指标。
Alertmanager 使用多种不同的提醒机制来发出提醒。
Grafana 是一种信息中心工具。
您可以在每个管理员集群和用户集群上启用 Prometheus 和 Grafana。建议使用 Prometheus 和 Grafana 的对象:之前使用过这些产品的应用团队,或者希望在集群内保留应用指标的运营团队,以及网络连接断开时排查问题的团队。
第三方解决方案
Google 与多个第三方日志记录和监控解决方案提供商合作,帮助他们的产品与 GKE On-Prem 很好地搭配使用。这些提供商包括 Datadog、Elastic 和 Splunk。将来我们会添加经过验证的其他第三方。
以下解决方案指南适用于将第三方解决方案与 GKE On-Prem 搭配使用:
适用于 GKE On-Prem 的 Logging 和 Monitoring 的工作原理
创建新管理员集群或用户集群时,系统会在每个集群中安装并激活日志记录和指标代理。
Stackdriver 代理在每个集群上都包含多个组件:
Stackdriver Operator (
stackdriver-operator-*
):管理部署到集群上的所有其他 Stackdriver 代理的生命周期。Stackdriver Custom Resource:在 GKE On-Prem 安装过程中自动创建的资源;用户可以随时更改自定义资源以更新值(例如项目 ID、集群名称和集群位置)。
Stackdriver Log Aggregator (
stackdriver-log-aggregator-*
):一个将日志发送到 Cloud Logging API 的 Fluentd StatefulSet;如果无法发送日志,则 Log Aggregator 会缓冲多达 200 GB 的日志条目,并且在之后 24 小时内尝试重新发送日志。如果缓冲区已满或 Log Aggregator 超过 24 小时无法访问 Logging API,则日志会被丢弃。Stackdriver Log Forwarder (
stackdriver-log-forwarder-*
):一个 Fluentbit daemonset,用于将每台机器的日志转发到 Stackdriver Log Aggregator。Stackdriver Metrics Collector (
stackdriver-prometheus-k8s-
):一个 Prometheus 和 Stackdriver Prometheus Sidecar StatefulSet,用于将 Prometheus 指标发送到 Cloud Logging API。Stackdriver Metadata Collector (
stackdriver-metadata-agent-
):一个部署,用于将 Pod、部署或节点等 Kubernetes 资源的元数据发送到 Stackdriver Resource Metadata API;这些数据用于通过部署名称、节点名称甚至 Kubernetes 服务名称进行查询来丰富指标查询。
您可以通过运行以下命令查看 Stackdriver 安装的所有代理:
kubectl -n kube-system get pods | grep stackdriver
此命令的输出类似如下所示:
stackdriver-log-aggregator-0 1/1 Running 0 4h31m stackdriver-log-aggregator-1 1/1 Running 0 4h28m stackdriver-log-forwarder-bpf8g 1/1 Running 0 4h31m stackdriver-log-forwarder-cht4m 1/1 Running 0 4h31m stackdriver-log-forwarder-fth5s 1/1 Running 0 4h31m stackdriver-log-forwarder-kw4j2 1/1 Running 0 4h29m stackdriver-metadata-agent-cluster-level... 1/1 Running 0 4h31m stackdriver-operator-76ddb64d57-4tcj9 1/1 Running 0 4h37m stackdriver-prometheus-k8s-0 2/2 Running 0 4h31m
为 GKE On-Prem 配置 Stackdriver 代理
与 GKE On-Prem 一起安装的 Stackdriver 代理会根据您的设置和配置收集有关系统组件的数据,以便维护集群并排查其问题。
仅限系统组件(默认范围)
安装后,Stackdriver 代理会收集 Google 所提供系统组件的日志和指标,包括性能详情(如 CPU 和内存利用率)和类似元数据。这些组件包括管理员集群中的所有工作负载,以及用户集群的 kube-system、gke-system、gke-connect、istio-system、config-management-system 命名空间中的工作负载。您可以按照以下部分中的说明,配置或停用 Stackdriver 代理。
您也可以扩展收集的日志和指标的范围,使其也包括应用。有关启用应用日志记录和监控功能的说明,请参阅为用户应用启用 Logging 和 Monitoring。
优化指标(默认指标)
默认情况下,集群中运行的指标代理会收集一组优化的容器和 kubelet 指标,并报告给 Google Cloud 的运维套件(原 Stackdriver)。收集这组优化的指标需要较少资源,可以提高整体性能和可伸缩性。这对于容器级指标尤为重要,因为需要监控大量对象。
如需停用优化指标(不推荐),请在 Stackdriver 自定义资源中将 optimizedMetrics
字段设置为 false
。如需详细了解如何更改 Stackdriver 自定义资源,请参阅配置 Stackdriver 组件资源。Anthos 指标中介绍了所有指标(包括默认排除的指标)。
Stackdriver 已停用
您可以通过删除 Stackdriver 自定义资源来完全停用 Stackdriver 代理。在停用 Stackdriver 之前,请参阅支持页面,详细了解停用操作会如何影响 Google Cloud 支持的服务等级协议 (SLA)。
要为 GKE On-Prem 停用 Stackdriver,请运行以下命令:
kubectl -n kube-system delete stackdriver stackdriver
Stackdriver 代理会根据您的存储和保留配置捕获本地存储的数据。通过使用有权将数据写入安装时指定的 Google Cloud 项目的服务帐号,系统会将数据复制到该项目。如前所述,您可以随时停用 Stackdriver 代理。正如 Cloud Monitoring 文档所述,您可以像处理任何其他指标和日志数据一样,管理和删除 Stackdriver 代理收集的数据。
Logging 和 Monitoring 的配置要求
要将 Logging 和 Monitoring 用于集群,您必须配置要在其中查看日志和指标的 Google Cloud 项目。此 Google Cloud 项目被称为日志记录和监控项目。
在日志记录和监控项目中启用以下 API:
向日志记录和监控服务帐号授予日志记录和监控项目上的以下 IAM 角色。
logging.logWriter
monitoring.metricWriter
stackdriver.resourceMetadata.writer
monitoring.dashboardEditor
价格
您无需为 Anthos 系统日志和指标付费。
在 GKE On-Prem 集群中,Anthos 系统日志和指标包括:
- 管理员集群中所有组件的日志和指标
- 用户集群的以下命名空间中组件的日志和指标:
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-Prem 的 Prometheus 和 Grafana 的工作原理
系统默认在停用 Prometheus 和 Grafana 的情况下创建每个 GKE On-Prem。您可以按照安装指南启用它们。
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-Prem 实例(包括管理员集群和每个用户集群)的数据洞见。这将允许您:
- 使用 Grafana 信息中心访问所有用户集群和管理员集群中的指标。
- 在 Grafana 信息中心查看各个用户集群的指标;这些指标可用于以全分辨率显示的直接查询。
- 访问用户集群的节点级层和工作负载指标(工作负载指标仅限于在 kube-system 命名空间中运行的工作负载),以查看汇总查询、信息中心和提醒。
- 为特定集群配置提醒。