按照以下说明在运行适用于 vSphere 8.x 的 TKr 的 TKG 服务 集群上安装 Prometheus with Alertmanager。

必备条件

请遵循以下必备条件。

创建 Prometheus 数据值

准备通过创建数据值文件来安装 Prometheus。

  1. 获取存储库的最新 Prometheus 软件包版本。
    tanzu package available get prometheus.tanzu.vmware.com -n tkg-system

    或者,使用 kubectl。

    kubectl -n tkg-system get packages | grep prometheus
    注: 通常,应该使用最新版本,除非要求不同。
  2. 生成 prometheus-data-values.yaml 文件。
    tanzu package available get prometheus.tanzu.vmware.com/2.45.0+vmware.1-tkg.2 --default-values-file-output prometheus-data-values.yaml
    其中:
    • 2.45.0+vmware.1-tkg.2 是目标软件包版本
    • prometheus-data-values.yaml 是要生成的数据值文件的名称和路径
  3. 编辑 prometheus-data-values.yaml 文件,并配置访问 Prometheus 仪表板所需的以下值。有关示例数据值文件和配置参数的完整列表,请参见Prometheus 软件包参考
    参数 描述
    ingress.tlsCertificate.tls.crt 将为 Ingress 生成自签名 TLS 证书。(可选)您可以覆盖此证书并提供您自己的证书。
    ingress.tlsCertificate.tls.key 将为 Ingress 生成自签名 TLS 私钥。(可选)您可以覆盖此证书并提供您自己的证书。
    ingress.enabled 将值设置为 true(默认值为 false)。
    ingress.virtual_host_fqdn 将值设置为 prometheus.<your.domain>(默认值为 prometheus.system.tanzu)。
    alertmanager.pvc.storageClassName 输入vSphere存储策略的名称。
    prometheus.pvc.storageClassName 输入vSphere存储策略的名称。

安装 Prometheus

完成以下步骤以安装 Prometheus 软件包。
  1. 创建命名空间。
    kubectl create ns tanzu-system-monitoring
  2. 安装 Prometheus。
    tanzu package install prometheus -p prometheus.tanzu.vmware.com -v 2.45.0+vmware.1-tkg.2 --values-file prometheus-data-values.yaml -n tanzu-system-monitoring
  3. 验证 Prometheus 安装。
    tanzu package installed list -n tanzu-system-monitoring
    tanzu package installed get prometheus -n tanzu-system-monitoring
  4. 验证 Prometheus 和 Altermanager 对象。
    kubectl -n tanzu-system-monitoring get all
    kubectl -n tanzu-system-monitoring get pvc
    
    NAME                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    alertmanager        Bound    pvc-a53f7091-9823-4b70-a9b4-c3d7a1e27a4b   2Gi        RWO            k8s-policy     2m30s
    prometheus-server   Bound    pvc-41745d1d-9401-41d7-b44d-ba430ecc5cda   20Gi       RWO            k8s-policy     2m30s

对 Prometheus 安装进行故障排除

如果 tanzu package install prometheus 操作返回错误“无法获取最终通告地址: 找不到专用 IP 地址,并且未提供显式 IP 地址 (Failed to get final advertise address: No private IP address found, and explicit IP not provided)”,请应用软件包覆盖以重新配置 Alertmanager 组件。
  1. 创建文件 overlay-alertmanager.yaml
    ---
    #@ load("@ytt:overlay", "overlay")
    
    #@overlay/match by=overlay.and_op(overlay.subset({"kind": "Deployment"}), overlay.subset({"metadata": {"name": "alertmanager"}}))
    ---
    spec:
      template:
        spec:
          containers:
            #@overlay/match by="name",expects="0+"
            - name: alertmanager
              args:
                - --cluster.listen-address=
  2. 使用 Kubectl 从文件 overlay-alertmanager.yaml 创建密钥。
    kubectl create secret generic alertmanager-overlay -n tkg-system -o yaml --dry-run=client --from-file=overlay-alertmanager.yaml | kubectl apply -f -
  3. 使用 Kubectl 为 Prometheus 软件包添加覆盖网络密钥的注释。
    kubectl annotate PackageInstall prometheus -n tkg-system ext.packaging.carvel.dev/ytt-paths-from-secret-name.1=alertmanager-overlay
  4. 再次运行安装命令。
    tanzu package install prometheus -p prometheus.tanzu.vmware.com -v 2.37.0+vmware.3-tkg.1 --values-file prometheus-data-values.yaml -n tanzu-system-monitoring

访问 Prometheus 仪表板

安装 Prometheus 后,请完成以下步骤以访问 Prometheus 仪表板。
  1. 确保 prometheus-data-values.yaml 文件的“ingress”部分已填充所有必填字段。
    ingress:
      enabled: true
      virtual_host_fqdn: "prometheus.system.tanzu"
      prometheus_prefix: "/"
      alertmanager_prefix: "/alertmanager/"
      prometheusServicePort: 80
      alertmanagerServicePort: 80
      #! [Optional] The certificate for the ingress if you want to use your own TLS certificate.
      #! We will issue the certificate by cert-manager when it's empty.
      tlsCertificate:
        #! [Required] the certificate
        tls.crt:
        #! [Required] the private key
        tls.key:
        #! [Optional] the CA certificate
        ca.crt:
  2. 获取 Contour with Envoy 负载均衡器的公用(外部)IP 地址。

    请参见安装 Contour with Envoy

  3. 创建 DNS 记录,以将使用的 Prometheus FQDN(默认为 prometheus.system.tanzu)映射到 Envoy 负载均衡器的 IP 地址。
  4. 使用浏览器导航到 Prometheus FQDN 以访问 Prometheus 仪表板。