Menu Close
Settings Close

Language and Page Formatting Options

观察环境

Red Hat Advanced Cluster Management for Kubernetes 2.2

观察环境

摘要

Observe environments in Red Hat Advanced Cluster Management for Kubernetes

第 1 章 观察环境简介

启用可观察(observability)服务后,您可以使用 Red Hat Advanced Cluster Management for Kubernetes 深入了解受管集群并进行优化。这些信息可以帮助节约成本并防止不必要的事件发生。

1.1. 观察环境

您可以使用 Red Hat Advanced Cluster Management for Kubernetes 深入了解受管集群并进行优化。启用 observability 服务操作器 multicluster-observability-operator 来监控受管集群的健康状态。在以下部分了解多集群观察服务的架构。

Multicluster observability architecture

按需(on-demand)日志允许工程师实时访问指定 pod 的日志。hub 集群的日志不会被聚合。这些日志可以通过搜索服务以及控制台的其他部分进行访问。

1.1.1. 观察(Observability)服务

默认情况下,产品安装中包含了可观察性(observability)功能,但不启用它。由于对持久性存储的要求,observability 服务默认不会启用。Red Hat Advanced Cluster Management 支持以下 stable 对象存储:

  • Amazon S3(或其他 S3 兼容对象存储,如 Ceph)
  • Google Cloud Storage
  • Azure 存储
  • OpenShift Container Storage

启用该服务时,observability-endpoint-operator 会自动部署到每个导入或创建的集群中。此控制器从 Red Hat OpenShift Container Platform Prometheus 收集数据,然后将其发送到 Red Hat Advanced Cluster Management hub 集群。

当在 hub 集群中启用可观察性时,通过将 hub 集群作为名为 local-cluster 的受管集群处理来收集指标数据。

: 在 Red Hat Advanced Cluster Management 中,只有 Red Hat OpenShift Container Platform 4.x 集群支持 metrics-collector

observability 服务部署了一个 Prometheus AlertManager 实例,它允许通过第三方应用程序转发警报。它还包括一个 Grafana 实例,通过仪表板(静态)或数据探索启用数据视觉化。Red Hat Advanced Cluster Management 支持 Grafana 的版本 6.4.x。您还可以设计自己的 Grafana 仪表板。如需更多信息,请参阅指定 Grafana 仪表板

您可以通过创建自定义 记录规则警报规则来自定义可观察性服务。

有关启用可观察性的更多信息,请参阅启用可观察性服务

1.1.1.1. Observability 证书

Observability 证书会在过期时自动续订。查看以下列表以了解证书自动更新时的影响:

  • hub 集群上的组件会自动重启以检索更新的证书。
  • Red Hat Advanced Cluster Management 将更新的证书发送到受管集群。
  • metrics-collector 重启以挂载更新的证书。

    注: metrics-collector 可以在证书删除前后将指标推送到 hub 集群。有关在集群中刷新证书的更多信息,请参阅刷新受管证书

1.1.1.2. 指标类型

默认情况下,OpenShift Container Platform 使用 Telemetry 服务向红帽发送指标数据。以下附加指标包括在 Red Hat Advanced Cluster Management 中,它们包含在遥测(telemetry)中,但不会显示在 Red Hat Advanced Cluster Management Observe environments overview 仪表板中:

  • visual_web_terminal_sessions_total 在 hub 集群中收集。
  • acm_managed_cluster_info 在每个受管集群上收集并发送到 hub 集群。

从 OpenShift Container Platform 文档中了解使用遥测来收集并发送哪些指标类型。如需更多信息,请参阅 Telemetry 收集的信息

1.1.1.3. Observability pod 容量请求

Observability 组件需要 2636mCPU 和 11388Mi 内存来安装可观察性服务。查看下表,了解启用了 observability-addons 的五个受管集群的 pod 容量请求:

表 1.1. Observability pod 容量请求

Deployment 或 StatefulSet容器名称CPU(mCPU)内存(Mi)ReplicasPod 总计 CPUPod 内存总量

alertmanager

alertmanager

4

200

3

12

600

config-reloader

4

25

3

12

