日志记录和监控

Anthos clusters on VMware (GKE On-Prem) 包含多种集群日志记录和监控选项,其中包括云端代管式服务、开放源代码工具,以及经过验证的与第三方商业解决方案的兼容性。本文档介绍了这些选项,并为您选择适合您环境的正确解决方案提供了一些基本指导。

Anthos clusters on VMware 选项

您的 Anthos clusters on VMware 有多个日志记录和监控选项:

  • Cloud Logging 和 Cloud Monitoring,由使用 Anthos clusters on VMware 部署的集群内代理启用。
  • Prometheus 和 Grafana,默认情况下处于停用状态。
  • 经过验证且适用于第三方解决方案的配置。

Cloud Logging 和 Cloud Monitoring

Google Cloud 的运维套件(以前称为 Stackdriver)是 Google Cloud 的内置可观测性解决方案。它提供了全代管式日志记录解决方案、指标收集、监控、信息中心和提醒。Cloud Monitoring 监控 Anthos clusters on VMware 集群的方式与基于云的 GKE 集群的监控方式类似。

您可以为集群内代理配置监控和日志记录范围,以及收集的指标级别:

  • 日志记录和监控范围可以仅设置为系统组件(默认值)或者针对系统组件和应用进行设置
  • 可以为优化的指标集或者针对所有指标配置所收集的指标级别

如需了解详情,请参阅本文档中的为 Anthos clusters on VMware 配置 Logging 和 Monitoring 代理

Cloud Logging 和 Cloud Monitoring 为需要单一、易于配置且基于云的强大可观测性解决方案的客户提供了理想的解决方案。如果仅在 Anthos clusters on VMware 上运行工作负载,或者在 GKE 和 Anthos clusters on VMware 上运行工作负载,我们强烈建议使用 Logging 和 Monitoring。对于组件在 Anthos clusters on VMware 和传统本地基础架构上运行的应用,您可以考虑采用其他解决方案来实现这些应用的端到端视图。

Prometheus 和 Grafana

Prometheus 和 Grafana 是两种热门的开源监控产品:

  • Prometheus 会收集应用和系统指标。

  • Alertmanager 使用多种不同的提醒机制来发出提醒。

  • Grafana 是一种信息中心工具。

您可以在每个管理员集群和用户集群上启用 Prometheus 和 Grafana。建议使用 Prometheus 和 Grafana 的对象:之前使用过这些产品的应用团队,或者希望在集群内保留应用指标的运营团队,以及网络连接断开时排查问题的团队。

第三方解决方案

Google 与多个第三方日志记录和监控解决方案提供商合作,帮助他们的产品与 Anthos clusters on VMware 很好地搭配使用。这些提供商包括 Datadog、Elastic 和 Splunk。将来我们会添加经过验证的其他第三方。

以下解决方案指南适用于将第三方解决方案与 Anthos clusters on VMware 搭配使用:

以下博文讨论了 Elastic 的功能:

适用于 Anthos clusters on VMware 的 Logging 和 Monitoring 的工作原理

当您创建新管理员集群或用户集群时,系统会在每个集群中安装并激活 Logging 和 Monitoring 代理。代理会收集系统组件的相关数据,您可以配置这些组件的范围。

要在 Google Cloud Console 上查看收集的数据,您必须配置存储要查看的日志和指标的 Cloud 项目。

每个集群上的 Logging 和 Monitoring 代理包括:

  • GKE 指标代理 (gke-metrics-agent)。将指标发送到 Cloud Monitoring API 的 DaemonSet。

  • 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" --allnamespaces

其中,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" --allnamespaces

此命令的输出类似如下所示:

gke-metrics-agent                             1/1     Running   0   4h31m
stackdriver-log-forwarder                     1/1     Running   0   4h31m

为 Anthos clusters on VMware 配置 Logging 和 Monitoring 代理

与 Anthos clusters on VMware 一起安装的代理会根据您的设置和配置收集有关系统组件的数据,以便维护集群并排查其问题。

仅限系统组件(默认范围)

安装后,代理会收集 Google 所提供系统组件的日志和指标,包括性能详情(如 CPU 和内存利用率)和类似元数据。这些组件包括管理员集群中的所有工作负载,以及用户集群的 kube-system、gke-system、gke-connect、istio-system、config-management-system 命名空间中的工作负载。您可以按照以下各部分所述配置或停用代理。

