按照以下说明在运行适用于 vSphere 8.x 的 TKr 的 TKG 服务 集群上安装 Prometheus with Alertmanager。
必备条件
请遵循以下必备条件。
- 常规要求
- 创建软件包存储库.
- 安装证书管理器.
- 安装 Contour with Envoy(访问 Prometheus 仪表板需要)。
- Prometheus 软件包参考
创建 Prometheus 数据值
准备通过创建数据值文件来安装 Prometheus。
- 获取存储库的最新 Prometheus 软件包版本。
tanzu package available get prometheus.tanzu.vmware.com -n tkg-system
或者,使用 kubectl。
kubectl -n tkg-system get packages | grep prometheus
注: 通常,应该使用最新版本,除非要求不同。 - 生成
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 是要生成的数据值文件的名称和路径
- 编辑
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 软件包。
- 创建命名空间。
kubectl create ns tanzu-system-monitoring
- 安装 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
- 验证 Prometheus 安装。
tanzu package installed list -n tanzu-system-monitoring
tanzu package installed get prometheus -n tanzu-system-monitoring
- 验证 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 组件。
- 创建文件
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=
- 使用 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 -
- 使用 Kubectl 为 Prometheus 软件包添加覆盖网络密钥的注释。
kubectl annotate PackageInstall prometheus -n tkg-system ext.packaging.carvel.dev/ytt-paths-from-secret-name.1=alertmanager-overlay
- 再次运行安装命令。
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 仪表板。
- 确保
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:
- 获取 Contour with Envoy 负载均衡器的公用(外部)IP 地址。
- 创建 DNS 记录,以将使用的 Prometheus FQDN(默认为
prometheus.system.tanzu
)映射到 Envoy 负载均衡器的 IP 地址。 - 使用浏览器导航到 Prometheus FQDN 以访问 Prometheus 仪表板。