75

grafana

grafana

4

100

2

8

200

grafana-dashboard-loader

4

50

2

8

100

observability-observatorium-observatorium-api

observatorium-api

20

128

2

40

256

observability-observatorium-thanos-compact

thanos-compact

100

512

1

100

512

observability-observatorium-thanos-query

thanos-query

300

1024

2

600

2048

observability-observatorium-thanos-query-frontend

thanos-query-frontend

100

256

2

200

512

observability-observatorium-thanos-receive-controller

thanos-receive-controller

4

32

1

4

32

observability-observatorium-thanos-receive-default

thanos-receive

300

512

3

900

1536

observability-observatorium-thanos-rule

thanos-rule

50

512

3

150

1536

configmap-reloader

4

25

3

12

75

observability-observatorium-thanos-store-memcached

memcached

45

128

3

135

384

exporter

5

50

3

15

150

observability-observatorium-thanos-store-shard

thanos-store

100

1024

3

300

3072

observatorium-operator

observatorium-operator

100

100

1

100

100

rbac-query-proxy

rbac-query-proxy

20

100

2

40

200

1.1.2. Observability 服务中使用的持久性存储

安装 Red Hat Advanced Cluster Management 时会创建以下持久性卷:

表 1.2. 持久性卷表列表

持久性卷名称

用途

alertmanager

Alertmanager 将 nflog 数据和静默的警报存储在存储中。nflog 是活跃和已解析通知以及通知接收器的仅附加日志,以及通知者标识内容的哈希摘要。

thanos-compact

紧凑器需要本地磁盘空间来存储用于处理的中间数据,以及 bucket 状态缓存。所需空间取决于基础块的大小。紧凑器必须有足够的空间下载所有源块,然后在磁盘上构建紧凑块。磁盘上的数据可以安全地在重新启动之间删除,并且应该是首次尝试使崩溃循环解压器。不过,建议为紧凑器永久磁盘提供压缩器持久磁盘,以便在重启期间高效地使用存储桶状态缓存。

thanos-rule

thanos 标尺通过以固定间隔发出查询来评估 Prometheus 记录和警报规则。规则结果以 Prometheus 2.0 存储格式写回磁盘。

thanos-receive-default

Thanos 接收器接受传入数据(Prometheus 远程写入请求),并将这些数据写入 Prometheus TSDB 的一个本地实例。TSDB 块定期(每 2 小时)上传到对象存储,以进行长期存储和压缩。

thanos-store-shard

它主要充当一个 API 网关,因此不需要大量的本地磁盘空间。它在启动时加入 Thanos 集群,并公告它可以访问的数据。它在本地磁盘上保留少量的、与所有远程块相关的信息,并与存储桶保持同步。这些数据通常在重启时会被安全地删除,这会增加启动时间。

注意 :时间序列历史数据存储在对象存储中。Thanos 使用对象存储作为指标和与其相关的元数据的主存储。有关对象存储和降级的详情,请参阅启用可观察性服务

1.2. 启用 observability 服务

使用可观察性服务(multicluster-observability-operator)监控受管集群的健康状况。

需要的访问权限: 集群管理员或 open-cluster-management:cluster-manager-admin 角色。

1.2.1. 先决条件

  • 您必须安装 Red Hat Advanced Cluster Management for Kubernetes。如需更多信息,请参阅在线安装
  • 您必须配置对象存储来创建存储解决方案。Red Hat Advanced Cluster Management 只支持带有稳定对象存储的云供应商,如 Amazon S3(或其他 S3 兼容对象存储,如 Ceph)、Google Cloud Storage、Azure 存储和 OpenShift Container Storage。

    重要:当您配置对象存储时,请确保在敏感数据持久化时满足加密要求。如需支持的对象存储的完整列表,请参阅 Thanos 文档

1.2.2. 启用可观察性