您也可以扩展收集的日志和指标的范围,使其也包括应用。有关启用应用日志记录和监控功能的说明,请参阅为用户应用启用 Logging 和 Monitoring

优化指标(默认指标)

默认情况下,集群中运行的指标代理会收集一组优化的容器和 kubelet 指标,并报告给 Google Cloud 的运维套件(原 Stackdriver)。收集这组优化的指标需要较少资源,可以提高整体性能和可伸缩性。这对于容器级指标尤为重要,因为需要监控大量对象。

如需停用优化指标(不推荐),请在 Stackdriver 自定义资源中将 optimizedMetrics 字段设置为 false。如需详细了解如何更改 Stackdriver 自定义资源,请参阅配置 Stackdriver 组件资源Anthos 指标介绍了所有 Anthos clusters on VMware 指标(包括默认排除的指标)。

启用和停用 Stackdriver

您可以通过启用或停用 Stackdriver 自定义资源来完全启用或停用 Logging 和 Monitoring 代理。在停用 Logging 和 Monitoring 代理之前,请参阅支持页面,详细了解停用代理会如何影响 Google Cloud 支持的服务等级协议 (SLA)。

如需为 Anthos clusters on VMware 停用 Stackdriver 自定义资源,请执行以下操作:

  1. 缩减 Stackdriver 运算符:

    kubectl --kubeconfig CLUSTER_KUBECONFIG -n kube-system scale deploy stackdriver-operator --replicas=0
    
  2. 确认 Stackdriver 运算符 Pod 已终止:

    kubectl --kubeconfig CLUSTER_KUBECONFIG -n kube-system get pods -l k8s-app=stackdriver-operator
    
  3. 删除日志记录和监控流水线代理。例如,运行以下命令以删除日志转发器:

    kubectl --kubeconfig CLUSTER_KUBECONFIG -n kube-system delete daemonset stackdriver-log-forwarder
    
  4. 准备好重新部署 Stackdriver 后,请运行以下命令来扩展运算符:

    kubectl --kubeconfig CLUSTER_KUBECONFIG -n kube-system scale deploy stackdriver-operator --replicas=1
    

Logging 和 Monitoring 代理会根据您的存储和保留配置捕获本地存储的数据。通过使用有权将数据写入安装时指定的 Google Cloud 项目的服务帐号,系统会将数据复制到该项目。 如前所述,您可以随时停用这些代理。

您还可以管理和删除 Logging 和 Monitoring 代理发送到 Cloud Logging 和 Cloud Monitoring 的数据。如需了解详情,请参阅 Cloud Monitoring 文档

Logging 和 Monitoring 的配置要求

如需查看 Cloud Logging 和 Cloud Monitoring 数据,您必须配置用于存储要查看的日志和指标的 Cloud 项目。此 Cloud 项目被称为日志记录和监控项目

  1. 在日志记录和监控项目中启用以下 API:

  2. 日志记录和监控服务帐号授予日志记录和监控项目上的以下 IAM 角色。

    • logging.logWriter
    • monitoring.metricWriter
    • stackdriver.resourceMetadata.writer
    • monitoring.dashboardEditor

价格

您无需为 Anthos 系统日志和指标付费。

在 Anthos clusters on VMware 集群中,Anthos 系统日志和指标包括:

  • 管理员集群中所有组件的日志和指标
  • 用户集群的以下命名空间中组件的日志和指标:kube-systemgke-systemgke-connectknative-servingistio-systemmonitoring-systemconfig-management-systemgatekeeper-systemcnrm-system

如需了解详情,请参阅 Google Cloud 的运维套件的价格

如需了解 Cloud Logging 指标的赠送金额,请与销售人员联系了解价格

适用于 Anthos clusters on VMware 的 Prometheus 和 Grafana 的工作原理

系统默认在停用 Prometheus 和 Grafana 的情况下创建每个 Anthos clusters on VMware 集群。您可以按照安装指南启用它们。

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 实例经过专门配置,可提供整个 Anthos clusters on VMware 实例(包括管理员集群和每个用户集群)的数据分析。这将允许您:

  • 使用 Grafana 信息中心访问所有用户集群和管理员集群中的指标。
  • 在 Grafana 信息中心查看各个用户集群的指标;这些指标可用于以全分辨率显示的直接查询。
  • 访问用户集群的节点级层和工作负载指标(工作负载指标仅限于在 kube-system 命名空间中运行的工作负载),以查看汇总查询、信息中心和提醒。
  • 为特定集群配置提醒。

后续步骤