为 UCS Tools 应用程序添加监控
先决条件
为 UCS 应用程序添加监控需要先安装 Prometheus Operator,然后再部署应用程序。
为此,请安装 Kube Prometheus Stack。
可以为
helm install
命令提供--set prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues=false
参数,以监控所有 PodMonitor 资源。
应用程序中正在使用的微服务已进行检测并实现了 Prometheus 指标端点。
应用程序中正在使用的微服务已将详细信息添加到
metrics
部分。请参阅 微服务指标。
PodMonitor 资源
UCS 应用程序构建工具根据每个微服务的 metrics
部分中的信息自动生成 PodMonitor 自定义资源,并将其添加到输出应用程序 Helm Chart 中。
这些 PodMonitor 自定义资源用于配置 Prometheus 服务器以抓取微服务 Pod。有关更多信息,请参阅 Prometheus Operator API 参考。
要查看生成的 PodMonitor 资源,请运行以下命令
$ helm install --dry-run test <application-helm-chart>
...
---
# Source: myservice-test-app/templates/podmonitors.yaml
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: 'myservice-test-app-myservice-metrics-podmonitor'
labels:
app.kubernetes.io/instance: 'test'
app.kubernetes.io/name: 'myservice-test-app'
spec:
selector:
matchLabels:
app: myservice-myservice-deployment
app.kubernetes.io/name: podmonitor-test-ms1
app.kubernetes.io/version: 0.0.1
podMetricsEndpoints:
- port: metrics
path: /metrics
部署 Helm Chart 时,这些 PodMonitor 资源会随应用程序一起自动安装。
PodMonitor 资源的自定义标签
如果 Prometheus Operator 需要选择自定义标签,也可以在 PodMonitor 资源上设置自定义标签。
要执行此操作,请在 Helm 安装期间设置 podMonitorLabels
值
$ helm install <release-name> <application-helm-chart> --set "podMonitorLabels.<label>=<value>"
验证 Pod 是否正在被抓取
如果应用程序和监控运行正常,则应在 Prometheus WebUI 中看到 Pod 目标。为此,请转发 Prometheus 服务端口
$ kubectl get svc -l "app=kube-prometheus-stack-prometheus"
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus-kube-prometheus-prometheus ClusterIP 10.152.183.234 <none> 9090/TCP 2m
$ kubectl port-forward svc/prometheus-kube-prometheus-prometheus --address 0.0.0.0 9090:9090
Forwarding from 0.0.0.0:9090 -> 9090
在浏览器中打开 http://<NODE-IP>:9090/targets
,其中 <NODE-IP>
是运行 kubectl port-forward
命令的机器的 IP 地址。微服务 Pod 应在目标列表中可见。
应用程序信息 - 指标
构建应用程序会在输出目录中生成应用程序信息文件。此文件包含应用程序中微服务导出的指标列表。有关更多信息,请参阅 应用程序信息。