通过创建 MultiClusterObservability 自定义资源(CR)实例来启用可观察性服务。在启用可观察性前,请参阅 Observability pod 容量请求以了解更多信息。完成以下步骤以启用可观察服务:

  1. 登录到您的 Red Hat Advanced Cluster Management hub 集群。
  2. 使用以下命令,为可观察服务创建一个命名空间:

    oc create namespace open-cluster-management-observability
  3. 生成 pull-secret。如果在 open-cluster-management 命名空间中安装了 Red Hat Advanced Cluster Management,请运行以下命令:

    DOCKER_CONFIG_JSON=`oc extract secret/multiclusterhub-operator-pull-secret -n open-cluster-management --to=-`

    如果命名空间中没有定义 multiclusterhub-operator-pull-secret,请将 openshift-config 命名空间中的 pull-secret 复制到 open-cluster-management-observability 命名空间中。运行以下命令:

    DOCKER_CONFIG_JSON=`oc extract secret/pull-secret -n openshift-config --to=-`

    然后,在 open-cluster-management-observability 命名空间中创建 pull-secret,运行以下命令:

    oc create secret generic multiclusterhub-operator-pull-secret \
        -n open-cluster-management-observability \
        --from-literal=.dockerconfigjson="$DOCKER_CONFIG_JSON" \
        --type=kubernetes.io/dockerconfigjson
  4. 为您的云供应商的对象存储创建 secret。您的 secret 必须包含存储解决方案的凭证。例如,运行以下命令:

    oc create -f thanos-object-storage.yaml -n open-cluster-management-observability
    1. 查看以下受支持对象存储的 secret 示例:

      • 对于 Red Hat Advanced Cluster Management,您的 secret 可能类似以下文件:

        apiVersion: v1
        kind: Secret
        metadata:
          name: thanos-object-storage
          namespace: open-cluster-management-observability
        type: Opaque
        stringData:
          thanos.yaml: |
            type: s3
            config:
              bucket: YOUR_S3_BUCKET
              endpoint: YOUR_S3_ENDPOINT
              insecure: true
              access_key: YOUR_ACCESS_KEY
              secret_key: YOUR_SECRET_KEY
      • 对于 Amazon S3 或 S3 兼容,您的 secret 可能类似以下文件:

        apiVersion: v1
        kind: Secret
        metadata:
          name: thanos-object-storage
          namespace: open-cluster-management-observability
        type: Opaque
        stringData:
          thanos.yaml: |
            type: s3
            config:
              bucket: YOUR_S3_BUCKET
              endpoint: YOUR_S3_ENDPOINT
              insecure: true
              access_key: YOUR_ACCESS_KEY
              secret_key: YOUR_SECRET_KEY

        详情请参阅 Amazon Simple Storage Service 用户指南

      • 对于 Google,您的 secret 可能类似以下文件:

        apiVersion: v1
        kind: Secret
        metadata:
          name: thanos-object-storage
          namespace: open-cluster-management-observability
        type: Opaque
        stringData:
          thanos.yaml: |
            type: GCS
            config:
              bucket: YOUR_GCS_BUCKET
              service_account: YOUR_SERVICE_ACCOUNT

        如需了解更多详细信息,请参阅 Google Cloud Storage

      • 对于 Azure,您的 secret 可能类似以下文件:

        apiVersion: v1
        kind: Secret
        metadata:
          name: thanos-object-storage
          namespace: open-cluster-management-observability
        type: Opaque
        stringData:
          thanos.yaml: |
            type: AZURE
            config:
              storage_account: YOUR_STORAGE_ACCT
              storage_account_key: YOUR_STORAGE_KEY
              container: YOUR_CONTAINER
              endpoint: YOUR_ENDPOINT
              max_retries: 0

        如需了解更多详细信息,请参阅 Azure Storage 文档

      • 对于 OpenShift Container Storage,您的 secret 可能类似以下文件:

        apiVersion: v1
        kind: Secret
        metadata:
          name: thanos-object-storage
          namespace: open-cluster-management-observability
        type: Opaque
        stringData:
          thanos.yaml: |
            type: s3
            config:
              bucket: YOUR_OCS_BUCKET
              endpoint: YOUR_OCS_ENDPOINT
              insecure: true
              access_key: YOUR_OCS_ACCESS_KEY
              secret_key: YOUR_OCS_SECRET_KEY

        如需了解更多详细信息,请参阅安装 OpenShift Container Storage

    2. 您可以使用以下命令为云供应商检索 S3 access key 和 secret 密钥:

      ACCESS_KEY=$(oc -n <your-object-storage> get secret <object-storage-secret> -o yaml | grep AccessKey | awk '{print $2}' | base64 --decode)
      
      echo $ACCESS_KEY
      
      SECRET_KEY=$(oc -n <your-object-storage> get secret <object-storage-secret> -o yaml | grep SecretKey | awk '{print $2}' | base64 --decode)
      
      echo $SECRET_KEY

