配置日志记录和监控

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

Anthos clusters on Bare Metal 选项

您可以为 Anthos clusters on Bare Metal 提供多种日志记录和监控选项:

  • Cloud Logging 和 Cloud Monitoring,在 Bare Metal 系统组件上默认启用。
  • Prometheus 和 Grafana,可从 Cloud Marketplace 获取。
  • 经过验证且适用于第三方解决方案的配置。

Cloud Logging 和 Cloud Monitoring

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

代理可配置两个不同级别的日志记录和监控:

  • 仅限系统组件(默认)。
  • 系统组件和应用。

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

Prometheus 和 Grafana

Prometheus 和 Grafana 是 Cloud Marketplace 中提供的两款热门的开源监控产品:

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

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

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

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

第三方解决方案

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

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

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

创建新管理员集群或用户集群时,系统会在每个集群中安装并激活 Cloud Logging 和 Cloud Monitoring。

Stackdriver 代理在每个集群上都包含多个组件:

  • Stackdriver Operator (stackdriver-operator-*):管理部署到集群上的所有其他 Stackdriver 代理的生命周期。

  • Stackdriver Custom Resource:在 Anthos clusters on Bare Metal 安装过程中自动创建的资源。

  • GKE Metrics Agent (gke-metrics-agent-*)。一个基于 OpenTelemetry 收集器的 DaemonSet,用于将每个节点的指标爬取到 Cloud Monitoring。此外,还包括 node-exporter DaemonSet 和 kube-state-metrics 部署,以提供有关集群的更多指标。

  • Stackdriver Log Forwarder (stackdriver-log-forwarder-*)。一个 Fluent Bit DaemonSet,用于将日志从每台机器转发到 Cloud Logging。日志转发器将日志条目在本地缓冲,并在最长 4 小时内将重新发送这些日志条目。如果缓冲区已满,或者日志转发器达到 Cloud Logging API 时间超过 4 小时时,日志会被丢弃。

  • Anthos Metadata Agent (stackdriver-metadata-agent-)。一个部署,用于将 pod、部署或节点等 Kubernetes 资源的元数据发送到 Config Monitoring for Ops API;这些数据用于通过部署名称、节点名称甚至 Kubernetes 服务名称进行查询来丰富指标查询。

您可以通过运行以下命令查看 Stackdriver 安装的代理:

  kubectl -n kube-system get pods -l "managed-by=stackdriver"

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

kube-system   gke-metrics-agent-4th8r                                     1/1     Running   1 (40h ago)   40h
kube-system   gke-metrics-agent-8lt4s                                     1/1     Running   1 (40h ago)   40h
kube-system   gke-metrics-agent-dhxld                                     1/1     Running   1 (40h ago)   40h
kube-system   gke-metrics-agent-lbkl2                                     1/1     Running   1 (40h ago)   40h
kube-system   gke-metrics-agent-pblfk                                     1/1     Running   1 (40h ago)   40h
kube-system   gke-metrics-agent-qfwft                                     1/1     Running   1 (40h ago)   40h
kube-system   kube-state-metrics-9948b86dd-6chhh                          1/1     Running   1 (40h ago)   40h
kube-system   node-exporter-5s4pg                                         1/1     Running   1 (40h ago)   40h
kube-system   node-exporter-d9gwv                                         1/1     Running   2 (40h ago)   40h
kube-system   node-exporter-fhbql                                         1/1     Running   1 (40h ago)   40h
kube-system   node-exporter-gzf8t                                         1/1     Running   1 (40h ago)   40h
kube-system   node-exporter-tsrpp                                         1/1     Running   1 (40h ago)   40h
kube-system   node-exporter-xzww7                                         1/1     Running   1 (40h ago)   40h
kube-system   stackdriver-log-forwarder-8lwxh                             1/1     Running   1 (40h ago)   40h
kube-system   stackdriver-log-forwarder-f7cgf                             1/1     Running   2 (40h ago)   40h
kube-system   stackdriver-log-forwarder-fl5gf                             1/1     Running   1 (40h ago)   40h
kube-system   stackdriver-log-forwarder-q5lq8                             1/1     Running   2 (40h ago)   40h
kube-system   stackdriver-log-forwarder-www4b                             1/1     Running   1 (40h ago)   40h
kube-system   stackdriver-log-forwarder-xqgjc                             1/1     Running   1 (40h ago)   40h
kube-system   stackdriver-metadata-agent-cluster-level-5bb5b6d6bc-z9rx7   1/1     Running   1 (40h ago)   40h

Cloud Monitoring 指标

如需查看 Cloud Monitoring 收集的指标列表,请参阅查看 Anthos clusters on Bare Metal 指标

为 Anthos clusters on Bare Metal 配置 Stackdriver 代理

