通过 Grafana,您可以查询、可视化、警示和浏览指标,而无论指标的存储位置如何。Grafana 提供了一些工具,可从应用程序数据中形成图形和可视化内容。部署用于 Grafana 的 Tanzu 软件包,以生成和查看 TKG 集群的衡量指标。

软件包要求

安装用于 Grafana 的 Tanzu 软件包时,请遵循以下要求。

安装 Grafana 软件包后,需要使用以下 Kuberetes 服务类型之一公开的 IP 地址通过 HTTP/S 访问 Grafana 仪表板:ClusterIP(默认)、NodePort 或 LoadBalancer。要从集群外部访问 Grafana 仪表板,请先部署 Contour 扩展,然后再部署 Grafana。

Grafana 支持以下 Kubernetes 服务类型:

服务类型 描述 可访问性
ClusterIP 在集群内部 IP 上公开服务。 只能从集群内访问服务。
NodePort 在静态端口的每个节点 IP 上公开服务。 可以从集群外部访问服务。
LoadBalancer 使用负载均衡器在外部公开服务。 可以从集群外部访问服务。

ClusterIP 是默认设置,但只能从集群内进行访问。如果对 主管 使用的是 NSX-T 网络连接,请创建 LoadBalancer 类型的 Contour Envoy 服务。如果对 主管 使用的是 vSphere VDS 网络连接,请创建 LoadBalancer 类型或 NodePort 类型的 Contour Envoy 服务,具体取决于您的要求。请参见使用 Kubectl 安装用于 Contour Ingress 的 Tanzu 软件包

Grafana 组件

Grafana 软件包将安装单个容器。有关详细信息,请参见 https://grafana.com/。此软件包将从软件包存储库中指定的 VMware 公共注册表中提取容器。
容器 资源类型 副本 描述
Grafana 部署 2 数据可视化

安装 Grafana 软件包

安装 Grafana 软件包。

  1. 创建 grafana.yaml 规范
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: grafana-sa
      namespace: tkg-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: grafana-role-binding
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
      - kind: ServiceAccount
        name: grafana-sa
        namespace: tkg-system
    ---
    apiVersion: packaging.carvel.dev/v1alpha1
    kind: PackageInstall
    metadata:
      name: grafana
      namespace: tkg-system
    spec:
      serviceAccountName: grafana-sa
      packageRef:
        refName: grafana.tanzu.vmware.com
        versionSelection:
          constraints: 1.20.2+vmware.1-tkg.1-rc.2
      values:
      - secretRef:
          name: grafana-data-values
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: grafana-data-values
      namespace: tkg-system
    stringData:
      values.yml: |
        ---
        grafana:
          pspNames: "vmware-system-restricted"
    
  2. 安装 Grafana 软件包。
    kubectl apply -f grafana.yaml

使用 LoadBalancer 类型的 Contour Envoy 服务访问 Grafana 仪表板

如果部署了 LoadBalancer 类型的必备 Contour Envoy 服务,并且您在 Grafana 配置文件中指定了这一点,请获取负载均衡器的外部 IP 地址,并为 Grafana FQDN 创建 DNS 记录。
  1. 获取 LoadBalancer 类型的 Envoy 服务的 External-IP 地址。
    kubectl get service envoy -n tanzu-system-ingress
    您应该会看到返回的 External-IP 地址,例如:
    NAME    TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
    envoy   LoadBalancer   10.99.25.220   10.195.141.17   80:30437/TCP,443:30589/TCP   3h27m
    或者,也可以使用以下命令获取 External-IP 地址。
    kubectl get svc envoy -n tanzu-system-ingress -o jsonpath='{.status.loadBalancer.ingress[0]}'
  2. 要验证 Grafana 扩展的安装,请使用映射到负载均衡器的 External-IP 地址的 Grafana FQDN 更新本地 /etc/hosts 文件,例如:
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    # TKG Grafana Extension with Envoy Load Balancer
    10.195.141.17 grafana.system.tanzu
    
  3. 导航到 https://grafana.system.tanzu,访问 Grafana 仪表板。

    由于站点使用自签名证书,您可能需要浏览特定于浏览器的安全警告,然后才能访问仪表板。

  4. 要进行生产访问,请在 DNS 服务器上创建两条 CNAME 记录,以将 Envoy 服务负载均衡器 External-IP 地址映射到 Grafana 仪表板。

使用 NodePort 类型的 Contour Envoy 服务访问 Grafana 仪表板

如果部署了 NodePort 类型的必备 Contour Envoy 服务,并且在 Grafana 配置文件中指明了这一点,请获取工作节点的虚拟机 IP 地址,并为 Grafana FQDN 创建 DNS 记录。
  1. 将上下文切换到置备了集群的 vSphere 命名空间
    kubectl config use-context VSPHERE-NAMESPACE
  2. 列出集群中的节点。
    kubectl get virtualmachines
  3. 选择其中一个工作节点,然后使用以下命令对其进行描述。
    kubectl describe virtualmachines tkgs-cluster-X-workers-9twdr-59bc54dc97-kt4cm
  4. 找到虚拟机的 IP 地址,例如 Vm Ip: 10.115.22.43
  5. 要验证 Grafana 扩展的安装,请使用映射到工作节点 IP 地址的 Grafana FQDN 更新本地 /etc/hosts 文件,例如:
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    # TKGS Grafana with Envoy NodePort
    10.115.22.43 grafana.system.tanzu
    
  6. 导航到 https://grafana.system.tanzu,访问 Grafana 仪表板。

    由于站点使用自签名证书,您可能需要浏览特定于浏览器的安全警告,然后才能访问仪表板。