1.2.2.1. 创建 MultiClusterObservability CR

完成以下步骤以创建 MultiClusterObservability 自定义资源(CR):

  1. 通过完成以下步骤,为您的受管集群创建 MultiClusterObservability 自定义资源(mco CR):

    1. 创建名为 multiclusterobservability_cr.yamlMultiClusterObservability 自定义资源 YAML 文件。

      查看以下默认 YAML 文件以查看可观察性:

      apiVersion: observability.open-cluster-management.io/v1beta1
      kind: MultiClusterObservability
      metadata:
        name: observability #Your customized name of MulticlusterObservability CR
      spec:
        availabilityConfig: High # Available values are High or Basic
        enableDownSampling: false # The default value is false. This is not recommended as querying long-time ranges without non-downsampled data is not efficient and useful.
        imagePullPolicy: Always
        imagePullSecret: multiclusterhub-operator-pull-secret
        observabilityAddonSpec: # The ObservabilityAddonSpec defines the global settings for all managed clusters which have observability add-on enabled
          enableMetrics: true # EnableMetrics indicates the observability addon push metrics to hub server
          interval: 30 # Interval for the observability addon push metrics to hub server
        retentionResolution1h: 30d # How long to retain samples of 1 hour in bucket
        retentionResolution5m: 14d
        retentionResolutionRaw: 5d
        storageConfigObject: # Specifies the storage to be used by Observability
          metricObjectStorage:
            name: thanos-object-storage
            key: thanos.yaml
          statefulSetSize: 10Gi # The amount of storage applied to the Observability StatefulSets, i.e. Amazon S3 store, Rule, compact and receiver.
          statefulSetStorageClass: gp2

      您可能需要修改 retentionResolution 参数的值。默认情况下禁用了向下采样。如需更多信息,请参阅 Thanos Downsampling 分辨率和保留时间。根据受管集群的数量,您可能需要更新 statefulSetSize。如需更多信息,请参阅 Observability API

    2. 要在基础架构机器集上部署,您必须通过更新 MultiClusterObservability YAML 中的 nodeSelector 为集合设置标签。您的 YAML 可能类似以下内容:

      nodeSelector:
          node-role.kubernetes.io/infra:

      如需更多信息,请参阅创建基础架构机器集

    3. 运行以下命令,将可观察 YAML 应用到集群:

      oc apply -f multiclusterobservability_cr.yaml

      为 Thanos、Grafana 和 AlertManager 创建 open-cluster-management-observability 命名空间中的所有 pod。所有连接到 Red Hat Advanced Cluster Management hub 集群的受管集群都会被启用,以将指标数据发送回 Red Hat Advanced Cluster Management Observability 服务。

  2. 要验证是否已启用了 observabilty 服务,启动 Grafana 仪表板,查看其中是否包括了相关的数据。完成以下步骤:

    1. 登录到 Red Hat Advanced Cluster Management 控制台。
    2. 在导航菜单中选择 Observe environments > Overview
    3. 点击位于控制台标头旁的 Grafana 链接,从您的受管集群中查看指标。

      :如果要排除特定的受管集群收集可观察性数据,请在集群中添加以下集群标签: observability: disabled

1.2.3. 禁用可观察性

要禁用可观察性服务,请卸载 observability 资源。请参阅使用命令删除 MultiClusterHub 实例的第 1 步。

要了解更多有关自定义可观察性的信息,请参阅自定义可观察性

1.3. 定制可观察性

以下部分介绍了对可观察性服务所收集的数据进行自定义、管理和查看的信息。