与 Anthos clusters on Bare Metal 一起安装的 Stackdriver 代理会收集有关系统组件的数据,以用于维护集群以及排查集群问题。以下部分介绍了 Stackdriver 配置和操作模式。

仅限系统组件(默认模式)

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

系统组件和应用

如需在默认模式的基础上启用应用日志记录和监控,请按照启用应用日志记录和监控中的步骤操作。

替换 Stackdriver 组件的默认 CPU 及内存请求和限制

pod 密度较高的集群引入了较高的日志记录和监控开销。在极端情况下,Stackdriver 组件可能会报告接近 CPU 和内存利用率限制,资源限制甚至可能导致持续重启。在这种情况下,如需替换 Stackdriver 组件的 CPU 和内存请求以及限制的默认值,请按以下步骤操作:

  1. 运行以下命令,在命令行编辑器中打开您的 Stackdriver 自定义资源:

    kubectl -n kube-system edit stackdriver stackdriver
  2. 在 Stackdriver 自定义资源中的 spec 字段下添加 resourceAttrOverride 部分:

    resourceAttrOverride:
          DAEMONSET_OR_DEPLOYMENT_NAME/CONTAINER_NAME:
            LIMITS_OR_REQUESTS:
              RESOURCE: RESOURCE_QUANTITY

    请注意,resourceAttrOverride 部分将替换指定组件的所有现有默认限制和请求。resourceAttrOverride 支持以下组件:

    • gke-metrics-agent/gke-metrics-agent
    • stackdriver-log-forwarder/stackdriver-log-forwarder
    • stackdriver-metadata-agent-cluster-level/metadata-agent
    • node-exporter/node-exporter
    • kube-state-metrics/kube-state-metrics

    示例文件如下所示:

    apiVersion: addons.gke.io/v1alpha1
    kind: Stackdriver
    metadata:
      name: stackdriver
      namespace: kube-system
    spec:
      anthosDistribution: baremetal
      projectID: my-project
      clusterName: my-cluster
      clusterLocation: us-west-1a
      resourceAttrOverride:
        gke-metrics-agent/gke-metrics-agent:
          requests:
            cpu: 110m
            memory: 240Mi
          limits:
            cpu: 200m
            memory: 4.5Gi
  3. 如需保存对 Stackdriver 自定义资源的更改,请保存并退出命令行编辑器。

  4. 检查 Pod 的运行状况:

    kubectl -n kube-system get pods -l "managed-by=stackdriver"

    健康的 Pod 的响应如下所示:

    gke-metrics-agent-4th8r                1/1     Running   1   40h
  5. 检查组件的 Pod 规范,确保资源设置正确。

    kubectl -n kube-system describe pod POD_NAME

    POD_NAME 替换为您刚刚更改的 Pod 的名称。例如 gke-metrics-agent-4th8r

    回答如下所示:

      Name:         gke-metrics-agent-4th8r
      Namespace:    kube-system
      ...
      Containers:
        gke-metrics-agent:
          Limits:
            cpu: 200m
            memory: 4.5Gi
          Requests:
            cpu: 110m
            memory: 240Mi
          ...

Metrics Server

Metrics Server 是各种自动扩缩流水线的容器资源指标的来源。Metrics Server 会从 kubelet 检索指标,并通过 Kubernetes Metrics API 公开这些指标。然后,HPA 和 VPA 将使用这些指标来确定何时触发自动扩缩。Metrics Server 使用插件调整器进行扩缩。

在高 Pod 密度导致过多日志记录和监控开销的极端情况下,资源限制可能导致 Metrics Server 停止并重新启动。在这种情况下,您可以通过修改 kube-system 命名空间中的 metrics-server-config configmap 并更改 cpuPerNodememoryPerNode 的值,为指标服务器分配更多资源。

kubectl edit cm metrics-server-config -n kube-system

ConfigMap 的示例内容如下:

apiVersion: v1
data:
  NannyConfiguration: |-
    apiVersion: nannyconfig/v1alpha1
    kind: NannyConfiguration
    cpuPerNode: 3m
    memoryPerNode: 20Mi
kind: ConfigMap

更新 ConfigMap 后,使用以下命令重新创建指标服务器 Pod:

kubectl delete pod -l k8s-app=metrics-server -n kube-system

Logging 和 Monitoring 的配置要求

为 Anthos clusters on Bare Metal 启用 Cloud Logging 和 Cloud Monitoring 需要满足几项配置要求。这些步骤包含在“启用 Google 服务”页面上的配置服务帐号以与 Logging 和 Monitoring 搭配使用中,具体如下列出:

  1. Cloud Monitoring 工作区必须在 Cloud 项目中创建。如需实现此目的,请点击 Google Cloud 控制台中的 Monitoring 并按照工作流操作。
  2. 您需要启用以下 Stackdriver API:

  3. 您需要将以下 IAM 角色分配给 Stackdriver 代理使用的服务帐号:

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

价格

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

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

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

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

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