Grafana 配置参数

Grafana 配置在 grafana-data-values.yaml 中设置。
表 1. Grafana 配置参数
参数 描述 类型 默认
monitoring.namespace 将部署 Prometheus 的命名空间 string tanzu-system-monitoring
monitoring.create_namespace 标记指示是否创建 monitoring.namespace 指定的命名空间 布尔 false
monitoring.grafana.cluster_role.apiGroups 为 grafana clusterrole 定义的 API 组 列表 [""]
monitoring.grafana.cluster_role.resources 为 grafana clusterrole 定义的资源 列表 ["configmaps", "secrets"]
monitoring.grafana.cluster_role.verbs 为 clusterrole 定义的访问权限 列表 ["get"、"watch"、"list"]
monitoring.grafana.config.grafana_ini Grafana 配置文件详细信息 配置文件 grafana.ini

在此文件中,grafana_net URL 用于与 Grafana 集成,例如,直接从 Grafana.com 导入仪表板。

monitoring.grafana.config.datasource.type Grafana 数据源类型 string prometheus
monitoring.grafana.config.datasource.access 访问模式。代理或直接(UI 中的服务器或浏览器) string 代理
monitoring.grafana.config.datasource.isDefault 标记为默认 Grafana 数据源 布尔 true
monitoring.grafana.config.provider_yaml 用于定义 grafana 仪表板提供程序的配置文件 Yaml 文件 provider.yaml
monitoring.grafana.service.type 用于公开 Grafana 的服务类型。支持的值:ClusterIP、NodePort、LoadBalancer string vSphere: NodePort、aws/azure: LoadBalancer
monitoring.grafana.pvc.storage_class 为持久卷声明定义访问模式。支持的值: ReadWriteOnce、ReadOnlyMany、ReadWriteMany string ReadWriteOnce
monitoring.grafana.pvc.storage 为持久卷声明定义存储大小 string 2Gi
monitoring.grafana.deployment.replicas Grafana 副本数 integer 1
monitoring.grafana.image.repository 包含 Grafana 映像的存储库的位置。默认为公共 VMware 注册表。如果使用的是专用存储库(例如气隙环境),请更改此值。 string projects.registry.vmware.com/tkg/grafana
monitoring.grafana.image.name Grafana 映像的名称 string grafana
monitoring.grafana.image.tag Grafana 映像标记。如果升级版本,可能需要更新此值。 string v7.3.5_vmware.1
monitoring.grafana.image.pullPolicy Grafana 映像提取策略 string IfNotPresent
monitoring.grafana.secret.type 为 Grafana 仪表板定义的密钥类型 string 不透明
monitoring.grafana.secret.admin_user 用于访问 Grafana 仪表板的用户名 string YWRtaW4=

值为 base64 编码;用于解码:echo "xxxxxx" | base64 --decode

monitoring.grafana.secret.admin_password 用于访问 Grafana 仪表板的密码 string
monitoring.grafana.secret.ldap_toml 如果使用 ldap 身份验证,则 ldap 配置文件路径 string ""
monitoring.grafana_init_container.image.repository 包含 grafana init 容器映像的存储库。默认为公共 VMware 注册表。如果使用的是专用存储库(例如气隙环境),请更改此值。 string projects.registry.vmware.com/tkg/grafana
monitoring.grafana_init_container.image.name grafana init 容器映像的名称 string k8s-sidecar
monitoring.grafana_init_container.image.tag Grafana init 容器映像标记。如果升级版本,可能需要更新此值。 string 0.1.99
monitoring.grafana_init_container.image.pullPolicy grafana init 容器映像拉取策略 string IfNotPresent
monitoring.grafana_sc_dashboard.image.repository 包含 Grafana 仪表板映像的存储库。默认为公共 VMware 注册表。如果使用的是专用存储库(例如气隙环境),请更改此值。 string projects.registry.vmware.com/tkg/grafana
monitoring.grafana_sc_dashboard.image.name grafana 仪表板映像的名称 string k8s-sidecar
monitoring.grafana_sc_dashboard.image.tag Grafana 仪表板映像标记。如果升级版本,可能需要更新此值。 string 0.1.99
monitoring.grafana_sc_dashboard.image.pullPolicy grafana 仪表板映像提取策略 string IfNotPresent
monitoring.grafana.ingress.enabled 为 grafana 启用/禁用输入 布尔 true
monitoring.grafana.ingress.virtual_host_fqdn 用于访问 grafana 的主机名 string grafana.system.tanzu
monitoring.grafana.ingress.prefix grafana 的路径前缀 string /
monitoring.grafana.ingress.tlsCertificate.tls.crt 如果要使用自己的 TLS 证书,则为用于输入的可选证书。默认情况下生成自签名证书 string 生成的证书
monitoring.grafana.ingress.tlsCertificate.tls.key 如果要使用自己的 TLS 证书,则为用于输入的可选证书私钥。 string 生成的证书密钥