使用 must-gather 命令收集为可观察性资源创建的新信息的日志。如需更多信息,请参阅故障排除文档中的 Must-gather 部分。

1.3.1. 创建自定义规则

您可以通过在可观察性资源中添加 Prometheus 记录规则警报规则,为可观察性安装创建自定义规则。如需更多信息,请参阅 Prometheus 配置

  • 记录规则可让您根据需要预先计算或计算昂贵的表达式。结果保存为一组新的时间序列。
  • 通过警报规则,您可以根据如何将警报发送到外部服务来指定警报条件。

使用 Prometheus 定义自定义规则来创建警报条件,并将通知发送到外部消息服务。 :当您更新自定义规则时,observability-observatorium-thanos-rule pod 会自动重启。

完成以下步骤以创建自定义规则:

  1. 登录到您的 Red Hat Advanced Cluster Management hub 集群。
  2. open-cluster-management-observability 命名空间中创建一个名为 thanos-ruler-custom-rules 的 ConfigMap。密钥必须命名为 custom_rules.yaml,如下例所示。您可以在配置中创建多个规则:

    • 默认情况下,开箱即用的警报规则在 open-cluster-management-observability 命名空间中的 thanos-ruler-default-rules ConfigMap 中定义。

      例如,您可以创建一个自定义警报规则,在 CPU 使用量超过了您定义的值时通知您:

      data:
        custom_rules.yaml: |
          groups:
            - name: cluster-health
              rules:
              - alert: ClusterCPUHealth-jb
                annotations:
                  summary: Notify when CPU utilization on a cluster is greater than the defined utilization limit
                  description: "The cluster has a high CPU usage: {{ $value }} core for {{ $labels.cluster }} {{ $labels.clusterID }}."
                expr: |
                  max(cluster:cpu_usage_cores:sum) by (clusterID, cluster, prometheus) > 0
                for: 5s
                labels:
                  cluster: "{{ $labels.cluster }}"
                  prometheus: "{{ $labels.prometheus }}"
                  severity: critical
    • 您还可以在 thanos-ruler-custom-rules ConfigMap 中创建自定义记录规则。

      例如,您可以创建一个记录规则,让您可以获取 pod 的容器内存缓存的总和。您的 YAML 可能类似以下内容:

      data:
        custom_rules.yaml: |
          groups:
            - name: container-memory
              rules:
              - record: pod:container_memory_cache:sum
                expr: sum(container_memory_cache{pod!=""}) BY (pod, container)

      :如果这是第一个新的自定义规则,它会被立即创建。对于 ConfigMap 的更改,您必须使用以下命令重启可观察 pod: kubectl rollout restart statefulset observability-observatorium-thanos-rule -n open-cluster-management-observability

  3. 如果要验证警报规则是否正常工作,请完成以下步骤:

    1. 访问 Grafana 仪表板,然后选择 Explore 图标。
    2. 在 Metrics 探索栏中,输入 "ALERTS" 并运行查询。系统中所有处于 pending 或 firing 状态的 ALERTS 都会被显示。
    3. 如果没有显示警报,查看规则来检查表达式是否正确。

已创建一个自定义规则。

1.3.2. 为 AlertManager 配置规则

集成外部消息工具,如 email、Slack 和 PagerDuty 以接收来自 AlertManager 的通知。您必须覆盖 open-cluster-management-observability 命名空间中的 alertmanager-config secret 来添加集成,并为 AlertManager 配置路由。完成以下步骤以更新自定义接收器规则:

  1. alertmanager-config secret 中提取数据。运行以下命令:

    oc -n open-cluster-management-observability get secret alertmanager-config --template='{{ index .data "alertmanager.yaml" }}' |base64 -d > alertmanager.yaml
  2. 运行以下命令来编辑并保存 alertmanager.yaml 文件配置:

    oc -n open-cluster-management-observability create secret generic alertmanager-config --from-file=alertmanager.yaml --dry-run -o=yaml |  oc -n open-cluster-management-observability replace secret --filename=-

    更新的 secret 可能与以下类似:

    global
      smtp_smarthost: 'localhost:25'
      smtp_from: 'alertmanager@example.org'
      smtp_auth_username: 'alertmanager'
      smtp_auth_password: 'password'
    templates:
    - '/etc/alertmanager/template/*.tmpl'
    route:
      group_by: ['alertname', 'cluster', 'service']
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 3h
      receiver: team-X-mails
      routes:
      - match_re:
          service: ^(foo1|foo2|baz)$
        receiver: team-X-mails

您的更改会在修改后立即生效。如需 AlertManager 的示例,请参阅 prometheus/alertmanager

1.3.3. 添加自定义指标

将指标添加到 metrics_list.yaml 文件中,从受管集群收集。

完成以下步骤以添加自定义指标:

  1. 登录到您的集群。
  2. 验证 mco observability 是否已启用。检查 status.conditions.message 中的以下信息: Observability components are deployed and running。运行以下命令:

    oc get mco observability -o yaml
  3. 创建包含以下内容的 observability-metrics-custom-allowlist.yaml 的新文件:在 metrics_list.yaml 参数中添加自定义指标的名称。例如,将 node_memory_MemTotal_bytes 添加到指标列表中。ConfigMap 的 YAML 可能类似以下内容:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: observability-metrics-custom-allowlist
    data:
      metrics_list.yaml: |
        names:
          - node_memory_MemTotal_bytes
  4. 运行以下命令,在 open-cluster-management-observability 命名空间中创建 observability-metrics-custom-allowlist ConfigMap:

    oc apply -n open-cluster-management-observability -f observability-metrics-custom-allowlist.yaml
  5. 通过在 Grafana 仪表板上查看指标,验证您的自定义指标是否从受管集群收集数据。在 hub 集群中,选择 Grafana dashboard 链接。
  6. 在 Grafana 搜索栏中输入您要查看的指标。

收集自定义指标数据。

1.3.4. 查看和查找数据

通过访问 Grafana 来查看来自受管集群的数据。完成以下步骤,从控制台查看 Grafana 仪表板:

  1. 登录到您的 Red Hat Advanced Cluster Management hub 集群。
  2. 在导航菜单中选择 Observe environments > Overview > Grafana link

    您还可以从 Clusters 页面访问 Grafana 仪表板。在导航菜单中选择 Automate infrastructure > Clusters > Grafana

  3. 通过在 Grafana 导航菜单中选择 Explore 图标来访问 Prometheus 指标浏览器。

1.3.5. 禁用 metrics-collector

您可以禁用 metrics-collector,它会停止收集数据并将收集数据发送到可观察性服务。

1.3.5.1. 在所有集群中禁用 metrics-collector

禁用 metrics-collector pod,停止数据收集并将其发送到 Red Hat Advanced Cluster Management hub 集群中的 observability 服务。

当您禁用 metrics-collector 时,部署会缩减为零,并禁用所有受管集群。查看以下选项以禁用 metrics-collector

通过将 enableMetrics 设置为 false 来更新 multicluster-observability-operator 资源。更新的资源可能类似如下:

spec:
  availabilityConfig: High # Available values are High or Basic
  imagePullPolicy: Always
  imagePullSecret: multiclusterhub-operator-pull-secret
  observabilityAddonSpec: # The ObservabilityAddonSpec defines the global settings for all managed clusters which have observability add-on enabled
    enableMetrics: false #indicates the observability addon push metrics to hub server

1.3.5.2. 在单个集群中禁用 metrics-collector

您可以通过完成以下步骤之一禁用特定受管集群上的 metrics-collector

  • 在自定义资源 managedclusters.cluster.open-cluster-management.io 中添加 observability: disabled 标签。
  • 在 Red Hat Advanced Cluster Management 控制台 Clusters 页面中,完成以下步骤来添加 observability: disabled 标签:

    1. 在 Red Hat Advanced Cluster Management 控制台中,选择 Automate infrastructure > Clusters
    2. 选择您要禁用发送到可观察性的数据收集的集群名称。
    3. 选择 Labels
    4. 通过添加以下标签来创建禁用可观察性集合的标签:

      observability=disabled
    5. 选择 Add 添加该标签。
    6. 选择 Done 以关闭标签列表。

: 当一个带有可观察组件的受管集群被分离时,metrics-collector 部署会被删除。

有关使用可观察性服务监控控制台数据的更多信息,请参阅观察环境介绍

1.4. 设计您的 Grafana 仪表板

您可以通过创建 grafana-dev 实例来设计 Grafana 仪表板。

1.4.1. 设置 Grafana 开发人员实例

首先,克隆 open-cluster-management/multicluster-observability-operator/ 存储库,以便您可以运行位于 tools 文件夹中的脚本。完成以下步骤以设置 Grafana 开发人员实例:

  1. 运行 setup-grafana-dev.sh 来设置 Grafana 实例。运行该脚本时会创建以下资源: secret/grafana-dev-configdeployment.apps/grafana-devservice/grafana-devingress.extensions/grafana-devpersistentvolumeclaim/grafana-dev

    ./setup-grafana-dev.sh --deploy
    secret/grafana-dev-config created
    deployment.apps/grafana-dev created
    service/grafana-dev created
    ingress.extensions/grafana-dev created
    persistentvolumeclaim/grafana-dev created
  2. 使用 switch-to-grafana-admin.sh 脚本将用户角色切换到 Grafana 管理员。

    1. 选择 Grafana URL https://$ACM_URL/grafana-dev/ 并登录。
    2. 然后运行以下命令,将切换的用户添加为 Grafana 管理员。例如,在使用 kubeadmin 登录后,运行以下命令:

      ./switch-to-grafana-admin.sh kube:admin
      User <kube:admin> switched to be grafana admin

Grafana 开发人员实例已设置。

1.4.2. 设计您的 Grafana 仪表板

设置 Grafana 实例后,您可以设计仪表板。完成以下步骤以刷新 Grafana 控制台并设计您的仪表板:

  1. 在 Grafana 控制台中,通过在导航面板中选择 Create 图标来创建仪表板。选择 Dashboard,然后单击 Add new panel
  2. New Dashboard/Edit Panel 视图中导航到 Query 选项卡。
  3. 从数据源选择器中选择 Observatorium 并输入 PromQL 查询来配置查询。
  4. 在 Grafana 仪表板标头中点击仪表板标头中的 Save 图标。
  5. 添加一个描述性名称并点 Save

1.4.2.1. 使用 ConfigMap 设计 Grafana 仪表板

完成以下步骤,使用 ConfigMap 设计 Grafana 仪表板:

  1. 您可以使用 generate-dashboard-configmap-yaml.sh 脚本生成仪表板 ConfigMap,并在本地保存 ConfigMap:

    ./generate-dashboard-configmap-yaml.sh "Your Dashboard Name"
    Save dashboard <your-dashboard-name> to ./your-dashboard-name.yaml

    如果您没有运行上述脚本的权限,请完成以下步骤:

    1. 选择一个仪表板并点 Dashboard settings 图标。
    2. 在导航框中,点 JSON Model 图标。
    3. 复制仪表板 JSON 数据,并将它粘贴到 metadata 部分。
    4. 修改 name 并替换 $your-dashboard-name。ConfigMap 可能类似以下文件:

      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: $your-dashboard-name
        namespace: open-cluster-management-observability
        labels:
          grafana-custom-dashboard: "true"
      data:
        $your-dashboard-name.json: |
          $your_dashboard_json

      注: 如果您的仪表板不在 General 文件夹中,您可以在此 ConfigMap 的 annotations 部分指定文件夹名称:

      annotations:
        observability.open-cluster-management.io/dashboard-folder: Custom

      完成 ConfigMap 的更新后,您可以安装它,将仪表板导入到 Grafana 实例。

1.4.3. 卸载 Grafana 开发者实例

卸载实例时,相关资源也会被删除。运行以下命令:

./setup-grafana-dev.sh --clean
secret "grafana-dev-config" deleted
deployment.apps "grafana-dev" deleted
service "grafana-dev" deleted
ingress.extensions "grafana-dev" deleted
persistentvolumeclaim "grafana-dev" deleted